Maple 2020 Questions and Posts

These are Posts and Questions associated with the product, Maple 2020

I do not underand why these two gives different results

mysol:= exp(sqrt( y(x)^2/x^2+1)) = _C1*x;
ode:=diff(y(x),x) = (y(x)^2+(x^2+y(x)^2)^(1/2)*x)/x/y(x);

And now case A:

simplify(odetest(mysol,ode)) assuming x>0;


But case B

simplify(res) assuming x>0;

      #does not give zero


Why is putting the result in a variable first makes it give a different result?

What should one do so both case A and B give 0 ?

It looks like scoping issue of assuming. But this is really confusing, I did not expect that putting an intermediate result in a variable first will make a difference.

Maple 2020.2, Physis 897

A torus can be defined parametrically by:

{\displaystyle {\begin{aligned}x(\theta ,\varphi )&=(R+r\cos \theta )\cos {\varphi }\\y(\theta ,\varphi )&=(R+r\cos \theta )\sin {\varphi }\\z(\theta ,\varphi )&=r\sin \theta \end{aligned}}}

where θ, φ are angles which make a full circle, so that their values start and end at the same point, R is the distance from the center of the tube to the center of the torus, r  is the radius of the tube.

plot3d( [ ( R+r(u,v)*cos(v))*sin(u),
          ( R+r(u,v)*cos(v))*cos(u),
coordinateview=[-15..15, -15..15,-5..5],
lightmodel=light3, viewpoint = circleleft);

I set range [-5..5] of the Z axis´╝îbut  the range of  Z axis tickmarks  in the above image maybe in [-4.5..4.5] .

How to have tickmarks included at -5 and 5 on the Z axis?



Maple Worksheet - Error

Failed to load the worksheet /maplenet/convert/ .




In Latex 897 correct Latex is generated for the following code. In 905, wrong Latex is generated. This is different from the other cases I posted about (links below) and new issue.

In 897, the Latex generated for this example compiles with no error

sol:=(Vector(2, [x__1(t),x__2(t)])) = (Vector(2, [2^(3/4)*3^(1/4)*(exp(2^(3/4)*3^(1/4)*t)*_C1-exp(-2^(3/4)*3^(1/4)*t)*_C2-sin(2^(3/4)*3^(1/4)*t)*_C3+cos(2^(3/4)*3^(1/4)*t)*_C4),2*6^(1/2)*(exp(2^(3/4)*3^(1/4)*t)*_C1+exp(-2^(3/4)*3^(1/4)*t)*_C2-sin(2^(3/4)*3^(1/4)*t)*_C4-cos(2^(3/4)*3^(1/4)*t)*_C3)]));

Now compiling the Latex gives


\left[\begin{array}{c}x_{1} \! \left(t \right) \\x_{2} \! \left(t \right) \end{array}\right]
\left[\begin{array}{c}2^{\frac{3}{4}} 3^{\frac{1}{4}} \left({\mathrm e}^{2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \mathit{\_C1} -{\mathrm e}^{-2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \mathit{\_C2} -\sin \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \mathit{\_C3} +\cos \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \mathit{\_C4} \right) \\2 \sqrt{6}\, \left({\mathrm e}^{2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \mathit{\_C1} +{\mathrm e}^{-2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \mathit{\_C2} -\sin \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \mathit{\_C4} -\cos \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \mathit{\_C3} \right) \end{array}\right]

In 905

The Latex(sol) gives


\left[\begin{array}{c}x_{1} \! \left(t \right) 
 x_{2} \! \left(t \right) \end{array}\right]
\left[\begin{array}{c}2^{\frac{3}{4}} 3^{\frac{1}{4}} 
\left({\mathrm e}^{2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \textit{\_C1} -{\mathrm e}^{-2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \textit{\_C2} -
\sin \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \textit{\_C3} +\cos \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \textit{\_C4} \right) 
 2 \sqrt{6}\, 
\left({\mathrm e}^{2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \textit{\_C1} +{\mathrm e}^{-2^{\frac{3}{4}} 3^{\frac{1}{4}} t} \textit{\_C2} -
\sin \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \textit{\_C4} -\cos \! \left(2^{\frac{3}{4}} 3^{\frac{1}{4}} t \right) \textit{\_C3} \right) \end{array}\right]

Which when compiled using texlive lualatex gives error. There is a missing \right. 

>lualatex foo5.tex
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020)
 restricted system commands enabled.
LaTeX2e <2020-10-01> patch level 2
..Defaults to "dvips" Driver
(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/epsfig.sty (/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/graphicx.sty (/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/keyval.sty) (/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/graphics.sty (/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/trig.sty) (/usr/local/texlive/2020/texmf-dist/tex/latex/graphics-cfg/graphics.cfg) (/usr/local/texlive/2020/texmf-dist/tex/latex/graphics-def/dvips.def))))
Defining Automatic Style Generation Macros
Defining Maple Spreadsheet Environments
Maple Spreadsheet and Table Support
) (/usr/local/texlive/2020/texmf-dist/tex/latex/l3backend/l3backend-luatex.def) (./foo5.aux) (/usr/local/texlive/2020/texmf-dist/tex/latex/base/ts1cmr.fd)
! Missing \right. inserted.
<inserted text>
\right .
l.14 \\



Maple 2020.2, Physics 905

Fyi, the issues I know about in Latex()  as of now are these 4



I was testing Physics 905 to see if this bug reported in

But I found that now Maple generates a new command called \munderset  while in 897 it used to be  \Mapleunderset

So the problem was not fixed. In addition now it uses a command called \munderset which is not in any of Maple style files and not a standard Latex macro name. 

Replacing \munderset back to \Mapleunderset now the same error that was generated in the above linked to question, using the same exact code shown there.

So I think this new command should remain \Mapleunderset unless there is a new Maple syle file used which is not part of Maple 2020.2? 

To reproduce this, please run the same code posted in the above link. No need to duplicate it here again, and you will see this problem.

Maple 2020.2, Physics 905



I think Maple is wrong here. But may be someone could show me how it is correct?

Maple says this ode (below) is of type d'Alembert. But I am not able to show this. It is impossible for me to put this ode in _dAlembert. form. So I gave up.

The challenge then is to put the following first order ODE in the above form to show it is dAlembert.

I could not do it. I worked on this by hand and not possible to get the ODE in the above form. Could someone show this?

ode:=3*x^2*y(x)^3+y(x)^4+(3*x^3*y(x)^2+4*x*y(x)^3+y(x)^4)*diff(y(x),x) = 0;

The first thing I do when I want to show this, is to solve for y(x) from the ode. Since I can't use solve on an ode, I start by replacing all the diff(y(x),x) with say p. Then now solve for y(x). If it is dAlembert, then it should give expression that be put in the form    y(x)=x*f(p) + g(p). Notice that the functions f(p) and g(p) are functions of p only and not of x. This is important.  And f(p) is multiplied by linear term and not x^(3/2) or x^(1/2), etc... The term multiplying f(p) has to be linear in x.


Looking at second and third solutions. None of them is dAlembert.  This can be shown by either simplyfing it with assumptions, where not possible to obtain the needed form, or by simply replacing p back with diff(y(x),x) and asking advisor for the type of the resulting ode

DEtools:-odeadvisor( subs(p=diff(y(x),x),sol[2]));

So none is d'Alembert.

Question is: Could someone may be proof that this ode is d'Alembert? By putting it in the form   y(x)=x*f(p)+g(p)? Or is advisor is wrong here?

ps. I tried infolevel[DEtools:-odeadvisor]:=4 to try to trace it, but it does not work.

pps. I worked this out by hand, and I get 

                y(x)= x^(3/2)*f(p)  where f(p) = sqrt(-12 p^2)+sqrt(12*p)

And this is not d'Alembert.


I was just using odeadvisor to check type of some ode's, when I noticed it gives 

             Error, (in ODEtools/radnormal) numeric exception: division by zero

on ode's of form y(x)=x*diff(y(x),x)^n+x^2

for different n:

for n from -5 to 5 do
    if n<>0 then
          print("n=",n,"OK, no error");
          print("n=",n,StringTools:-FormatMessage( lastexception[2..-1] ));
       end try;

Is this known issue and is expected?

Maple 2020.2 on windows 10


I am getting this error. Is this expected or known issue?  

sol:=-csgn(1, 1/(_C1*a - _C1*x - 1))*_C1*a^4/((k + 1)*(_C1*a - _C1*x - 1)^2) + 4*csgn(1, 1/(_C1*a - _C1*x - 1))*_C1*a^3*x/((k + 1)*(_C1*a - _C1*x - 1)^2) - 6*csgn(1, 1/(_C1*a - _C1*x - 1))*_C1*a^2*x^2/((k + 1)*(_C1*a - _C1*x - 1)^2) + 4*csgn(1, 1/(_C1*a - _C1*x - 1))*_C1*a*x^3/((k + 1)*(_C1*a - _C1*x - 1)^2) - csgn(1, 1/(_C1*a - _C1*x - 1))*_C1*x^4/((k + 1)*(_C1*a - _C1*x - 1)^2) + a^2/((k + 1)*(_C1*a - _C1*x - 1)^2) - 2*a*x/((k + 1)*(_C1*a - _C1*x - 1)^2) + x^2/((k + 1)*(_C1*a - _C1*x - 1)^2) + csgn(1, 1/(_C1*a - _C1*x - 1))*a^3/((k + 1)*(_C1*a - _C1*x - 1)^2) - 3*csgn(1, 1/(_C1*a - _C1*x - 1))*a^2*x/((k + 1)*(_C1*a - _C1*x - 1)^2) + 3*csgn(1, 1/(_C1*a - _C1*x - 1))*a*x^2/((k + 1)*(_C1*a - _C1*x - 1)^2) - csgn(1, 1/(_C1*a - _C1*x - 1))*x^3/((k + 1)*(_C1*a - _C1*x - 1)^2) - csgn(1/(_C1*a - _C1*x - 1))*a^2/((k + 1)*(_C1*a - _C1*x - 1)^2) + 2*csgn(1/(_C1*a - _C1*x - 1))*a*x/((k + 1)*(_C1*a - _C1*x - 1)^2) - csgn(1/(_C1*a - _C1*x - 1))*x^2/((k + 1)*(_C1*a - _C1*x - 1)^2);

solve( simplify(sol)=0,x,allsolutions = true) assuming real; #also x::real, same error

Maple 2020.2 on winsows 10. Physics 897



The following command returned 1026 instead of 1000 samples. Any ideas why?

R1 := Sample(Normal(0, 1), 1000);


Should dsolve has missed this solution? I used singsol=all option:

ode:=y(x)^2+(x^2+x*y(x))*diff(y(x),x) = 0;

But y(x)=0 is singular solution. It can not be obtained from the above general solutions for any constant of integration value.



if I change the type of ode, Maple now gives y(x)=0 but the general solution is too complicated (which is OK) but the point is that it does now find y(x)=0.


           y(x)=0,  etc.....

my question is: Why singsol=all did not also give y(x)=0 in this example?  Is there something I am misundertanding here?

Maple 2020.2

I've been struggling to implement a more complicated version of the example from Acer here:

The basic idea is that Maple allows XML for typesetting (and maybe MathML? I don't use the MLs, so I can't speak to limitations or differences).

It's somewhat straightforward, but extremely tedious. The statement that this is " undocumented, but not overly difficult " may be true, but it's time-consuming to learn bits and pieces of any additional language just to typeset something that resembles extremely common typesetting language, and frankly feels like a waste of time. In a world where we have LaTeX, I don't see why Maple can't use LaTeX language for typesetting in plots. Python, MatLAB have this feature, and a homebrew version of this for Mathematica came up during my searching, but nothing useful for Maple. The Physics package  has some function to take the Maple and produce LaTeX code (untested by me so far), but not being able the other direction to typeset axes, titles, and textplots with LaTeX notation is shocking to me.

When one attempts the tag formating from html/XML like here:
or formatting, errors come up. Basic things like having control over a given character's size seem impossible without the tag formatting, and I tried for some time to get all sorts of variations of #mstyle to work using the syntax method of the linked question. The converters that I've found that go from LaTeX to MathML use this tag formatting.

Here are some examples that I made up to demonstrate acer's method and one particular area where the MathML spectactularly fails compared to LaTeX, and included to (current as of this moment) links that give element names for XML and symbol names for html/xml:

The contents are failing to be inserted, but the file downloads correctly from the preview for me.

I just had enough with odetest hanging (even when using with timelimit). I wait hours and hours each time (even though I have 30 second timelimit, which Maple ignores) and I do not think Maplesoft is going to fix this in my lifetime.  

So I am attempting to make my own very simple and basic odetest.

I give it an ode and explicit solution in for form sol:= y(x)=... and the function uses algsubs(sol,ode) and checks it is gets zero or not (it will also do simplify if needed)

But there is a BIG problem.   Even though algsubs(z=0,z/z);  gives back 1 as expected,  but

ode:=diff(y(x), x)/y(x);

algsubs(sol,ode);   #this gives ZERO. It should be 1

If we do algsubs on each term one by one



So why did algsubs give zero in the first case, since  the result of the algsubs should be 0/0 which algsubs knows in the limit it is 1?   How did it come up with zero?

Clearly my simple method of replacing odetest with algsubs is not working. I need a more robust way to handle this.

subs does not work. Since subs does not know how substitute y(x)=f(x) into derivatives involved in an ODE.

My question is: Is there a way to teach algsubs to give 1 for the above example? or better function to use?

I tried applyrule instead of algsubs, but that does not work.

applyrule(sol, ode)

Error, (in rec) numeric exception: division by zero

Is there a better method to use? I am trying to do simple version of odetest that does not hang. Even if not perfect. Will only use it for explicit solutions, not implicit since implicit is much harder.

Here is a more full example

ode:=diff(y(x),x)^2+2*x*diff(y(x),x)/y(x)-1 = 0;


But when I use my simple method

ode:=diff(y(x),x)^2+2*x*diff(y(x),x)/y(x)-1 = 0;

                          -1 = 0

The reason it failed, because algsubs replaced the second term by 0 instead of 1. The second term in the ode is diff(y(x),x)/y(x)

Which is 0/0 but this is 1 in the limit. But algsubs used 0 instead for some reason.

So I need a little bit smarter way to replace my solution into the ode than just using algsubs. May need to use some of the tricks I've seen used here before using freez/thaw/frontend, etc.. which I still do not understand.

Any recommendation?  This is meant to work for any single ode and any explicit solution of the form y(x)=....

This algsubs method works actually pretty well on many ode's. I've tested it on 2,000 ode's. It just fails so far on subtle ones like the above. Here is just random example where it works

ode:=diff(y(x),x)^2 = (-x+1)/x;



So I just need a way to handle the cases where it gives 0/0 I think. I have 20 ODE's which now fail out of about 2,000 using this basic method compared to using odetest.


Thank you

I was trying to simplify long expression of the form    f(x)=g(x), where f(x) should simplify to be the same as g(x) and get 0=0. But Maple simplify just return the input back.

Then I wrote simplify(f(x)-g(x)) and now Maple returned 0 back.

What is the difference between simplify (f(x)=g(x)) and simplify(f(x)-g(x))? And why the second worked but not the first?



And now







                 0 = 0 

Why Maple behaves like this? I did not know it makes difference if one writes f=g vs. f-g in terms of simplification. 

I copied the code to Mathematica to see how it behaves, and Mathematica Simplify worked on both f=g and also on f-g as one would have expected: