acer

32328 Reputation

29 Badges

19 years, 317 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are replies submitted by acer

@ceight1 Where did you get the function (x,y)->y and exp(x) from, in your attempt? How do you think that those relate to this example's differential equation? [Perhaps your instructor or your textbook used a previous example like that. But this example's differential equation involves a different right-hand side formula. It is not the differential equation y'(x)=y(x) here.]

 

Slope Fields

 

restart

ode := diff(y(x), x) = -2*x*y(x)+1

diff(y(x), x) = -2*x*y(x)+1

ic := y(0) = 0

y(0) = 0

exactsol := dsolve({ic, ode})

y(x) = (1/2)*exp(-x^2)*Pi^(1/2)*erfi(x)

exactsolfunc := unapply(rhs(exactsol), x)

proc (x) options operator, arrow; (1/2)*exp(-x^2)*Pi^(1/2)*erfi(x) end proc

NULL 

Euler's Method

 

 

f := proc (x, y) options operator, arrow; -2*x*y+1 end proc

proc (x, y) options operator, arrow; -2*y*x+1 end proc

x[0] := 0; y[0] := 0; h := .1

.1

for n to 101 do x[n] := n*h; y[n] := y[n-1]+h*f(x[n-1], y[n-1]) end do

data1 := [seq([x[n], y[n]], n = 0 .. 101)]NULLNULL

 

t1 := plot(data1, style = point, color = blue)

t2 := plot(exactsolfunc, 0 .. 10, color = red)

h := 0.5e-1

0.5e-1

for n to 201 do x[n] := n*h; y[n] := y[n-1]+h*f(x[n-1], y[n-1]) end do
NULL``

 

data2 := [seq([x[n], y[n]], n = 0 .. 201)]

t3 := plot(data2, style = point, color = black)

plots[display]({t1, t2, t3}, gridlines)

NULL

NULL

NULL

Download HELP_CODE_ac.mw

Don't post this same problem more than once.

If you have followup queries of details for the example (in addition to the syntax issue with writing x*y(x) as xy) then put them in a Comment/Reply here.

Here's that other way (substitution into a template procedure, and nicer error message).

restart;

# assign some values to the global names,
# in order to catch mistakes in the namespace
# use if things break.
(m,n,x) := -17,-33,t;

-17, -33, t

functionB:=proc(k::nonnegint,M::nonnegint,
                epsilon::realcons, gamma::realcons)
    local K,h,m,n,x;
    if not is(epsilon>-1)<>false then
      error "expecting parameter epsilon>-1, but received %1",epsilon;
    end if;
    if not is(gamma>-1)<>false then
      error "expecting parameter epsilon>-1, but received %1",epsilon;
    end if;
    K:=2^(k-1):
    h:=simplify(2^(epsilon+gamma+1)*GAMMA(epsilon+m+1)
                *GAMMA(gamma+m+1)/((2*m+1+epsilon+gamma)
                                   *m!*GAMMA(epsilon+gamma+1)))
         assuming n::nonnegint, n<=K, m::nonnegint, m<=M-1;
    subs(subs([n=':-n',m=':-m',x=':-x'],
               __dummy=piecewise((n-1)/K <= x and x <= n/K,
                                 'simplify'(2^(k/2)*h
                                            *JacobiP(m,epsilon,gamma,2^(k)*x-2*n+1)),
                                 0)),
         __Kdummy=K, __Mdummy=M,
         eval(proc(n::nonnegint,m::nonnegint,x)
           if n>__Kdummy then error
             "expecting first parameter n to be less than or equal to %1, but received %2",
             __Kdummy,n;
           end if;
           if m>__Mdummy-1 then error
             "expecting second parameter m to be less than or equal to %1, but received %2",
             __Mdummy-1,m;
           end if;
           __dummy;
         end proc)),
    unapply((1-x)^(epsilon)*(1+x)^gamma, [x]);
end proc:

(psi,w):=functionB(3,4,1,2);
psi(1,1,x);

Typesetting:-mrow(Typesetting:-mi("&psi;", italic = "false", mathvariant = "normal"), Typesetting:-mo("&comma;", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mi("w", italic = "true", mathvariant = "italic"), Typesetting:-mo("&Assign;", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2777778em", rspace = "0.2777778em"), Typesetting:-mrow(Typesetting:-mo("proc", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mi("n", italic = "true", mathvariant = "italic"), Typesetting:-mo("::", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mi("nonnegint", italic = "true", mathvariant = "italic")), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mrow(Typesetting:-mi("m", italic = "true", mathvariant = "italic"), Typesetting:-mo("::", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mi("nonnegint", italic = "true", mathvariant = "italic")), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mi("x", italic = "true", mathvariant = "italic")), mathvariant = "normal"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "firstprocnewline"), Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mo("if", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mrow(Typesetting:-mn("4", mathvariant = "normal"), Typesetting:-mo("<", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2777778em", rspace = "0.2777778em"), Typesetting:-mi("n", italic = "true", mathvariant = "italic")), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mo("then", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "increaseindentnewline"), Typesetting:-mrow(Typesetting:-mo("error", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mrow(Typesetting:-ms("expecting first parameter n to be less than or equal to %1, but received %2"), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mn("4", mathvariant = "normal"), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mi("n", italic = "true", mathvariant = "italic"))), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "decreaseindentnewline")), Typesetting:-mo("end if", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em")), Typesetting:-mo(";", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.2777778em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "firstprocnewline")), Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mo("if", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mrow(Typesetting:-mn("3", mathvariant = "normal"), Typesetting:-mo("<", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2777778em", rspace = "0.2777778em"), Typesetting:-mi("m", italic = "true", mathvariant = "italic")), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mo("then", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "increaseindentnewline"), Typesetting:-mrow(Typesetting:-mo("error", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mrow(Typesetting:-ms("expecting second parameter m to be less than or equal to %1, but received %2"), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mn("3", mathvariant = "normal"), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mi("m", italic = "true", mathvariant = "italic"))), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "decreaseindentnewline")), Typesetting:-mo("end if", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em")), Typesetting:-mo(";", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.2777778em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "firstprocnewline")), Typesetting:-mrow(Typesetting:-mi("piecewise", italic = "true", mathvariant = "italic"), Typesetting:-mo("&ApplyFunction;", family = "Courier", size = "10", bold = "false", italic = "false", underline = "false", subscript = "false", superscript = "false", foreground = "[0,0,0]", background = "[255,255,255]", opaque = "false", executable = "false", readonly = "false", composed = "false", converted = "false", imselected = "false", placeholder = "false", `selection-placeholder` = "false", mathvariant = "normal", fence = "unset", separator = "unset", stretchy = "unset", symmetric = "unset", largeop = "unset", movablelimits = "unset", accent = "unset", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mn("1", mathvariant = "normal"), Typesetting:-mo("/", mathvariant = "normal", fence = "false", separator = "false", stretchy = "true", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mn("4", mathvariant = "normal")), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mrow(Typesetting:-mi("n", italic = "true", mathvariant = "italic"))), Typesetting:-mo(" − ", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mrow(Typesetting:-mn("1", mathvariant = "normal"), Typesetting:-mo("/", mathvariant = "normal", fence = "false", separator = "false", stretchy = "true", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mn("4", mathvariant = "normal"))), Typesetting:-mo("<=", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2777778em", rspace = "0.2777778em"), Typesetting:-mi("x", italic = "true", mathvariant = "italic")), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mo("and", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "auto"), Typesetting:-mrow(Typesetting:-mi("x", italic = "true", mathvariant = "italic"), Typesetting:-mo("<=", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2777778em", rspace = "0.2777778em"), Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mn("1", mathvariant = "normal"), Typesetting:-mo("/", mathvariant = "normal", fence = "false", separator = "false", stretchy = "true", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mn("4", mathvariant = "normal")), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mrow(Typesetting:-mi("n", italic = "true", mathvariant = "italic"))))), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mrow(Typesetting:-mi("simplify", italic = "true", mathvariant = "italic"), Typesetting:-mo("&ApplyFunction;", family = "Courier", size = "10", bold = "false", italic = "false", underline = "false", subscript = "false", superscript = "false", foreground = "[0,0,0]", background = "[255,255,255]", opaque = "false", executable = "false", readonly = "false", composed = "false", converted = "false", imselected = "false", placeholder = "false", `selection-placeholder` = "false", mathvariant = "normal", fence = "unset", separator = "unset", stretchy = "unset", symmetric = "unset", largeop = "unset", movablelimits = "unset", accent = "unset", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mn("8", mathvariant = "normal"), Typesetting:-mo("/", mathvariant = "normal", fence = "false", separator = "false", stretchy = "true", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mn("3", mathvariant = "normal")), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mn("2", mathvariant = "normal"), Typesetting:-mo("^", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1111111em", rspace = "0.1111111em"), Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mn("1", mathvariant = "normal"), Typesetting:-mo("/", mathvariant = "normal", fence = "false", separator = "false", stretchy = "true", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mn("2", mathvariant = "normal")), mathvariant = "normal")), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi("m", italic = "true", mathvariant = "italic"), Typesetting:-mo("+", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2222222em", rspace = "0.2222222em"), Typesetting:-mn("1", mathvariant = "normal")), mathvariant = "normal"), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mrow(Typesetting:-mi("Γ", italic = "false", mathvariant = "normal"), Typesetting:-mo("&ApplyFunction;", family = "Courier", size = "10", bold = "false", italic = "false", underline = "false", subscript = "false", superscript = "false", foreground = "[0,0,0]", background = "[255,255,255]", opaque = "false", executable = "false", readonly = "false", composed = "false", converted = "false", imselected = "false", placeholder = "false", `selection-placeholder` = "false", mathvariant = "normal", fence = "unset", separator = "unset", stretchy = "unset", symmetric = "unset", largeop = "unset", movablelimits = "unset", accent = "unset", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mi("m", italic = "true", mathvariant = "italic"), Typesetting:-mo("+", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2222222em", rspace = "0.2222222em"), Typesetting:-mn("2", mathvariant = "normal"))), mathvariant = "normal")), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mrow(Typesetting:-mi("JacobiP", italic = "false", mathvariant = "normal"), Typesetting:-mo("&ApplyFunction;", family = "Courier", size = "10", bold = "false", italic = "false", underline = "false", subscript = "false", superscript = "false", foreground = "[0,0,0]", background = "[255,255,255]", opaque = "false", executable = "false", readonly = "false", composed = "false", converted = "false", imselected = "false", placeholder = "false", `selection-placeholder` = "false", mathvariant = "normal", fence = "unset", separator = "unset", stretchy = "unset", symmetric = "unset", largeop = "unset", movablelimits = "unset", accent = "unset", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi("m", italic = "true", mathvariant = "italic"), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mn("1", mathvariant = "normal"), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mn("2", mathvariant = "normal"), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mrow(Typesetting:-mrow(Typesetting:-mn("8", mathvariant = "normal"), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mi("x", italic = "true", mathvariant = "italic")), Typesetting:-mo(" − ", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-mrow(Typesetting:-mn("2", mathvariant = "normal"), Typesetting:-mo("*", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.1666667em", rspace = "0.1666667em"), Typesetting:-mi("n", italic = "true", mathvariant = "italic")), Typesetting:-mo("+", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2222222em", rspace = "0.2222222em"), Typesetting:-mn("1", mathvariant = "normal"))), mathvariant = "normal"))))), mathvariant = "normal")), Typesetting:-mo(",", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mn("0", mathvariant = "normal")), mathvariant = "normal"))), Typesetting:-mspace(height = "0.0ex", width = "0.5em", depth = "0.0ex", linebreak = "decreaseindentnewline"), Typesetting:-mo("end proc", bold = "true", mathvariant = "bold", fontweight = "bold", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em")), Typesetting:-mo("&comma;", mathvariant = "normal", fence = "false", separator = "true", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.3333333em"), Typesetting:-mrow(Typesetting:-mi("x", italic = "true", mathvariant = "italic"), Typesetting:-mo("&map;", mathvariant = "normal", fence = "false", separator = "false", stretchy = "true", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2777778em", rspace = "0.2777778em"), Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mn("1", mathvariant = "normal"), Typesetting:-mo("&minus;", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2222222em", rspace = "0.2222222em"), Typesetting:-mi("x", italic = "true", mathvariant = "italic")), mathvariant = "normal"), Typesetting:-mo("&InvisibleTimes;", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.0em", rspace = "0.0em"), Typesetting:-msup(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi("x", italic = "true", mathvariant = "italic"), Typesetting:-mo("&plus;", mathvariant = "normal", fence = "false", separator = "false", stretchy = "false", symmetric = "false", largeop = "false", movablelimits = "false", accent = "false", lspace = "0.2222222em", rspace = "0.2222222em"), Typesetting:-mn("1", mathvariant = "normal")), mathvariant = "normal"), Typesetting:-mn("2", mathvariant = "normal"), superscriptshift = "0"))))

piecewise(0 <= t and t <= 1/4, (32/3)*2^(1/2)*(-3+20*t), 0)

local Psi:=x->Array([seq(seq(psi(i,j,x),j=0..4-1),i=1..2^(2-1))] )^+:
Psi(4/10);
w(x);
psi(-1,0,x);
psi(5,0,x);
psi(0,4,x);

Vector(8, {(1) = 0, (2) = 0, (3) = 0, (4) = 0, (5) = (8/3)*sqrt(2), (6) = 0, (7) = -(1008/25)*sqrt(2), (8) = -(8192/125)*sqrt(2)})

(1-t)*(t+1)^2

Error, invalid input: psi expects its 1st argument, n, to be of type nonnegint, but received -1

Error, (in psi) expecting first parameter n to be less than or equal to 4, but received 5

Error, (in psi) expecting second parameter m to be less than or equal to 3, but received 4

functionB(-3,4,1,2);

Error, invalid input: functionB expects its 1st argument, k, to be of type nonnegint, but received -3

functionB(3,4,1,Q);

Error, invalid input: functionB expects its 4th argument, gamma, to be of type realcons, but received Q

functionB(3,4,1,-2);

Error, (in functionB) expecting parameter epsilon>-1, but received 1

(psi,w) := functionB(1,4,0,0);
psi(0,0,0);
psi(-1,0,1);

proc (n::nonnegint, m::nonnegint, x) if 1 < n then error "expecting first parameter n to be less than or equal to %1, but received %2", 1, n end if; if 3 < m then error "expecting second parameter m to be less than or equal to %1, but received %2", 3, m end if; piecewise(n-1 <= x and x <= n, simplify(2*2^(1/2)*GAMMA(m+1)*JacobiP(m, 0, 0, 2*x-2*n+1)/(2*m+1)), 0) end proc, proc (x) options operator, arrow; 1 end proc

2*2^(1/2)

Error, invalid input: psi expects its 1st argument, n, to be of type nonnegint, but received -1

 

Download functionB_rev2.mw

@Maple_lover1 The interesting bit is making the first generated procedure (the first result from calling functionB) issue nice error messages if subsequently called with either n greater than the precomputed K or m greater than M-1.

I see two ways to accomplish that. The first (which I've done below) is have the n and m parameters be specified using the satisfies parameter-processing modifier. This is easier to code, although as you may see when there is a violation the error message is slightly awkward.

Another way (which I have not done here) is to substitute the piecewise into a template procedure that is coded to emit a more graceful error message. The piecewise itself can contain the protected global name equivalents for n,m,x after another substitution.

restart;

functionB:=proc(k::nonnegint,M::nonnegint,
                epsilon::realcons, gamma::realcons)
    local K,h,n,m,x,dummy;
    if not is(epsilon>-1)<>false then
      error "expecting parameter epsilon>-1, but received %1",epsilon;
    end if;
    if not is(gamma>-1)<>false then
      error "expecting parameter epsilon>-1, but received %1",epsilon;
    end if;
    K:=2^(k-1):
    h:=simplify(2^(epsilon+gamma+1)*GAMMA(epsilon+m+1)
                *GAMMA(gamma+m+1)/((2*m+1+epsilon+gamma)
                                   *m!*GAMMA(epsilon+gamma+1)))
         assuming n::nonnegint, n<=K, m::nonnegint, m<=M-1;
    unapply(piecewise((n-1)/K <= x and x <= n/K,
                      'simplify'(2^(k/2)*h
                                 *JacobiP(m,epsilon,gamma,2^(k)*x-2*n+1)),
                      0),
         [n::And(nonnegint,satisfies(subs(dummy=K,u->u<=dummy))),
          m::And(nonnegint,satisfies(subs(dummy=M-1,u->u<=dummy))),x]),
    unapply((1-x)^(epsilon)*(1+x)^gamma, [x]);
end proc:

(psi,w):=functionB(3,4,1,2);
local Psi:=x->Array([seq(seq(psi(i,j,x),j=0..4-1),i=1..2^(2-1))] )^+:
Psi(4/10);
w(x);
psi(-1,0,x);
psi(5,0,x);
psi(0,4,x);

psi, w := proc (n::(`and`('nonnegint', satisfies(proc (u) options operator, arrow; u <= 4 end proc))), m::(`and`('nonnegint', satisfies(proc (u) options operator, arrow; u <= 3 end proc))), x) options operator, arrow; piecewise((1/4)*n-1/4 <= x and x <= (1/4)*n, simplify((8/3)*sqrt(2)*(m+1)*GAMMA(2+m)*JacobiP(m, 1, 2, 8*x-2*n+1)), 0) end proc, proc (x) options operator, arrow; (1-x)*(x+1)^2 end proc

Vector[column](%id = 18446884443842064502)

(1-x)*(x+1)^2

Error, invalid input: psi expects its 1st argument, n, to be of type And(nonnegint, satisfies(proc (u) options operator, arrow; u <= 4 end proc)), but received -1

Error, invalid input: psi expects its 1st argument, n, to be of type And(nonnegint, satisfies(proc (u) options operator, arrow; u <= 4 end proc)), but received 5

Error, invalid input: psi expects its 2nd argument, m, to be of type And(nonnegint, satisfies(proc (u) options operator, arrow; u <= 3 end proc)), but received 4

functionB(-3,4,1,2);

Error, invalid input: functionB expects its 1st argument, k, to be of type nonnegint, but received -3

functionB(3,4,1,Q);

Error, invalid input: functionB expects its 4th argument, gamma, to be of type realcons, but received Q

functionB(3,4,1,-2);

Error, (in functionB) expecting parameter epsilon>-1, but received 1

(psi,w) := functionB(1,4,0,0);
psi(0,0,0);
psi(-1,0,1);

psi, w := proc (n::(`and`('nonnegint', satisfies(proc (u) options operator, arrow; u <= 1 end proc))), m::(`and`('nonnegint', satisfies(proc (u) options operator, arrow; u <= 3 end proc))), x) options operator, arrow; piecewise(n-1 <= x and x <= n, simplify(2*sqrt(2)*GAMMA(m+1)*JacobiP(m, 0, 0, 2*x-2*n+1)/(2*m+1)), 0) end proc, proc (x) options operator, arrow; 1 end proc

2*2^(1/2)

Error, invalid input: psi expects its 1st argument, n, to be of type And(nonnegint, satisfies(proc (u) options operator, arrow; u <= 1 end proc)), but received -1

 

Download functionB_rev1.mw

By the way, how do you expect functionB to be used by someone? If it is to be invoked many times on-the-fly in the same session with (occasionally, or often) the exact same arguments then it might benefit performancewise to give option remember to functionB. (Ie, memoization)

@Maple_lover1 The reworking of the mechanisms to allow the old table=based orthopoly package to be used more like a module-based package is somewhat goofy. But then, so are table-based packages themseleves.

You could experiment with it done as follows:

FunctionC:=proc(k,M) local K,n,m,x;
uses O=orthopoly: 
    K:=2^(k-1);

    unapply(piecewise((n-1)/K <= x and x <= n/K,
            2^((k+1)/2)/sqrt(Pi)*O['':-H''](m,2^(k)*x-2*n+1), 0),
            [n,m,x])
  end proc:

Have a look at the output from a call like, say, FunctionC(3) and test it. (You may wish to stress-test against possibilities of the variable name H being previously assigned.) I don't much care for the procedure generated by the call orthopoly:-H(m,...) where m is an unassigned name.

There's no real difference between between w:=(x)->1; and w:=x->1; except for source tidiness and legibility.

I prefer to pass the independent variable names into unapply in a list, for clarity and legibility. I don't care for passing them as an unadorned sequence -- partially because unapply can also take some other option(s). If one's code has so many unapply calls that garbage collection of the extra list is even noticeable -- or if that list of variables is huge -- then there are surely far more other serious programming difficulties to handle.

@jrive I had replaced the link in the Reply/Comment above (to the worksheet with its name ending in "3").

@jrive I added some variants. With the radicals "frozen" they become temporary names, thus allowing algsubs or simplify-with-side-relations to operate.

@jrive Here are a few ways to get that, using algsubs with the radicals frozen.

The first way uses frontend, and the second uses freeze/thaw. The second of those can also utilize simplify-with-side-relations rather than algsubs.

new_filter_solution_ac3.mw

@love-algebra Do you think that an explicit, exact, closed form solution exists, in the general case that a root other than t=0 exists?

How about a "black box" procedure that can take numeric values for parameters and return a numeric value for `t` (if such then exists...)?

What were you planning on doing with an explicit, exact symbolic answer?

@Carl Love I have edited the Answer and changed it from
  `%.`(A,b)
to
  A %. b
which is nicer, thanks.

(The precedence doesn't affect this example -- as it is -- even in Maple 2017.2.)

@vroomZOOM You have not informed Maple of the units of time that t would take. (In your mind the quantities might be in seconds, but it doesn't have to be so merely from what you coded so far, and hence Maple cannot sensibly guess it -- guessing it would be wrong.)

You can supply units of time in the range of the plot command, or in the formulas where t appears, but you ought to double check other aspects of the results.

@mmcdara There are several examples using last (and initial and method) on the Help page for Topic dsolve,numeric,IVP .

As I showed, you could supply just one, inverted "view" to odeplot, or you could supply several "views". As shown, if you supply just the one inverted arrangement then the axis labels correspond and are as expected. If you supply multiple "views" and the axes serve differing purposes then the axis labels illustrate that fact. Of course you can always explicitly specifiy the axes labels.

 

@Carl Love Yes, thanks, I hadn't noticed that the Question was marked Maple 2020. The infix form should work in 1D input in versions from Maple 2017 onward.

How about uploading a worksheet that contains the various definitions? (Green up-arrow in Mapleprimes editor.)

@emendes I don't understand what you mean  sorry.

You two methods may not produce results which are always equivalent for all values of the parameters (despite your hope or expectation, though they might be Top Secret because you didnt share them...). How do you expect or hope to deal with that situation?

Perhaps there is something about your (undisclosed) solving methods which might allow you to generate programmatically or know some sufficient assumptions.

First 149 150 151 152 153 154 155 Last Page 151 of 591