nm

11438 Reputation

20 Badges

13 years, 74 days

MaplePrimes Activity


These are questions asked by nm

This is linear ode, third order, Euler type and inhomogeneous ode.

If I solve the homogeneous ode only, then ask Maple to give me a particular solution, then add these, I get much much smaller solution which Maple verifies is correct.

Now when asking Maple to solve the original inhomogeneous ode as is, the solution is much more complicated and much longer with unresolved integrals.

Why does not Maple give the simpler solution? Both are verified to be correct.

This is my theory: When asking maple to find only the particular solution, it seems to have used a different and advanced method to find yp. Which is new to me and trying to learn it. It is based on paper "D'Alembertian Solutions of Inhomogeneous Equations (differential, difference, and some other).

Undetermined coefficients method can't really be used on ode's such as this because its coefficients are not constant.

Now, when asking Maple to solve the inhomogeneous ode, it seems to have used variation of parameters method, which results in integrals, which can be hard to solve.

My question is: Why does not Maple give the same much shorter answer when asked to solve the ode as is? Should it not have done so? Any thoughts on why such large difference in answer? Why it did not use the same method to find yp when asked to solve the whole ode as that leads to much smaller and more elegant solution.

ps. debugging this, it uses LinearOperators:-dAsolver:-dAlembertianSolver which is called from ODEtools/particularsol/linear to find yp when calling DETools:-particularsol(ode); but for some reason, it does not do this when asking it to solve the whole ode directly (if it did, then one will expect same answer to result, right?)

Maple 2023.2 on windows 10.
 

restart;

189900

(1)

#the ode
ode:=x^3*diff(y(x), x, x, x) + x^2*diff(y(x), x, x) + 2*x*diff(y(x), x) - y(x) = 2*x^3 - ln(x);

x^3*(diff(diff(diff(y(x), x), x), x))+x^2*(diff(diff(y(x), x), x))+2*x*(diff(y(x), x))-y(x) = 2*x^3-ln(x)

(2)

# find y_h
yh:=dsolve(lhs(ode)=0);

y(x) = c__1*x^(-(1/6)*((44+12*69^(1/2))^(2/3)-4*(44+12*69^(1/2))^(1/3)-20)/(44+12*69^(1/2))^(1/3))+c__2*x^((1/12)*(-20+(44+12*69^(1/2))^(2/3)+8*(44+12*69^(1/2))^(1/3))/(44+12*69^(1/2))^(1/3))*sin((1/12)*(3^(1/2)*(44+12*69^(1/2))^(2/3)+20*3^(1/2))*ln(x)/(44+12*69^(1/2))^(1/3))+c__3*x^((1/12)*(-20+(44+12*69^(1/2))^(2/3)+8*(44+12*69^(1/2))^(1/3))/(44+12*69^(1/2))^(1/3))*cos((1/12)*(3^(1/2)*(44+12*69^(1/2))^(2/3)+20*3^(1/2))*ln(x)/(44+12*69^(1/2))^(1/3))

(3)

#find particular solution
yp:=DETools:-particularsol(ode);

y(x) = (2/17)*x^3+ln(x)+3

(4)

#test particular solution is correct
odetest(yp,ode);

0

(5)

#find general solution = yh+ yp
y_general:=y(x)=rhs(yh)+rhs(yp);

y(x) = c__1*x^(-(1/6)*((44+12*69^(1/2))^(2/3)-4*(44+12*69^(1/2))^(1/3)-20)/(44+12*69^(1/2))^(1/3))+c__2*x^((1/12)*(-20+(44+12*69^(1/2))^(2/3)+8*(44+12*69^(1/2))^(1/3))/(44+12*69^(1/2))^(1/3))*sin((1/12)*(3^(1/2)*(44+12*69^(1/2))^(2/3)+20*3^(1/2))*ln(x)/(44+12*69^(1/2))^(1/3))+c__3*x^((1/12)*(-20+(44+12*69^(1/2))^(2/3)+8*(44+12*69^(1/2))^(1/3))/(44+12*69^(1/2))^(1/3))*cos((1/12)*(3^(1/2)*(44+12*69^(1/2))^(2/3)+20*3^(1/2))*ln(x)/(44+12*69^(1/2))^(1/3))+(2/17)*x^3+ln(x)+3

(6)

#test general solution is correct
odetest(y_general,ode);

0

(7)

#now solve the ode directly using Maple. Why this solution is much more complicated?
y_general_direct_method:=dsolve(ode);

y(x) = -(Int(-(5/2)*(x^(-(1/400)*69^(1/2)*(44+12*69^(1/2))^(2/3)+(11/1200)*(44+12*69^(1/2))^(2/3)+(1/12)*(44+12*69^(1/2))^(1/3)+2/3))^2*(44+12*69^(1/2))^(1/3)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))^2+3*(44+12*69^(1/2))^(1/3)*69^(1/2)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))^2-11*(44+12*69^(1/2))^(1/3)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))^2-11*(44+12*69^(1/2))^(1/3)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))^2+100*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))^2+100*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))^2)*(-2*x^3+ln(x))/(x^3*(3*3^(1/2)*23^(1/2)+11)*(11*3^(1/2)*23^(1/2)-207)), x))*x^((1/200)*69^(1/2)*(44+12*69^(1/2))^(2/3)-(11/600)*(44+12*69^(1/2))^(2/3)-(1/6)*(44+12*69^(1/2))^(1/3)+2/3)+(Int(-(5/6)*x^((1/200)*69^(1/2)*(44+12*69^(1/2))^(2/3)-(11/600)*(44+12*69^(1/2))^(2/3)-(1/6)*(44+12*69^(1/2))^(1/3)+2/3)*x^(-(1/400)*69^(1/2)*(44+12*69^(1/2))^(2/3)+(11/1200)*(44+12*69^(1/2))^(2/3)+(1/12)*(44+12*69^(1/2))^(1/3)+2/3)*(44+12*69^(1/2))^(1/3)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)*3^(1/2)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))-9*(44+12*69^(1/2))^(1/3)*69^(1/2)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))-11*(44+12*69^(1/2))^(1/3)*3^(1/2)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+33*(44+12*69^(1/2))^(1/3)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+100*3^(1/2)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+300*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x)))*(-2*x^3+ln(x))*3^(1/2)/(x^3*(3*3^(1/2)*23^(1/2)+11)*(11*3^(1/2)*23^(1/2)-207)), x))*x^(-(1/400)*69^(1/2)*(44+12*69^(1/2))^(2/3)+(11/1200)*(44+12*69^(1/2))^(2/3)+(1/12)*(44+12*69^(1/2))^(1/3)+2/3)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+(Int(-(5/6)*x^((1/200)*69^(1/2)*(44+12*69^(1/2))^(2/3)-(11/600)*(44+12*69^(1/2))^(2/3)-(1/6)*(44+12*69^(1/2))^(1/3)+2/3)*x^(-(1/400)*69^(1/2)*(44+12*69^(1/2))^(2/3)+(11/1200)*(44+12*69^(1/2))^(2/3)+(1/12)*(44+12*69^(1/2))^(1/3)+2/3)*(44+12*69^(1/2))^(1/3)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)*3^(1/2)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+9*(44+12*69^(1/2))^(1/3)*69^(1/2)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))-11*(44+12*69^(1/2))^(1/3)*3^(1/2)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))-33*(44+12*69^(1/2))^(1/3)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+100*3^(1/2)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))-300*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x)))*(-2*x^3+ln(x))*3^(1/2)/(x^3*(3*3^(1/2)*23^(1/2)+11)*(11*3^(1/2)*23^(1/2)-207)), x))*x^(-(1/400)*69^(1/2)*(44+12*69^(1/2))^(2/3)+(11/1200)*(44+12*69^(1/2))^(2/3)+(1/12)*(44+12*69^(1/2))^(1/3)+2/3)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+c__1*x^((1/200)*69^(1/2)*(44+12*69^(1/2))^(2/3)-(11/600)*(44+12*69^(1/2))^(2/3)-(1/6)*(44+12*69^(1/2))^(1/3)+2/3)+c__2*x^(-(1/400)*69^(1/2)*(44+12*69^(1/2))^(2/3)+(11/1200)*(44+12*69^(1/2))^(2/3)+(1/12)*(44+12*69^(1/2))^(1/3)+2/3)*cos((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))+c__3*x^(-(1/400)*69^(1/2)*(44+12*69^(1/2))^(2/3)+(11/1200)*(44+12*69^(1/2))^(2/3)+(1/12)*(44+12*69^(1/2))^(1/3)+2/3)*sin((1/1200)*(44+12*69^(1/2))^(1/3)*3^(1/2)*(3*(44+12*69^(1/2))^(1/3)*69^(1/2)-11*(44+12*69^(1/2))^(1/3)+100)*ln(x))

(8)

#test the above
odetest(y_general_direct_method,ode);

0

(9)

 


 

Download why_such_difference_in_dsolve_answer.mw

THis came up in another maple forum.  Any one knows why

restart;
expr := -(r0+Delta_r)^2*(46*r0-41*Delta_r)*r0^5;
subsop(1=a,2=b,3=c,4=d, expr);

gives error Error, improper op or subscript selector

but changing the order works ok

subsop(4=d,3=c,2=b,1=a, expr);

               # a*b*c*d

Looked at help and nothing there I could see that would explain this. 

Maple 2023.2. 

Given

expr:=  (x^(-(44 + 12*sqrt(69))^(1/3)/6 + 10/(3*(44 + 12*sqrt(69))^(1/3)) + 2/3)) - (x^(sqrt(69)*2^(1/3)*((11 + 3*sqrt(69))^2)^(1/3)/100 - (11*(44 + 12*sqrt(69))^(2/3))/600 - (44 + 12*sqrt(69))^(1/3)/6 + 2/3))

could someone come with a trick to show this is zero using simplification and other methods? I know I can use is and coulditbe but I do not trust these too much due to false positives I've seen from them in some places.

Here is my attempts

restart;


expr:=  (x^(-(44 + 12*sqrt(69))^(1/3)/6 + 10/(3*(44 + 12*sqrt(69))^(1/3)) + 2/3)) - (x^(sqrt(69)*2^(1/3)*((11 + 3*sqrt(69))^2)^(1/3)/100 - (11*(44 + 12*sqrt(69))^(2/3))/600 - (44 + 12*sqrt(69))^(1/3)/6 + 2/3));
simplify(expr);
simplify(expr,size);
simplify(expr,symbolic);
simplify(normal(expr));
simplify(normal(expr),symbolic);
simplify(expr) assuming real;
simplify(expr) assuming positive;
is(expr=0);
coulditbe(expr=0);
evalb(expr=0);

Gives

This is for reference, the Mathematica attempt

long time ago I asked about automatic spacing to improve latex for sqrt. A nice solution was provided in https://www.mapleprimes.com/questions/231062-Adding-Space-After-Sqrt-To-Improve-The-Latex

The above is activatived using spaceaftersqrt = true option for latex:-Settings

There is a similar issue for inert integration where a space is typically added before the final dx This is done similar to the above fix using \, See for example this Latex web site giving many examples.

But there is no option I could see to tell Maple to do this automatically for integration.

So all my inert integrals now look not too good as the dx is too close to the integrand. Here are 2 examples with the settings I am using

restart;

latex:-Settings(useimaginaryunit=i,
      usecolor = false,
      powersoftrigonometricfunctions= mixed, ## computernotation,
      leavespaceafterfunctionname = true,
      cacheresults = false,
      spaceaftersqrt = true,
      usetypesettingcurrentsettings=true,
      linelength=10000      
);

sol:=sqrt(4*y^3-a*y-b)*a;
Intat( subs(y=a,1/sol),a=y(x));
latex(%);

Int(sol,y);
latex(%);

I copied the latex and compiled it, and this is the result

\documentclass[12pt]{book}
\usepackage{amsmath}
\begin{document}

\[
\int_{}^{y \left(x \right)}\frac{1}{\sqrt{4 a^{3}-a^{2}-b}\, a}d a
\]

\[
\int \sqrt{4 y^{3}-a y -b}\, a d y
\]

\end{document}

Which gives

Compare the output when adding \, by hand to the latex

\documentclass[12pt]{book}
\usepackage{amsmath}
\begin{document}

\[
\int_{}^{y \left(x \right)}\frac{1}{\sqrt{4 a^{3}-a^{2}-b}\, a}\, d a
\]

\[
\int \sqrt{4 y^{3}-a y -b}\, a \, d y
\]

\end{document}

Which now gives much better result

Actually, what would be nice if the "d" in "dx" was mathrm which becomes

\documentclass[12pt]{book}
\usepackage{amsmath}
\begin{document}

\[
\int_{}^{y \left(x \right)}\frac{1}{\sqrt{4 a^{3}-a^{2}-b}\, a}\, \mathrm{d} a
\]

\[
\int \sqrt{4 y^{3}-a y -b}\, a \, \mathrm{d} y
\]

\end{document}

But may be I am asking for too much here. But having an option to add \, only for inert integration will be good to have.

Does there exist an option to do this that may be I overlooked?

Maple 2023.2

 

I obtained a Plot p, then trying to find if it has Float(undefined) in it. I am basically trying to find if DEplot returns an empty plot or not. I found that it the plot structure has HFlat(undefined) then this seems to imply an empty plot. So I said, then in the code I can check for HFlat(undefined) in the plot and it is there, then I know the plot is empty.

But this check is not working.

I used has(....,Float(undefined)) and this returns false. But if I copy and paste part of the plot structure and try the check on the copy, it gives true. 

I do not understand what is the difference. First here is screen shot, and below if complete code to reproduce.

restart;
ode2:=2*y(t)+t*diff(y(t),t) = t^2-t+1;

p:=DEtools:-DEplot(ode2,y(t),t=0..3.5,y=0..3,
                        linecolor = red,                        
                        arrowsize ='magnitude',
                        numpoints = 200 ,
                        axes = boxed,color = ('magnitude[legacy]')):


p0:=Array(1 .. 3,1 .. 2,{(1, 1) = HFloat(undefined), (1, 2) = HFloat(undefined), (2
, 1) = HFloat(undefined), (2, 2) = HFloat(undefined), (3, 1) = HFloat(undefined
), (3, 2) = HFloat(undefined)},datatype = float[8],order = C_order);
whattype(p0);
has(p0,HFloat(undefined)) 

p1:=op([1,2],p);
whattype(p1);
has(p1,HFloat(undefined)) 

Worksheet attached also.

Maple 2023.2 on windows 10
 

``

restart;

185876

ode2:=2*y(t)+t*diff(y(t),t) = t^2-t+1;
p:=DEtools:-DEplot(ode2,y(t),t=0..3.5,y=0..3,
                        linecolor = red,                        
                        arrowsize ='magnitude',
                        numpoints = 200 ,
                        axes = boxed,color = ('magnitude[legacy]')):




 

2*y(t)+t*(diff(y(t), t)) = t^2-t+1

p0:=Array(1 .. 3,1 .. 2,{(1, 1) = HFloat(undefined), (1, 2) = HFloat(undefined), (2
, 1) = HFloat(undefined), (2, 2) = HFloat(undefined), (3, 1) = HFloat(undefined
), (3, 2) = HFloat(undefined)},datatype = float[8],order = C_order);
whattype(p0);
has(p0,HFloat(undefined))

Matrix(3, 2, {(1, 1) = HFloat(HFloat(undefined)), (1, 2) = HFloat(HFloat(undefined)), (2, 1) = HFloat(HFloat(undefined)), (2, 2) = HFloat(HFloat(undefined)), (3, 1) = HFloat(HFloat(undefined)), (3, 2) = HFloat(HFloat(undefined))})

hfarray

true

p1:=op([1,2],p);
whattype(p1);
has(p1,HFloat(undefined))

Matrix(3, 2, {(1, 1) = HFloat(HFloat(undefined)), (1, 2) = HFloat(HFloat(undefined)), (2, 1) = HFloat(HFloat(undefined)), (2, 2) = HFloat(HFloat(undefined)), (3, 1) = HFloat(HFloat(undefined)), (3, 2) = HFloat(HFloat(undefined))})

hfarray

false

 


question is: Why the above give different result? And what is the correct way to check if the output plot from DEplot is empty or not (in code)?

Download why_has_works_different.mw

First 45 46 47 48 49 50 51 Last Page 47 of 201