Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

I think I just found one of the most serious problems in Maple I've seen (other than timelimit hanging).

This is using Maple 2024.2 on windows 10.

I'll explain in words the problem, then give worksheet below to reproduce this. I can reproduce this all the time.

I have implicit solution in y(x) to an ode.

If I first solve for y(x) from the solution, so solution is now explicit, then call odetest to check if this explicit solution is correct, and if I use assumptions on the odetest call, and then after that call odetest on the original implicit solution, then odetest fails to verify the implicit solution.

But, if I change the order, and first call odetest to verify the implicit solution first, it verifies it OK !  

So the problem ONLY happens if I change the order of calling odetest and if I use assumptions on the odetest call that was used before on the explicit solution.

This tells me that Maple remembers something from earlier call. Does it remember the assumptions used? If so, this is very risky. As some part of program might call odetest with some assumptions, and another part of the program can use no assumptions.  I thought assuming is only applied to the call it is used at only and will not affect future calls.

Is there a way then to clear all assumptions used on earlier call to Maple command before using the command again? Or to tell Maple not to remember assumptions used on a call?

This is a big problem. It took me 14 hrs of debuging to find it. Order of calls to odetest should not make it behave different.

I hope someone could find solution to this, since now I have no idea what to do as I need to use odetest on explicit and implicit solutions and I do not want the order of calling Maple command to make difference in results.

This worksheet shows the problem. 3 cases are given. Notice that when using assumptions on earlier call to odetest, how it fails to verify the implicit solution in later call.

restart;

interface(version);

`Standard Worksheet Interface, Maple 2024.2, Windows 10, October 29 2024 Build ID 1872373`

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1824 and is the same as the version installed in this computer, created 2024, October 31, 14:22 hours Pacific Time.`

kernelopts('assertlevel'=2):

CASE 1. Calling odetest on explicit first with assumptions, make odetest hang when calling on implicit after

 

restart;

IMPLICIT_SOL:=ln(10*x^2 + (10*y(x) + 12)*x + 5*y(x)^2 + 8*y(x) + 4)/5 - (4*arctan((5*y(x) + 5*x + 4)/(5*x + 2)))/5 = (3*ln(2))/5 + (4*arctan(3))/5;
ode:=2*x+3*y(x)+2+(y(x)-x)*diff(y(x),x) = 0;
IC:=y(0) = -2;

(1/5)*ln(10*x^2+(10*y(x)+12)*x+5*y(x)^2+8*y(x)+4)-(4/5)*arctan((5*y(x)+5*x+4)/(5*x+2)) = (3/5)*ln(2)+(4/5)*arctan(3)

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

y(0) = -2

#find explicit solution first
EXPLICIT_SOL:=solve(IMPLICIT_SOL,y(x)):

#NOw check the explicit solution. Using assumptions to see the problem
timelimit(30,  ( odetest(y(x)=EXPLICIT_SOL,[ode,IC]) assuming positive, y(x)::positive) );

Error, (in evalr) time expired

#Now odetest hangs on the implicit solution

timelimit(30,  odetest(IMPLICIT_SOL,[ode,IC]) );

Error, (in is/internal/rename) time expired

 

 

(1/5)*ln(10*x^2+(10*y(x)+12)*x+5*y(x)^2+8*y(x)+4)-(4/5)*arctan((5*y(x)+5*x+4)/(5*x+2)) = (3/5)*ln(2)+(4/5)*arctan(3)

y(x)

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

y(0) = -2

CASE 2. Calling odetest on implicit solution first, then it DOES NOT hang !!

 

restart;

IMPLICIT_SOL:=ln(10*x^2 + (10*y(x) + 12)*x + 5*y(x)^2 + 8*y(x) + 4)/5 - (4*arctan((5*y(x) + 5*x + 4)/(5*x + 2)))/5 = (3*ln(2))/5 + (4*arctan(3))/5;
ode:=2*x+3*y(x)+2+(y(x)-x)*diff(y(x),x) = 0;
IC:=y(0) = -2;

(1/5)*ln(10*x^2+(10*y(x)+12)*x+5*y(x)^2+8*y(x)+4)-(4/5)*arctan((5*y(x)+5*x+4)/(5*x+2)) = (3/5)*ln(2)+(4/5)*arctan(3)

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

y(0) = -2

#notice, no hang now, since called before
timelimit(30,  odetest(IMPLICIT_SOL,[ode,IC]) );

[0, 0]

#NOw check the explicit solution. This will timeout which is OK
EXPLICIT_SOL:=solve(IMPLICIT_SOL,y(x)):
timelimit(30,  ( odetest(y(x)=EXPLICIT_SOL,[ode,IC]) assuming positive, y(x)::positive) );

Error, (in type/complex) time expired

#check again that odetest still verifies the implicit solution OK

timelimit(30,  odetest(IMPLICIT_SOL,[ode,IC]) );

[0, 0]

 

CASE 3. Calling odetest with no assumptions on explicit solution, then it also does not hang

 

restart;

IMPLICIT_SOL:=ln(10*x^2 + (10*y(x) + 12)*x + 5*y(x)^2 + 8*y(x) + 4)/5 - (4*arctan((5*y(x) + 5*x + 4)/(5*x + 2)))/5 = (3*ln(2))/5 + (4*arctan(3))/5;
ode:=2*x+3*y(x)+2+(y(x)-x)*diff(y(x),x) = 0;
IC:=y(0) = -2;

(1/5)*ln(10*x^2+(10*y(x)+12)*x+5*y(x)^2+8*y(x)+4)-(4/5)*arctan((5*y(x)+5*x+4)/(5*x+2)) = (3/5)*ln(2)+(4/5)*arctan(3)

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

y(0) = -2

#Now check the explicit solution. but DO NOT use assumptions
EXPLICIT_SOL:=solve(IMPLICIT_SOL,y(x)):
timelimit(30, odetest(y(x)=EXPLICIT_SOL,[ode,IC]));

Error, (in factor/remember) time expired

#check again that odetest still verifies the implicit solution OK

timelimit(30,  odetest(IMPLICIT_SOL,[ode,IC]) );

[0, 0]

 


 

Download order_of_ode_test_makes_difference_oct_31_2024.mw

 

update NOV 2, 2024 6 AM

I found the cause.

Removing PHYSICS from libname, then the problem goes away !

So this is caused by PHYSICS package. For some reason, having Physics package in the libname causes odetest to hang/fail compared to when the physics package is not in the libname path. Worksheet below.

restart;

interface(version);

`Standard Worksheet Interface, Maple 2024.2, Windows 10, October 29 2024 Build ID 1872373`

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1824 and is the same as the version installed in this computer, created 2024, October 31, 14:22 hours Pacific Time.`

libname;

"C:\Users\Owner\maple\toolbox\2024\Physics Updates\lib", "C:\Program Files\Maple 2024\lib"

CASE 1. without PHYSICS on libname, it works !!

 

restart;

kernelopts('assertlevel'=2):

libname;

"C:\Users\Owner\maple\toolbox\2024\Physics Updates\lib", "C:\Program Files\Maple 2024\lib"

libname:=libname[2]; #remove PHYSICS

"C:\Program Files\Maple 2024\lib"

libname;

"C:\Program Files\Maple 2024\lib"

IMPLICIT_SOL:=ln(10*x^2 + (10*y(x) + 12)*x + 5*y(x)^2 + 8*y(x) + 4)/5 - (4*arctan((5*y(x) + 5*x + 4)/(5*x + 2)))/5 = (3*ln(2))/5 + (4*arctan(3))/5;
ode:=2*x+3*y(x)+2+(y(x)-x)*diff(y(x),x) = 0;
IC:=y(0) = -2;

(1/5)*ln(10*x^2+(10*y(x)+12)*x+5*y(x)^2+8*y(x)+4)-(4/5)*arctan((5*y(x)+5*x+4)/(5*x+2)) = (3/5)*ln(2)+(4/5)*arctan(3)

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

y(0) = -2

#find explicit solution first
EXPLICIT_SOL:=solve(IMPLICIT_SOL,y(x)):

#NOw check the explicit solution. Using assumptions to see the problem
timelimit(30,  ( odetest(y(x)=EXPLICIT_SOL,[ode,IC]) assuming positive, y(x)::positive) );

Error, (in evalr/ln) time expired

#Now try odetest  on the implicit solution

infolevel[odetest]:=5;

5

timelimit(30,  odetest(IMPLICIT_SOL,[ode,IC]) );

odetest: Performing an implicit solution test

odetest: Performing an explicit (try soft) solution test

odetest: Performing an implicit solution (II) test

[0, 0]

 

 

CASE 2. With Physics on libname, it fails !

 

restart;

kernelopts('assertlevel'=2):

libname;

"C:\Users\Owner\maple\toolbox\2024\Physics Updates\lib", "C:\Program Files\Maple 2024\lib"

IMPLICIT_SOL:=ln(10*x^2 + (10*y(x) + 12)*x + 5*y(x)^2 + 8*y(x) + 4)/5 - (4*arctan((5*y(x) + 5*x + 4)/(5*x + 2)))/5 = (3*ln(2))/5 + (4*arctan(3))/5;
ode:=2*x+3*y(x)+2+(y(x)-x)*diff(y(x),x) = 0;
IC:=y(0) = -2;

(1/5)*ln(10*x^2+(10*y(x)+12)*x+5*y(x)^2+8*y(x)+4)-(4/5)*arctan((5*y(x)+5*x+4)/(5*x+2)) = (3/5)*ln(2)+(4/5)*arctan(3)

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

y(0) = -2

#find explicit solution first
EXPLICIT_SOL:=solve(IMPLICIT_SOL,y(x)):

timelimit(30,  ( odetest(y(x)=EXPLICIT_SOL,[ode,IC]) assuming positive, y(x)::positive) );

Error, (in evalr/shake) time expired

#Now try odetest  on the implicit solution

infolevel[odetest]:=5;

5

timelimit(30,  odetest(IMPLICIT_SOL,[ode,IC]) );

odetest: Performing an implicit solution test

odetest: Performing an explicit (try soft) solution test

odetest: Performing an implicit solution (II) test

Error, (in is/internal/rename) time expired

 

 

Download order_of_ode_test_makes_difference_NOV_2_2024.mw

my question is: Is it safe to permanently remove Physics package from libname? Why is having physics package in libname (which is by default) causes this problem?

I do not use Physics package explicitly in my code. i.e. I do not do Physics:- calls. 

Any one knows what effect not having Physics on libname cause? Will Maple still work OK for everything if one is not calling Physics package explicitly?

When I export images as SVG the resulting file always has the image much larger than the viewbox resulting in only part of it showing. My normal workflow is to then load in Inkscape and correct the error, however, I would love to not have an extra step. Is there any other fix for this?

How can I use Maple to solve a system of nonlinear equations symbolically and display the steps in the solution?

I have learned that the SPECTRA.mla library can solve SDP problems. I have tried to download and use it, but I am still missing the FGb module

> with(SPECTRA);
> M := Matrix(6, 6, [[10, 1, 0, m[1], -m[3], m[2]], [1, -2*m[1]+27, m[3], -27/2, -m[4], -m[5]], [0, m[3], -2*m[2], m[4], m[5], 0], [m[1], -27/2, m[4], 10, 0, m[6]], [-m[3], -m[4], m[5], 0, -2*m[6], 0], [m[2], -m[5], 0, m[6], 0, 1]]);
> SolveLMI(M);
=> Error, (in SPECTRA:-SolveLMI) `FGb` does not evaluate to a module

 

How can I resolve this issue on a Windows environment, beause I don't see install file for Windows, only MacOS and Linux:

I have this problem:

(x'+x''+epsilon/x)(x'-(x')^3/3!)(x''-(x'')^3/3!)(epsilon/x -(epsilon/x)^3/3!)=1

x(0)=epsilon , x'(epsilon)=epsilon+epsilon^{-1}

0<epsilon<<1

Now I want to try the ansatz: x(epsilon,t)=x_{-1}(t)/epsilon+x_0(t)+x_1(t)epsilon.

Can you suggest me a way to implement this ansatz (i.e finding x_{-1}(t),x_0(t),x_1(t)).

Appreciate your time!

Hi Dear,

I hope everyone is fine here. In the attached file, I have generated a square matrix "Q" using two-dimensional polynomials. The dimension of the square matrix "Q" depends on M1 and M2 parameters. In my simulation, sometimes I need this matrix of 1000 by 1000 dimensions. Using the attached method, it took a lot of time to compute two-dimensional polynomials and then to compute the general square matrix "Q." I wanted to write this matrix using proc (procedures). Maybe by using this way, I don't need to compute the polynomials, and it took less time to compute the square matrix "Q." I know how to generate a matrix using proc when its dimension depends on one parameter. However, here, the dimension of matrix "Q" depends on two parameters, M1 and M2. So, I am a little bit confused about how to adjust them in proc. Please see the attached file and share your useful ideas. 

help.mw

Thanks in advance

As by title, is it possible to check intermediate results found by nodes when using Grid:Map, and stop the execution according to these?

every time i have a small problem 2  why not cancel number 2 in denominator , i don't want see a number with fraction like 1/3  3/4 how i fix this

restart

K := (1/2)*sqrt(2*sqrt(2)*sqrt(lambda*a[5]/a[4])+2*sqrt(-2*a[5]/a[4])*(B[1]*sqrt(-lambda)*sinh(sigma)+B[2]*sqrt(-lambda)*cosh(sigma))/(B[1]*cosh(sigma)+B[2]*sinh(sigma)+mu/lambda)+2*sqrt(-(2*(lambda^2*B[1]^2*a[5]-lambda^2*B[2]^2*a[5]-mu^2*a[5]))/(lambda*a[4]))/(B[1]*cosh(sigma)+B[2]*sinh(sigma)+mu/lambda))*e^(i*psi(x, t))

Warning, if e is meant to be the exponential e, use command/symbol completion or palettes to enter this special symbol, or use the exp function

 

(1/2)*(2*2^(1/2)*(lambda*a[5]/a[4])^(1/2)+2*(-2*a[5]/a[4])^(1/2)*(B[1]*(-lambda)^(1/2)*sinh(sigma)+B[2]*(-lambda)^(1/2)*cosh(sigma))/(B[1]*cosh(sigma)+B[2]*sinh(sigma)+mu/lambda)+2*(-2*(lambda^2*B[1]^2*a[5]-lambda^2*B[2]^2*a[5]-mu^2*a[5])/(lambda*a[4]))^(1/2)/(B[1]*cosh(sigma)+B[2]*sinh(sigma)+mu/lambda))^(1/2)*e^(i*psi(x, t))

(1)

B[1] := 0; mu := 0

0

 

0

(2)

simplify(eval(K))

(1/2)*2^(3/4)*(((coth(sigma)*(-lambda)^(1/2)*(-a[5]/a[4])^(1/2)+(lambda*a[5]/a[4])^(1/2))*B[2]+csch(sigma)*(lambda*a[5]*B[2]^2/a[4])^(1/2))/B[2])^(1/2)*e^(i*psi(x, t))

(3)

simplify((1/2)*2^(3/4)*(((coth(sigma)*(-lambda)^(1/2)*(-a[5]/a[4])^(1/2)+(lambda*a[5]/a[4])^(1/2))*B[2]+csch(sigma)*(lambda*a[5]*B[2]^2/a[4])^(1/2))/B[2])^(1/2)*e^(i*psi(x, t)), 'trig')

(1/2)*2^(3/4)*(((coth(sigma)*(-lambda)^(1/2)*(-a[5]/a[4])^(1/2)+(lambda*a[5]/a[4])^(1/2))*B[2]+csch(sigma)*(lambda*a[5]*B[2]^2/a[4])^(1/2))/B[2])^(1/2)*e^(i*psi(x, t))

(4)

simplify((1/2)*2^(3/4)*(((coth(sigma)*(-lambda)^(1/2)*(-a[5]/a[4])^(1/2)+(lambda*a[5]/a[4])^(1/2))*B[2]+csch(sigma)*(lambda*a[5]*B[2]^2/a[4])^(1/2))/B[2])^(1/2)*e^(i*psi(x, t)))

(1/2)*2^(3/4)*(((coth(sigma)*(-lambda)^(1/2)*(-a[5]/a[4])^(1/2)+(lambda*a[5]/a[4])^(1/2))*B[2]+csch(sigma)*(lambda*a[5]*B[2]^2/a[4])^(1/2))/B[2])^(1/2)*e^(i*psi(x, t))

(5)

simplify((1/2)*2^(3/4)*(((coth(sigma)*(-lambda)^(1/2)*(-a[5]/a[4])^(1/2)+(lambda*a[5]/a[4])^(1/2))*B[2]+csch(sigma)*(lambda*a[5]*B[2]^2/a[4])^(1/2))/B[2])^(1/2)*e^(i*psi(x, t)), 'constant')

(1/2)*2^(3/4)*(((coth(sigma)*(-lambda)^(1/2)*(-a[5]/a[4])^(1/2)+(lambda*a[5]/a[4])^(1/2))*B[2]+csch(sigma)*(lambda*a[5]*B[2]^2/a[4])^(1/2))/B[2])^(1/2)*e^(i*psi(x, t))

(6)
 

 

 

NULL

Download cancelation.mw

Recently a new configuration of a computer, with a better cpu - AMD Ryzen 7 8700G w/ Radeon 780M Graphics, but maple computation is particularly slow, cpu call special less computation is particularly slow, is there any way to improve?

OneFrame := proc(k)
local Courbe, T, a, b, c, t, P, Q, NormM, F, Ell, sol, N1, N2, dr, tx;
a := 11; b := 7; c := sqrt(a^2 - b^2); t := 1/3*Pi;
Ell := x^2/a^2 + y^2/b^2 = 1;
geometry:-point(T, (a^2 - b^2)*cos(t)^3/a, -(a^2 - b^2)*sin(t)^3/b);
Courbe := plots:-implicitplot(Ell, x = -a - 10 .. a + 10, y = -b - 10 .. b + 10, scaling = constrained, color = blue);
NormM := plots:-implicitplot(y - b*sin(t) = a*sin(t)*(x - a*cos(t))/(b*cos(t)), x = -a - 5 .. a + 10, y = -b - 10 .. b + 10, color = orange); geometry:-line(Per, y - b*sin(t) = a*sin(t)*(x - a*cos(t))/(b*cos(t)), [x, y]);
geometry:-point(P, subs(y = 0
, geometry:-Equation(Per), 0));
geometry:-point(Q, 0, subs(x = 0, geometry:-Equation(Per)));
geometry:-point(M, a*cos(t), b*sin(t));
geometry:-point(N1, a*cos(k), b*sin(k));
geometry:-point(F, 2.329411765, -2.567510609);
geometry:-line(L, N1, F);
sol := solve({geometry:-Equation(L), Ell}, {x, y},explicit);
geometry:-point(N2, subs(sol[2], x), subs(sol[2], y));
geometry:-segment(sg, N1, N2);
tx := plots:-textplot([[geometry:-coordinates(M)[], "M"],
[geometry:-coordinates(N1)[], "N1"], [geometry:-coordinates(N2)[], "N2"],
[geometry:-coordinates(P)[], "P"],
[geometry:-coordinates(Q)[], "Q"],
[geometry:-coordinates(F)[], "F point de Frégier"],
[geometry:-coordinates(T)[], "T"]], font = [times, bold, 16], align = [above, left]);
dr := geometry:-draw([sg(color = magenta, linestyle = dash),
Per(color = black), P(color = red, symbol = solidcircle, symbolsize = 12),
Q(color = red, symbol = solidcircle, symbolsize = 12),
M(color = black, symbol = solidcircle, symbolsize = 12),
F(color = red, symbol = solidcircle, symbolsize = 12),
N1(color = black, symbol = solidcircle, symbolsize = 8),
N2(color = black, symbol = solidcircle, symbolsize = 8),
T(color = black, symbol = solidcircle, symbolsize = 8)]);
plots:-display(Courbe, tx, dr, scaling = constrained, axes = none); end proc;

plots:-animate(OneFrame, [k], k = Pi/3 .. Pi, frames = 50);
Error, (in plots/animate) wrong type of arguments
Why this animation does't work ? Thank you very much.
 

 

 

Any ideas, guys?

I am trying to create a ring of difference operators with customly defined actions. I have managed to get the code to work to an extent, but I am having trouble creating the inverse operators. For example, if Sn sends n to n+2, I want to create Sn^(-1) that sends n to n-2. When I tried to input this into the algebra itself, it gave me the following error: "Error, (in Ore_algebra:-skew_algebra) indeterminate n may appear in a single commutation only". Below is the code that creates the difference algebra. Apologies for the bad formatting.


> with(Ore_algebra);

> CreateDifferenceAlgebra := proc (vars::(list(symbol)), offsets::(list(numeric)))


local actions, i, var, diff_op,
shift_offset, algebra; actions := table();
for i to numelems(vars) do
   var := vars[i];
   diff_op := convert(cat("S",\var), symbol);
   shift_offset := offsets[i];
   actions[diff_op] := (proc (values) options operator, arrow; proc (u, order)
      local res; res := u;
      to order do res := subs(values[1] = values[1]+values[3], res*values[2]) end do;
      res
      end proc

   end proc)([var, diff_op, shift_offset]) end do;


algebra := Ore_algebra:-skew_algebra(seq(shift = [convert(cat("S",

vars[i]), symbol), vars[i]], i = 1 .. numelems(vars)),

action = {seq(convert(cat("S", vars[i]), symbol) =
actions[convert(cat("S", vars[i]), symbol)], i = 1 ..
numelems(vars))}); return algebra end proc


;

 

 

I have currently a Maple session running with only one open worksheet.

The worksheet only contains an input line with the name "a" and an output line with the name "a".

The fan of my laptop is running full throttle and the task manager displays 10% CPU usage and a very high power usage (3 mserver.exe running, the process with the cpu load is javaw.exe. Suspending this process shuts down the fan).

After about an hour I decided to ask. While typing this post (in Firefox, probably unrelated) the CPU usage went down and the fan went quite. The total system CPU usage is now down to 2%.

Has anybody seen the same? What could have cause it? It's not the first time I observe this. Anything that I could check before restarting Maple? All on Windows 10 after system restart.

Update:

The thread that consumes cpu is called ucrtbase.dll!configthreadlocate

Starting Maplesim in parallel almost immediately turns off the fan while the displayed cpu load is still high but now variing.

I can't understand why Maple interprets 1 .05  as 1 * 5 = 5 , and 2 .05  as 2 * 5 = 10 . Note the space between 1 and .05
In a different calculation I accidentally inserted a space between 1 and .05, and received a strange answer, and finally narrowed it down to a space.
But now I wonder why it is it is interpreting this way. Also I see that 2  0.05 produces an error. But  2 .05 is treated as 10. There is an implied multiplication? But the multiplication should be 2 * .05 , which is 1 and not 10.

i found thus condition which if we substitute in equation must be equal to zero, i don't know  how i can get zero

test_pde1.mw

First 11 12 13 14 15 16 17 Last Page 13 of 2218