nm

8552 Reputation

19 Badges

13 years, 33 days

MaplePrimes Activity


These are questions asked by nm

Are there commands in Maple to find the order and degree of an ODE?  Searching help I could not find anything so far.

For an example, given 

restart;
ode:=(1+diff(y(x),x)^2)^(3/2)=diff(y(x),x$2)

I want the command to return 2 for the order of the ODE and degree is also 2 in this case.

I looked at DEtools package and googled. I am sure Maple have build in commands to do this without me having to parse the ODE myself to find out.

fyi, there seems to be a problem here. Maple 2019, Physics version 395 on windows 10.

The solution given to this wave PDE by Maple as sum that starts from zero, has "n" in the denominator. When n=0, this gives division by zero.  Is this a bug?

restart;
L:=3: c:=4: h:=1/10: b:=Pi*c/L:
f:=piecewise(0<=x and x<=L/3,3*h/L*x,L/3<x and x<=L,h):
pde := diff(u(x,t),t$2) + b*diff(u(x,t),t) = c^2*diff(u(x,t),x$2):
bc  := u(0,t)=0,D[1](u)(L,t)=0:
ic  := D[2](u)(x,0)=0,u(x,0)=f:
sol:=pdsolve([pde,bc,ic],u(x,t));
subs(n=0,sol)

u(x, t) = Sum(-((3/10)*I)*sin((1/6)*(1+2*n)*Pi*x)*(3^(1/2)*sin((1/3)*Pi*n)+cos((1/3)*Pi*n))*((2*I)*exp((4/3)*t*(I*n^(1/2)*(n+1)^(1/2)-1/2)*Pi)*n^(1/2)*(n+1)^(1/2)+(2*I)*exp(-(4/3)*(I*n^(1/2)*(n+1)^(1/2)+1/2)*t*Pi)*n^(1/2)*(n+1)^(1/2)+exp((4/3)*t*(I*n^(1/2)*(n+1)^(1/2)-1/2)*Pi)-exp(-(4/3)*(I*n^(1/2)*(n+1)^(1/2)+1/2)*t*Pi))/(n^(1/2)*(n+1)^(1/2)*Pi^2*(1+2*n)^2), n = 0 .. infinity)

Error, numeric exception: division by zero

 


 

Download bug_july_11_2019.mw

 

I solved this PDE by hand to verify Maple's solution. I think Maple solution is wrong. This PDE is the heat PDE on a bar (1D) with boundary coditions on both ends are function of time and zero initial conditions.

unassign('A,B,x,t,L,k,f');
pde := diff(u(x,t),t)= diff(u(x,t),x$2):
bc := u(0, t) = A(t), u(1, t) = B(t):
ic := u(x, 0) = 0:
sol1:=pdsolve([pde, ic, bc], u(x, t));

#now try when A(t)=sin(t),B(t)=t, use 20 terms for the sum
sol2:=simplify(subs([infinity=20,B(tau)=tau,A(tau)=sin(tau),A(0)=0,B(0)=0,A(t)=sin(t),B(t)=t],sol1)):
sol3:=simplify(value(subs(t=1,sol2))):
evalf(subs(x=0.5,sol3))

 

Also doing pdetest(sol1,pde); on the above solution does ot return zero as expected.

To verify more, I solved the same PDE again, but now using an explicit values for the boundary conditions A(t), B(t). Using A(t)=sin(t), B(t)=t. Then found the value again of the solution u at x=0.5 and t=1 like in the above, and it gives different value:

unassign('A,B,x,t,L,k,f');
pde := diff(u(x,t),t)= diff(u(x,t),x$2):
bc := u(0, t) = sin(t), u(1, t) = t:
ic := u(x, 0) = 0:
sol4:=pdsolve([pde, ic, bc], u(x, t));
sol5:=simplify(subs(infinity=20,sol4)):
sol6:=simplify(value(subs(t=1,sol5))):
evalf(subs(x=0.5,sol6))

Then I typed my hand solution into Maple and for the same values x=0.5, t=1 and same number of terms, I also get the same value 0.819. 

I do not see at all where the function sin integral should come into play in this solution. 

Could some Maple expert please check to see what is going on with this solution to Maple? 

Using Maple 2019.1 and Physics version 370

 

I do not understand why Maple can simplify this expression below when told that n is integer and also positive using a "," to separate the assumptions, but does simpify the same expression when using "and" to build the assumptions.

Here is an example

restart;
result:=int(x*cos(n*Pi/5*x),x=0..5)
simplify(result) assuming n::integer and n>0

But this works

simplify(result) assuming n::integer, n>0

What are the semantic differences between writing assuming "n::integer and n>0" and "n::integer,n>0" ? I thought these would be the same, but clearly they are not.

Maple 2019.1 on windows.

Is there an option or setting to tell Maple not to return trivial solution as a solution to a PDE? Even though trivial solution is correct, it is not something I wanted, and it is making it hard for me to check if the solution is trivial or not. 

Here is an example:

pde:=I*diff(f(x,t),t)=-diff(f(x,t),x$2)+2*x^2*f(x,t):
bc:=f(-infinity ,t)=0,f(infinity,t)=0:
pdsolve([pde,bc],f(x,t))

Mathematica returns this

If there is no such option in Maple, what would be a good way to check for trivial solution using Maple code?

Just checking if rhs(sol)=0 does not work all the time, as some actual solutions are returned with 0 in rhs, like this example

pde := diff(u(x, y), x) + u(x,y)*diff(u(x, y),y) =0:
sol:=pdsolve(pde,u(x,y)):
sol:=DEtools:-remove_RootOf(sol)

So I need either find a way to tell Maple not to return trivial solution, or good robust way to check if solution returned is the trivial solution so I can reject it.

Any suggestion from the Maple experts how to handle this? I am now just interested in result from pdsolve, not dsolve.

The input is the PDE itself, read from a file. So this has to be done without visual inspection on the screen as the program reads the PDE from a file and process it. So the dependent variable and the independent variables are all included in the PDE itself. To make it more clear, I need a function such as

is_solution_trivial :=proc(pde,sol)
     #decide if sol is trivial solution or not.
     #one possibility is to find from the PDE the dependent variable
     #and the independent variables as in u(x,y,t,....) and then check
     #if sol  has the form u(x,y,t,....) =0 ?
end proc;

The above I can use until I figure how to tell Maple NOT to return trivial solution in first place!

 

   

Maple 2019.1

First 105 106 107 108 109 110 111 Last Page 107 of 164