MaplePrimes Questions

is(cos(x)=sqrt(1-sin(x)^2) or cos(x)=-sqrt(1-sin(x)^2)) assuming real;

                                          false  

In a simpler situation the result is correct

is(x=0 or x<>0) assuming real;

                                           true         

SymPy can handle the following query to its assumption system:

>>> from sympy import Q, ask
>>> from sympy.abc import x, y, z
>>> ask(Q.zero(x*y*z), Q.zero(x*z) & Q.real(y))
True
>>> ask(Q.zero(x*y*z), (Q.zero(x) | Q.zero(z)) & Q.real(y))
True
>>> ask(Q.zero(x*y) | Q.zero(y*z), Q.zero(x*z) & Q.real(y))
True

Mathematica can handle an equivalent query:

In[21]:= Assuming[{x*z == 0}, Refine[x*y*z == 0]]
Out[21]= True

However, it can't handle a similar type of query:

In[25]:= Assuming[{x == 0 || z == 0}, Simplify[x*y*z == 0]]
Out[25]= x y z == 0

In[28]:= Assuming[{x*y == 0}, Refine[x*z == 0 || z*y == 0]]
Out[28]= x z == 0 || y z == 0  

It seems that Maple can't handle this type of query at all:

> with(RealDomain);
> is(x*y*z = 0) assuming (x*z = 0, y::real);
FAIL   

However, Maple can handle simpler assumptions like x = 0:

> is(x*y*z = 0) assuming (x = 0, y::real, z::real);
true

Is there some way to use Maple's assumption system to reason about assumptions like x*y=0? I believe that's not possible. If Maple can infer either x=0 or y=0 from x*z=0, its assumption system doesn't seem to be capable of dealing with this sort of assumption.

Based on a paper by Weibel and Gonnet (1993), it doesn't seem like Maple can reason about assumptions that are disjunctions of properties for more than one variable, such as "property p holds for x OR property p holds for y."

SymPy can handle these sorts of queries because it uses a SAT solver as part of its assumption system. However, there is no mention of a SAT solver—or any method of checking multiple possibilities—in the referenced paper or related papers on Maple's assumption system.

Am I correct that Maple's assumption system is not capable of handling this sort of query?

Weibel, T., Gonnet, G.H. (1993). An assume facility for CAS, with a sample implementation for Maple. In: Fitch, J. (ed) Design and Implementation of Symbolic Computation Systems. DISCO 1992. Lecture Notes in Computer Science, vol 721. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57272-4_27

By the way, is there some way to use markdown for these questions? I made the above post by asking chatgpt to convert markdown into html. 

How do i plot / graph a limt? The plot must have a hole at 2 because it is undefined.

limit((x^2-1)/(x-1), x = 1) = 2NULL

``

Download graph-a-limit.mw

i want to get zero of this function i did all part true but i don't know why my pde not getting zero after substitute each parameter and part 

restart

with(PDEtools)

NULL

undeclare(prime)

`There is no more prime differentiation variable; all derivatives will be displayed as indexed functions`

(1)

p := 2*k; n := 1; xi := -p*t+x

2*k

 

1

 

-2*k*t+x

(2)

"U(xi):=(B[1] (RootOf(3 _Z^2-3 _Z-1)+coth(xi)))^(-1/n);u(x,t):=(B[1] (RootOf(3 _Z^2-3 _Z-1)+coth(-p t+x)))^(-1/n) (e)^(&ImaginaryI; (k x-t w))"

proc (xi) options operator, arrow, function_assign; (B[1]*(RootOf(3*_Z^2-3*_Z-1)+coth(xi)))^(-1/n) end proc

 

proc (x, t) options operator, arrow, function_assign; (B[1]*(RootOf(3*_Z^2-3*_Z-1)+coth(-p*t+x)))^(-1/n)*exp(I*(k*x-t*w)) end proc

(3)

pde := I*(diff(u(x, t), t))+diff(u(x, t), `$`(x, 2))+eta*u(x, t)+beta*U(xi)^n*u(x, t)+gamma*U(xi)^(2*n)*u(x, t)+delta*U(xi)^(3*n)*u(x, t)+lambda*U(xi)^(4*n)*u(x, t) = 0

I*(2*exp(I*(k*x-t*w))*k*(1-coth(2*k*t-x)^2)/(B[1]*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^2)-I*w*exp(I*(k*x-t*w))/(B[1]*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))))+2*exp(I*(k*x-t*w))*(1-coth(2*k*t-x)^2)^2/(B[1]*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^3)-(2*I)*k*exp(I*(k*x-t*w))*(1-coth(2*k*t-x)^2)/(B[1]*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^2)+2*exp(I*(k*x-t*w))*coth(2*k*t-x)*(-1+coth(2*k*t-x)^2)/(B[1]*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^2)-k^2*exp(I*(k*x-t*w))/(B[1]*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x)))+eta*exp(I*(k*x-t*w))/(B[1]*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x)))+beta*exp(I*(k*x-t*w))/(B[1]^2*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^2)+gamma*exp(I*(k*x-t*w))/(B[1]^3*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^3)+delta*exp(I*(k*x-t*w))/(B[1]^4*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^4)+lambda*exp(I*(k*x-t*w))/(B[1]^5*(RootOf(3*_Z^2-3*_Z-1)-coth(2*k*t-x))^5) = 0

(4)

case1 := [beta = 2*RootOf(3*_Z^2-3*_Z-1)*(n+2)/(B[1]*n^2), delta = 2*B[1]*(RootOf(3*_Z^2-3*_Z-1)+1)*(3*n+2)/(3*n^2), eta = (k^2*n^2*B[1]^2-n^2*w*B[1]^2-1)/(n^2*B[1]^2), gamma = -6*RootOf(3*_Z^2-3*_Z-1)*(n+1)/n^2, lambda = B[1]^2*(3*RootOf(3*_Z^2-3*_Z-1)-7)*(2*n+1)/(9*n^2), A[0] = RootOf(3*_Z^2-3*_Z-1)*B[1], A[1] = 0, B[1] = B[1]]

[beta = 6*RootOf(3*_Z^2-3*_Z-1)/B[1], delta = (10/3)*B[1]*(RootOf(3*_Z^2-3*_Z-1)+1), eta = (k^2*B[1]^2-w*B[1]^2-1)/B[1]^2, gamma = -12*RootOf(3*_Z^2-3*_Z-1), lambda = (1/3)*B[1]^2*(3*RootOf(3*_Z^2-3*_Z-1)-7), A[0] = RootOf(3*_Z^2-3*_Z-1)*B[1], A[1] = 0, B[1] = B[1]]

(5)

pde3 := eval(pde, case1)

 

``

Download test.mw

Could you explain me why the three forms of patmatch behave identically (which seems natural) but the three forms of type do not.
Is there a way to define the type in type such that this latter returns the same thing for a*f(x)+b, f(x)*a+b, b+a*f(x), b+f(x)*a ?

Z := f(x)*a+b;
t1 = type(Z, `&+`(algebraic, `&*`(algebraic, function)));
t2 = type(Z, `&+`(`&*`(algebraic, function), algebraic));
t3 = type(Z, `&+`(`&*`(function, algebraic), algebraic));

f(x)*a+b

 

t1 = false

 

t2 = false

 

t3 = true

(1)

p1 = patmatch(Z, A::algebraic*f(X::algebraic) + B::algebraic, 'pat');
pat;
p2 = patmatch(Z, B::algebraic + A::algebraic*f(X::algebraic), 'pat');
pat;
p2 = patmatch(Z, B::algebraic + f(X::algebraic)*A::algebraic, 'pat');
pat;

p1 = true

 

[A = a, B = b, X = x]

 

p2 = true

 

[A = a, B = b, X = x]

 

p2 = true

 

[A = a, B = b, X = x]

(2)
 

 

Download type_vs_patmatch.mw

TIA

Recently, Maple has become almost unuseable. Whatever I do, it suddenly becomes non-reponsive, the cursor stops blipping and nothing happens for about a minute, although I can still move the cursor around and the page slider works, suggesting that the kernel has gone mad.

Then suddenly it comes back to life, executes where it left off, which in most cases happens while I am typing input. A minute later it's back to sleep. When I look at the CPU usage while it is non-responsive, I can see CPU usage is about 30% (there is nothing else significant running), disk usage is about 1% and there is plenty of memory (everything in total wants about 10GB and I have 32GB).

I have the -nocloud parameter set and finally disconnected the network connection, but that didn't help.

It all seems to have started with the most recent upgrade, although I'm not 100% sure of that.

Is anyone else seeing something like this, or better yet, does anyone have a suggestion to make this behaviour stop?

How does one downgrade to 2024.1?

Thank you.

the second ode is giving me zero also when we back to orginal under the condition by using them must the orginal ode be zero but i don't know where is mistake , when Orginal paper use some thing different but i think they must have same results i don't know i use them wrong i am not sure at here just , when U(xi)=y(z) in my mw

restart

with(PDEtools)

NULL

undeclare(prime)

`There is no more prime differentiation variable; all derivatives will be displayed as indexed functions`

(1)

NULL

G := V(xi) = RootOf(3*_Z^2-3*_Z-1)*B[1]+B[1]*(exp(xi)+exp(-xi))/(exp(xi)-exp(-xi))

V(xi) = RootOf(3*_Z^2-3*_Z-1)*B[1]+B[1]*(exp(xi)+exp(-xi))/(exp(xi)-exp(-xi))

(2)

NULL

p := 2*k

2*k

(3)

ode := I*(-(diff(U(xi), xi))*p*exp(I*(k*x-t*w))-I*U(xi)*w*exp(I*(k*x-t*w)))+(diff(diff(U(xi), xi), xi))*exp(I*(k*x-t*w))+(2*I)*(diff(U(xi), xi))*k*exp(I*(k*x-t*w))-U(xi)*k^2*exp(I*(k*x-t*w))+eta*U(xi)*exp(I*(k*x-t*w))+beta*U(xi)^n*U(xi)*exp(I*(k*x-t*w))+gamma*U(xi)^(2*n)*U(xi)*exp(I*(k*x-t*w))+delta*U(xi)^(3*n)*U(xi)*exp(I*(k*x-t*w))+lambda*U(xi)^(4*n)*U(xi)*exp(I*(k*x-t*w)) = 0

I*(-2*(diff(U(xi), xi))*k*exp(I*(k*x-t*w))-I*U(xi)*w*exp(I*(k*x-t*w)))+(diff(diff(U(xi), xi), xi))*exp(I*(k*x-t*w))+(2*I)*(diff(U(xi), xi))*k*exp(I*(k*x-t*w))-U(xi)*k^2*exp(I*(k*x-t*w))+eta*U(xi)*exp(I*(k*x-t*w))+beta*U(xi)^n*U(xi)*exp(I*(k*x-t*w))+gamma*U(xi)^(2*n)*U(xi)*exp(I*(k*x-t*w))+delta*U(xi)^(3*n)*U(xi)*exp(I*(k*x-t*w))+lambda*U(xi)^(4*n)*U(xi)*exp(I*(k*x-t*w)) = 0

(4)

case1 := [beta = 2*RootOf(3*_Z^2-3*_Z-1)*(n+2)/(B[1]*n^2), delta = 2*B[1]*(RootOf(3*_Z^2-3*_Z-1)+1)*(3*n+2)/(3*n^2), eta = (k^2*n^2*B[1]^2-n^2*w*B[1]^2-1)/(n^2*B[1]^2), gamma = -6*RootOf(3*_Z^2-3*_Z-1)*(n+1)/n^2, lambda = B[1]^2*(3*RootOf(3*_Z^2-3*_Z-1)-7)*(2*n+1)/(9*n^2), A[0] = RootOf(3*_Z^2-3*_Z-1)*B[1], A[1] = 0, B[1] = B[1]]

[beta = 2*RootOf(3*_Z^2-3*_Z-1)*(n+2)/(B[1]*n^2), delta = (2/3)*B[1]*(RootOf(3*_Z^2-3*_Z-1)+1)*(3*n+2)/n^2, eta = (k^2*n^2*B[1]^2-n^2*w*B[1]^2-1)/(n^2*B[1]^2), gamma = -6*RootOf(3*_Z^2-3*_Z-1)*(n+1)/n^2, lambda = (1/9)*B[1]^2*(3*RootOf(3*_Z^2-3*_Z-1)-7)*(2*n+1)/n^2, A[0] = RootOf(3*_Z^2-3*_Z-1)*B[1], A[1] = 0, B[1] = B[1]]

(5)

n := 1

1

(6)

G := U(xi) = (B[1]*(RootOf(3*_Z^2-3*_Z-1)+coth(xi)))^(-1/n)

U(xi) = 1/(B[1]*(RootOf(3*_Z^2-3*_Z-1)+coth(xi)))

(7)

pde3 := eval(ode, case1)

I*(-2*(diff(U(xi), xi))*k*exp(I*(k*x-t*w))-I*U(xi)*w*exp(I*(k*x-t*w)))+(diff(diff(U(xi), xi), xi))*exp(I*(k*x-t*w))+(2*I)*(diff(U(xi), xi))*k*exp(I*(k*x-t*w))-U(xi)*k^2*exp(I*(k*x-t*w))+(k^2*B[1]^2-w*B[1]^2-1)*U(xi)*exp(I*(k*x-t*w))/B[1]^2+6*RootOf(3*_Z^2-3*_Z-1)*U(xi)^2*exp(I*(k*x-t*w))/B[1]-12*RootOf(3*_Z^2-3*_Z-1)*U(xi)^3*exp(I*(k*x-t*w))+(10/3)*B[1]*(RootOf(3*_Z^2-3*_Z-1)+1)*U(xi)^4*exp(I*(k*x-t*w))+(1/3)*B[1]^2*(3*RootOf(3*_Z^2-3*_Z-1)-7)*U(xi)^5*exp(I*(k*x-t*w)) = 0

(8)

odetest(eval(G, case1), pde3)

79584*exp(I*k*x-I*t*w+12*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-127440*exp(I*k*x-I*t*w+10*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+8352*exp(I*k*x-I*t*w+6*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-27792*exp(I*k*x-I*t*w+8*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-24*exp(2*xi-I*t*w+I*k*x)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+4752*exp(I*k*x-I*t*w+4*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+288*exp(2*xi-I*t*w+I*k*x)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-479376*exp(I*k*x-I*t*w+12*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+138240*exp(I*k*x-I*t*w+10*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+70560*exp(18*xi+I*k*x-I*t*w)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-492912*exp(I*k*x-I*t*w+16*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+777888*exp(I*k*x-I*t*w+14*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+16608*exp(I*k*x-I*t*w+8*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-1056*exp(I*k*x-I*t*w+6*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+288*exp(I*k*x-I*t*w+4*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-39000*exp(18*xi+I*k*x-I*t*w)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-50400*exp(I*k*x-I*t*w+16*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+121440*exp(I*k*x-I*t*w+14*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+27000*RootOf(3*_Z^2-3*_Z-1)*exp(18*xi+I*k*x-I*t*w)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-55080*RootOf(3*_Z^2-3*_Z-1)*exp(18*xi+I*k*x-I*t*w)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+7200*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+16*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+394416*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+16*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-205920*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+14*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-609984*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+14*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-244512*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+12*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+366768*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+12*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-42480*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+10*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-144720*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+10*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-48672*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+8*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+8208*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+8*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+9504*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+6*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+20736*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+6*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+288*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+4*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+18576*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+4*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-72*RootOf(3*_Z^2-3*_Z-1)*exp(2*xi-I*t*w+I*k*x)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+1080*RootOf(3*_Z^2-3*_Z-1)*exp(2*xi-I*t*w+I*k*x)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))

(9)

simplify(-492912*exp(I*k*x-I*t*w+16*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+777888*exp(I*k*x-I*t*w+14*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+16608*exp(I*k*x-I*t*w+8*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-1056*exp(I*k*x-I*t*w+6*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+288*exp(I*k*x-I*t*w+4*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-39000*exp(18*xi+I*k*x-I*t*w)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-50400*exp(I*k*x-I*t*w+16*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+121440*exp(I*k*x-I*t*w+14*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+79584*exp(I*k*x-I*t*w+12*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-127440*exp(I*k*x-I*t*w+10*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+8352*exp(I*k*x-I*t*w+6*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-27792*exp(I*k*x-I*t*w+8*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-24*exp(2*xi-I*t*w+I*k*x)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+4752*exp(I*k*x-I*t*w+4*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+288*exp(2*xi-I*t*w+I*k*x)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-479376*exp(I*k*x-I*t*w+12*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+138240*exp(I*k*x-I*t*w+10*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+70560*exp(18*xi+I*k*x-I*t*w)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-55080*RootOf(3*_Z^2-3*_Z-1)*exp(18*xi+I*k*x-I*t*w)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+7200*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+16*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+394416*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+16*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-205920*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+14*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-609984*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+14*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-244512*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+12*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+366768*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+12*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-42480*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+10*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-144720*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+10*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-48672*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+8*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+8208*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+8*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+9504*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+6*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+20736*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+6*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+288*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+4*xi)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+18576*RootOf(3*_Z^2-3*_Z-1)*exp(I*k*x-I*t*w+4*xi)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))-72*RootOf(3*_Z^2-3*_Z-1)*exp(2*xi-I*t*w+I*k*x)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+1080*RootOf(3*_Z^2-3*_Z-1)*exp(2*xi-I*t*w+I*k*x)/(B[1]^3*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1))+27000*RootOf(3*_Z^2-3*_Z-1)*exp(18*xi+I*k*x-I*t*w)/(B[1]*(3125*exp(20*xi)+25000*exp(18*xi)+76875*exp(16*xi)+108000*exp(14*xi)+55650*exp(12*xi)-12432*exp(10*xi)-11130*exp(8*xi)+4320*exp(6*xi)-615*exp(4*xi)+40*exp(2*xi)-1)))

(((244512*B[1]^2-366768)*exp(10*xi)+(205920*B[1]^2+609984)*exp(12*xi)+(-7200*B[1]^2-394416)*exp(14*xi)+42480*exp(8*xi)*B[1]^2-27000*exp(16*xi)*B[1]^2-288*exp(2*xi)*B[1]^2-9504*exp(4*xi)*B[1]^2+48672*exp(6*xi)*B[1]^2+72*B[1]^2+144720*exp(8*xi)+55080*exp(16*xi)-18576*exp(2*xi)-20736*exp(4*xi)-8208*exp(6*xi)-1080)*RootOf(3*_Z^2-3*_Z-1)+(-79584*B[1]^2+479376)*exp(10*xi)+(-121440*B[1]^2-777888)*exp(12*xi)+(50400*B[1]^2+492912)*exp(14*xi)+127440*exp(8*xi)*B[1]^2+39000*exp(16*xi)*B[1]^2-288*exp(2*xi)*B[1]^2+1056*exp(4*xi)*B[1]^2-16608*exp(6*xi)*B[1]^2+24*B[1]^2-138240*exp(8*xi)-70560*exp(16*xi)-4752*exp(2*xi)-8352*exp(4*xi)+27792*exp(6*xi)-288)*exp(2*xi-I*t*w+I*k*x)/(B[1]^3*(-3125*exp(20*xi)-25000*exp(18*xi)-76875*exp(16*xi)-108000*exp(14*xi)-55650*exp(12*xi)+12432*exp(10*xi)+11130*exp(8*xi)-4320*exp(6*xi)+615*exp(4*xi)-40*exp(2*xi)+1))

(10)

Download ode.mw

this is my first time something like that   coming up my equation after taking integral exponential coming up why?

g1.mw

the series is so complicated but have a strange pattern if you watch the index of parameter  they are not repeated 

 

 

Hi,

I am looking for a simpler way to find the equation of a parabola passing through 3 points. I see that using the Geometry package requires defining the parabola with 5 distinct points. Thank you for your guidance.QuestionParabole.mw

Do you think the result of String(0.016)  should be "0.016"  instead of ".16e-1" ?

Any reason why it gives the second form and not the first?  Now have to keep using sprintf to force formating as decimal point. Is this documented somewhere? quick search did not find anything do far.

Maple 2024.2 on windows.

s:="0.016";

"0.016"

z:= :-parse(s);

0.16e-1

String(z);

".16e-1"

sprintf("%0.3f",z);

"0.016"

 

 

Download string_of_decimal_number.mw

I'd like to know the details of the method Statistics:-Mean uses to numerically estimate the expectation of a random variable.

showstat seems of no use and neither seems to be LibraryTools[Browse]();

Here are two examples: the first one (1D) suggests  Statistics:-Mean could use some evalf/Int method, but the conclusion to draw from the second example (R2 --> R) is less clear.

How_does_Mean_proceed.mw

Thanks in advance

PS: I already asked a similar question months ago but didn't get any reply.
       Even answers such as “We don't know” or “We don't care” would suit me better than their absence.

restart;
with(plots);
with(geometry);
_EnvHorizontalName := 'x';
_EnvVerticalName := 'y';
HC := HorizontalCoord;
VC := VerticalCoord;
a := 11;
b := 7;
t := (3*Pi)/8;
c := sqrt(a^2 - b^2);
ellipse(e1, x^2/a^2 + y^2/b^2 = 1);
point(Oo, 0, 0);
point(A, a*cos(t), b*sin(t));
point(B, a*cos(t + 2/3*Pi), b*sin(t + 2/3*Pi));
point(C, a*cos(t + 4/3*Pi), b*sin(t + 4/3*Pi));
point(G, (A[1] + B[1] + C[1])/3, (A[2] + B[2] + C[2])/3);
eval(coordinates(G));
line(NorA, y - A[2] = a^2*A[2]*(x - A[1])/b^2, [x, y]);
line(NorB, y - B[2] = a^2*B[2]*(x - B[1])/b^2, [x, y]);
line(NorC, y - C[2] = a^2*C[2]*(x - C[1])/b^2, [x, y]);
lieu := a^2*x^2 + b^2*y^2 - c^4/4 = 0;
Lieu := implicitplot(lieu, x = -a .. a, y = -b .. b, color = green);
tx := textplot([[coordinates(A)[], "A"], [coordinates(B)[], "B"], [coordinates(C)[], "C"], [coordinates(Oo)[], "O"]], font = [times, bold, 16], align = [above, left]);
dr := draw([e1(color = blue), NorA(color = red), NorB(color = red), NorC(color = red), A(color = red, symbol = solidcircle, symbolsize = 12), B(color = red, symbol = solidcircle, symbolsize = 12), C(color = red, symbol = solidcircle, symbolsize = 12), Oo(color = red, symbol = solidcircle, symbolsize = 12)]);
display([dr, tx, Lieu], scaling = constrained, axes = normal, title = "Ellipse et normales ", titlefont = [HELVETICA, 14]);
      [1        1        1       1        1        1     ]
      [- A[1] + - B[1] + - C[1], - A[2] + - B[2] + - C[2]]
      [3        3        3       3        3        3     ]

                              NorA

                              NorB

                              NorC

Warning, data could not be converted to float Matrix
Warning, data could not be converted to float Matrix
Warning, data could not be converted to float Matrix

I have a simple nested for loop in a worksheet:

[> for x in [ -1, 1 ] do for y in [ -1, 1 ] do x*y end do end do

When I press Enter, nothing happens. What am I (as a novice) missing?

Scott

I am calling a proc inside a module, where this module had local module variable initialized to false;

This works fine when calling the proc normally.

When calling it from Grid:-Run() it says it is not seeing the module local variable at all.

Why does this happen and is there a workaround this? Here a simple worksheet showing this.

I hope there is a way to make the proc inside the module see the local module variables when using it from Grid node. Otherwise, this whole thing will not work for me, as I have few variables initialized at modules level in number of places.

restart;

A := module()
  local DEBUG_MSG::truefalse:=false;
  export work_proc:=proc(n::integer)
     print("My flag is ",DEBUG_MSG);
  end proc;
end module;

 

_m1690230418240

#THis works as expected
A:-work_proc(0)

"My flag is ", false

#this does not work. THe call works OK, but inside A:-workproc() it does not see module local variables.

Grid:-Set(A:-work_proc):
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

"My flag is ", DEBUG_MSG

 

 

Download grid_with_module_local_variable_feb_7_2025.mw


Update 2/7/2025

I tried to change the access to the module local variables from the module local procs, by adding explicit A:- to each variable name where A here is the module name.

This works for normal calls, but not when using Grid to call the proc.

This workaround fail, it gives error that module does not export `%1`

May be I have to redo all my code not to use local module variables. But in some places I have to do this, in order to detect if something has happened before or not. I use module local variables to store state the presist after call is completed.

It looks like Grid is not meant to be used for calling proc() that uses/lives inside modules. But this makes Grid not very useful then for large application.

restart;

A := module()
  local DEBUG_MSG::truefalse:=false;
  export work_proc:=proc(n::integer)
     print("My flag is ",A:-DEBUG_MSG);
  end proc;
end module;

 

_m1690230418240

#THis works as expected
A:-work_proc(0)

"My flag is ", false

#this does not work. THe call works OK, but inside A:-workproc() it does not see module local variables.

Grid:-Set(A:-work_proc):
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

Error, (in work_proc) module does not export `%1`

 

 

Download grid_with_module_local_variable_feb_7_2025_V2.mw

I also tried to make the module variable as export instead of local, and that also did not work. I am starting to run out of ideas what else to try...

restart;

A := module()
  export DEBUG_MSG::truefalse:=false;
  export work_proc:=proc(n::integer)
     print("My flag is ",A:-DEBUG_MSG);
  end proc;
end module;

 

_m1690230418208

#THis works as expected
A:-work_proc(0)

"My flag is ", false

#this does not work. THe call works OK, but inside A:-workproc() it does not see module local variables.

Grid:-Set(A:-work_proc):
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

Error, (in work_proc) `%1` does not evaluate to a module

 

 

Download grid_with_module_local_variable_feb_7_2025_V3.mw

Update

I think now that using module level local variables will not work with parallel processing anyway. It is like using global variable in parallel processing. Does not work without synchorization of access to this shared variable. 

So this means I have to change my code and not use any module local variables, and pass any information between functions via arguments only.

Using module local variable is more convenient, but I now realize this design is not good for parallel processing.  This means some code changes I have to do. 

On the positive side, I find using Grid can really speed things up. On some tests, up to 10 times faster. The larger the number of problems to process, the more speed up is gained.

So I think it is worth to rewrite my code and remove any use of local level module variables.

Update Feb 11, 2024

Found the solution!  With grid, one must pass in all variables that to be used on a node. So the above now becomes this

restart;

A := module()
  export DEBUG_MSG::truefalse:=false;
  export work_proc:=proc(n::integer)
     print("My flag is ",DEBUG_MSG);
  end proc;
end module;
 

_m1739526597408

#THis works as expected
A:-work_proc(0)

"My flag is ", false

#this does not work. Because we did not pass all variables to be used at node
Grid:-Set(0,A:-work_proc);
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

"My flag is ", DEBUG_MSG

#this now worksheetdir
Grid:-Set(0,A:-work_proc,'A:-DEBUG_MSG');
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

"My flag is ", false

 

 

Download grid_with_module_V4_feb_11_2025.mw

Actually the above could be done easier this way. By passing in the name of the whole module A, now nodes are able to see all module A local vaiables. Like this

restart;

A := module()
  export DEBUG_MSG::truefalse:=false;
  export work_proc:=proc(n::integer)
     print("My flag is ",A:-DEBUG_MSG);
  end proc;
end module;
 

_m1739526597408

#THis works as expected
A:-work_proc(0)

"My flag is ", false

#this does not work. Because we did not pass the name of the A
Grid:-Set(0,A:-work_proc);
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

Error, (in work_proc) `%1` does not evaluate to a module

#this now works, becuase we pass the module A
Grid:-Set(0,'A:-work_proc','A');
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

"My flag is ", false

 

 

Download grid_with_module_V6_feb_11_2025.mw

And to be able to access global variables in another module from inside the worker module, we must pass the other module name. Here is an example

restart;

B := module()
  export some_value::integer:=10;
end module;

A := module()
  export work_proc:=proc(n::integer)
     print("the value is ",B:-some_value);
  end proc;
end module;
 

_m1739526597280

_m1739594742272

#THis works as expected
A:-work_proc(0)

"the value is ", 10

#this does not work. Because we did not pass the name of the other module B in this case
Grid:-Set(0,A:-work_proc);
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

Error, (in work_proc) `%1` does not evaluate to a module

#this now works, becuase we pass the module name B to the node, so it sees it
Grid:-Set(0,'A:-work_proc','B');
Grid:-Run(0,A:-work_proc,[ 0 ]);
Grid:-Wait();

"the value is ", 10

 

 

Download grid_with_module_V5_feb_11_2025.mw

The main point, if one is using modules with Grid, names of all modules to be accessed from a node need to be passed in in the Set call. Otherwise the node will not see them.

Update For the above method to work, all module variables to be accessed at node, have to export and not local.

Update 2/11/2025  4 AM

I think I'll give up on Grid. It is completely useless. I found out that I have to make all my modules proc's export now, even though they are only used in that one module, just in order to call them from same module when running in Grid node.

Otherwise, I have to list each proc name in each module and sub module in the Set command. This is ridiculous design. I have 5,000 proc's. I am not going to list them all each time.

Here is an example where a boo() is local proc to a module. But it is not called, because the proc is local.

restart;

A := module()

  export foo:=proc()
       print("entering A:-foo(), before calling local proc boo()");
       boo(); #this call will not work in Grid setting
  end proc;

  local boo:=proc()
     print("inside local A:-foo()");
  end proc;
end module:

A:-foo();

"entering A:-foo(), before calling local proc boo()"

"inside local A:-foo()"

Grid:-Set(0,A:-foo,'A');
Grid:-Run(0,A:-foo,[0]);
Grid:-Wait();

"entering A:-foo(), before calling local proc boo()"

 


 

Download calling_proc_in_module_V1.mw

To make it work, I have to make all my local proc export, and not only that, I have to call it using A:-boo() as well. So the above becomes


 

restart;

A := module()

  export foo:=proc()
       print("entering A:-foo(), before calling local proc boo()");
       A:-boo(); #this call will not work in Grid setting
  end proc;

  export boo:=proc()
     print("inside local A:-foo()");
  end proc;
end module:

A:-foo();

"entering A:-foo(), before calling local proc boo()"

"inside local A:-foo()"

Grid:-Set(0,A:-foo,'A');
Grid:-Run(0,A:-foo,[0]);
Grid:-Wait();

"entering A:-foo(), before calling local proc boo()"

"inside local A:-foo()"

 

 

Download calling_proc_in_module_V2.mw

I am not going to edit 100,000 lines of Maple code and change all the procs to export and make sure each call have the fully qualified module name attched to it even though it is local to the module.

I will not use Grid. It simply does not work with modules. Maplesoft should fix Grid so code works as with minimal changes.

First 34 35 36 37 38 39 40 Last Page 36 of 2426