nm

11643 Reputation

20 Badges

13 years, 144 days

MaplePrimes Activity


These are questions asked by nm

I gave up trying to figure out why Maple sometimes generates solutions from my code that look different, running the same exact code. I know Maple is not deterministic and this can happen sometimes for reasons I will never know.

The following two solutions are the same, it just sometimes Maple shuffles terms a little around. For example SQRT(6) comes out SQRT(2)*SQRT(3).  I have no idea why this happens. It could be how memory inside Maple happened to be at the time and what happened before.

But my question is the following. Here is one ode, and two solutions that are exactly the same. I called one good_sol and one bad_sol.

If I do simplify(bad_sol - good_sol) I get  0 = 0 but here is the problem. When calling odetest on the good_sol, Maple returns 0 instantly,  But on the bad_sol it just hangs.

Even though the two solution are exactly the same. i.e. Mathematically the same.  

I'd like to know why does this happen? And if there is a permanent fix I could always use.

The following worksheet shows this problem.

After much trial and error, I found that if I do radnormal(bad_sol) then now odetest returns zero right away and the hang is gone!

I am just trying to understand why. And why odetest then itself does not use radnormal if this makes it work better?

Do I need to call randormal on every solution before calling odetest then? Will calling randormal on the final solution have any bad side effects on other computation after that?  It should not I would think.

This is all done in code without looking at the screen and having to decide. So I would need a solution that will work for all cases. But for now, I will change my code and add randormal to all solutions and see what happens.

Using 2024.1 on windows.   May be Maple behaves different on macOS, I do not know.

interface(version);

`Standard Worksheet Interface, Maple 2024.1, Windows 10, June 25 2024 Build ID 1835466`

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1767 and is the same as the version installed in this computer, created 2024, June 28, 12:19 hours Pacific Time.`

restart;

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

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

bad_sol:=ln(x) - c__1 - 1/2*ln((y(x)^2 - 6*x)/x) - 3*ln((sqrt(3)*y(x) + sqrt((3*y(x)^2 - 16*x)/x)*sqrt(x))/sqrt(x)) + 1/2*arctanh(1/2*(-16*sqrt(x) + 3*y(x)*sqrt(2)*sqrt(3))*sqrt(2)/(sqrt((3*y(x)^2 - 16*x)/x)*sqrt(x))) + 1/2*arctanh(1/2*(16*sqrt(x) + 3*y(x)*sqrt(2)*sqrt(3))*sqrt(2)/(sqrt((3*y(x)^2 - 16*x)/x)*sqrt(x))) = 0;

ln(x)-c__1-(1/2)*ln((y(x)^2-6*x)/x)-3*ln((3^(1/2)*y(x)+((3*y(x)^2-16*x)/x)^(1/2)*x^(1/2))/x^(1/2))+(1/2)*arctanh((1/2)*(-16*x^(1/2)+3*y(x)*2^(1/2)*3^(1/2))*2^(1/2)/(((3*y(x)^2-16*x)/x)^(1/2)*x^(1/2)))+(1/2)*arctanh((1/2)*(16*x^(1/2)+3*y(x)*2^(1/2)*3^(1/2))*2^(1/2)/(((3*y(x)^2-16*x)/x)^(1/2)*x^(1/2))) = 0

good_sol:=ln(x) - c__1 - 1/2*ln((y(x)^2 - 6*x)/x) - 3*ln((sqrt(3)*y(x) + sqrt(x)*sqrt((3*y(x)^2 - 16*x)/x))/sqrt(x)) + 1/12*sqrt(3)*sqrt(6)*sqrt(2)*arctanh(1/2*(-16*sqrt(x) + 3*y(x)*sqrt(6))*sqrt(2)/(sqrt(x)*sqrt((3*y(x)^2 - 16*x)/x))) + 1/12*sqrt(3)*arctanh(1/2*(16*sqrt(x) + 3*y(x)*sqrt(6))*sqrt(2)/(sqrt(x)*sqrt((3*y(x)^2 - 16*x)/x)))*sqrt(6)*sqrt(2) = 0;
 

ln(x)-c__1-(1/2)*ln((y(x)^2-6*x)/x)-3*ln((3^(1/2)*y(x)+((3*y(x)^2-16*x)/x)^(1/2)*x^(1/2))/x^(1/2))+(1/12)*3^(1/2)*6^(1/2)*2^(1/2)*arctanh((1/2)*(-16*x^(1/2)+3*y(x)*6^(1/2))*2^(1/2)/(((3*y(x)^2-16*x)/x)^(1/2)*x^(1/2)))+(1/12)*3^(1/2)*arctanh((1/2)*(16*x^(1/2)+3*y(x)*6^(1/2))*2^(1/2)/(((3*y(x)^2-16*x)/x)^(1/2)*x^(1/2)))*6^(1/2)*2^(1/2) = 0

simplify(bad_sol-good_sol)

0 = 0

odetest(good_sol,ode); #instant answer

0

odetest(bad_sol,ode); #hangs

Warning,  computation interrupted

 

radnormal(bad_sol)

ln(x)-c__1-(1/2)*ln((y(x)^2-6*x)/x)-3*ln((y(x)*x^(1/2)*3^(1/2)+x*(-(-3*y(x)^2+16*x)/x)^(1/2))/x)+(1/2)*arctanh((-(-3*y(x)^2+16*x)/x)^(1/2)*(3*y(x)*x^(1/2)*3^(1/2)-8*2^(1/2)*x)/(3*y(x)^2-16*x))+(1/2)*arctanh((-(-3*y(x)^2+16*x)/x)^(1/2)*(3*y(x)*x^(1/2)*3^(1/2)+8*2^(1/2)*x)/(3*y(x)^2-16*x)) = 0

odetest(%,ode); #instant answer

0

 


 

Download why_same_sol_hangs_july_7_2024.mw

 

Is there a way to install 2024.1 and keep 2024 there also? i.e. install 2024.1 along side 2024? This way if I find a problem and want to check 2024 I still have it? 

i.e. install Maple 2024.1 in its own folder, separate from Maple 2024, and have its own icon on desktop. 

If I install 2024.1 using Tools->Check for update,  it will overwrite 2024 and not ask me if I want to keep it. At least this is what happened in Maple 2023 and earlier versions. So wanted to ask before I try to do this again, else it will be too late.

If I do not use Tools->Check for updates, and instead download 2024.1 manually from the product web page, will one then be able to install 2024.1 and keep 2024? Or will it also overwrite 2024? I have not tried because I do not know if it will ask me or not.

Maple 2024.

What is the command to stopat and showstat the proc  DEtools:-odeadvisor ?

I tried

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

showstat(`DEtools/odeadvisor`);

showstat(`ODEtools/odeadvisor`);

And few other variations. It works on other proc's  such as

stopat(`ODEtools/symtest`); 
stopat(`ODEtools/test`); 
stopat(`ODEtools/normal/expanded`); 
stopat(`ODEtools/odepde`); 

But I was never able to figure the name for `DEtools:-odeadvisor`

Is there a general method to determine the correct name to use for printing or stopping at Maple command code to see it?

For me, it seems like trial and error process. For example DEtools:-command   becmes ODEtools:-command to stop at. Notice the extra O needed for tracing or printing. Do not know why extra O is needed. But showstat(`DEtools/symtest`); gives error, and showstat(`ODEtools/symtest`); works even though the command itself has no O.

So my question is, what would be the command to stop at DEtools:-odeadvisor? Is there a place to read more about how to find the correct path to give so do not have to guess?

Maple 2024

Maple gives type of this first order ode as _homogeneous, `class C`, but it is also dAlembert ode.

When asking it to solve as  dAlembert using the method option, it solves it.

But it returns singular solution which is wrong as it does not satisfy the IC. Singular solution should also satisfy IC like particular solutions do.

Is this a bug or Am I overlooking something?

Should not the solution returned satisfy the IC even though method used is not listed from odeadvisor?
 

29028

interface(version);

`Standard Worksheet Interface, Maple 2024.0, Windows 10, March 01 2024 Build ID 1794891`

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1764 and is the same as the version installed in this computer, created 2024, June 28, 12:19 hours Pacific Time.`

restart;

29028

ode:=diff(y(x), x) = (3*x - y(x) + 1)/(3*y(x) - x + 5);
ic:=y(0)=0;

diff(y(x), x) = (3*x-y(x)+1)/(3*y(x)-x+5)

y(0) = 0

sol:=dsolve([ode,ic],[dAlembert]); #this solution is singular solution.

y(x) = x-1

odetest(sol,[ode,ic]); #notice, solution do not satisfy IC

[0, 1]

sol2:=dsolve([ode,ic]):
odetest(sol2,[ode,ic]); #this is OK since used default method, not dAlembert

[0, 0]

DEtools:-odeadvisor(ode)

[[_homogeneous, `class C`], _rational, [_Abel, `2nd type`, `class A`]]

 


 

Download dsolve_dalembert_july_2_2024.mw

There is an integration method called orering in Maple. But see no mention on it at help page 

It shows up when using option 

method=_RETURNVERBOSE

And that is how I knew about it.

It gives division by zero when asked to integrate zero !

Any one knows what is this method? Will send bug email to Maplesoft suport just in case also.
 

interface(version);

`Standard Worksheet Interface, Maple 2024.0, Windows 10, March 01 2024 Build ID 1794891`

int(0,x)

0

int(0,x,method=orering)

Error, (in IntegrationTools:-Indefinite) numeric exception: division by zero

int(1,x,method=orering)

x

 


 

Download division_by_zero_int_orering_method.mw

 

 

First 31 32 33 34 35 36 37 Last Page 33 of 205