nm

11353 Reputation

20 Badges

13 years, 10 days

MaplePrimes Activity


These are questions asked by nm

I got email to register to "see" Maple 2025 :

for a special advanced look at Maple 2025

But I do not understand what does registering here means. Do I then get a link to some Maple internal URL to watch Video at that time? It says

Date/Time: Tuesday, March 18, 2025 at 11:00 AM
Language: English
Duration: 1 hour

If I register, then what happens?  do I get a link that opens at the time time to watch it? If so, why does one have to register to watch a Maple video? Why is the link not made public for any one to watch? Does one have to be at the browser at that exact time for the link to open?

I just do not know what a Maple webinar means.  Is it like a youtube video?

THis IC for Abel ode is not valid and should result in no solution. But instead of returning NULL, dsolve throws internal error called Error, (in dsolve) invalid limiting point

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 1844 and is the same as the version installed in this computer, created 2025, January 25, 22:5 hours Pacific Time.`

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

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

DEtools:-odeadvisor(ode);
sol:=dsolve([ode,y(1)=1])

[_Abel]

Error, (in dsolve) invalid limiting point

tracelast;

 dsolve called with arguments: [diff(y(x), x)-x^a*y(x)^3+3*y(x)^2-x^(-a)*y(x)-x^(-2*a)+a*x^(-a-1) = 0, y(1) = 1], arbitraryconstants = subscripted, atomizenames = true, build = false, numeric = false, type = none
 #(dsolve,80): error

 \`dsolve/IC\` called with arguments: [diff(y(x), x)-x^a*y(x)^3+3*y(x)^2-x^(-a)*y(x)-x^(-2*a)+a*x^(-a-1) = 0, y(1) = 1], {y(x)}, skipimplicit = false, skippparticularsolforlinearODEs = true, solution = {}, usesolutions = particular and general
 #(\`dsolve/IC\`,64): draft := procname(_passed,':-usesolutions = "general"');

 \`dsolve/IC\` called with arguments: [diff(y(x), x)-x^a*y(x)^3+3*y(x)^2-x^(-a)*y(x)-x^(-2*a)+a*x^(-a-1) = 0, y(1) = 1], {y(x)}, skipimplicit = false, skippparticularsolforlinearODEs = true, solution = {}, usesolutions = general
 #(\`dsolve/IC\`,277): zz := map(op,{\`dsolve/IC/_C\`({ANS[i]},funcs,x,ics)});

 \`dsolve/IC/_C\` called with arguments: {y(x) = -exp(2*x^(-a+1)/(a-1))/(_C[1]-2*2^(2*(a+1)/(a-1))*(1/(-a+1))^((a+1)/(a-1))*(2^(-(5*a-3)/(a-1))*(1/(-a+1))^(-(a+1)/(a-1))*x^(2*a)*(-a+1)^2*(x^(-a+1)/(-a+1))^(1/(a-1))*(-4*x^(-a+1)*a^2/(-a+1)+8*a*x^(-a+1)/(-a+1)-4*x^(-a+1)/(-a+1)+2*a-2)*WhittakerM(-(a+1)/(a-1)+1/(a-1), -1/(a-1)+1/2, 4*x^(-a+1)/(-a+1))*exp(-2*x^(-a+1)/(-a+1))/((a+1)*(-3+a))-2^(-(3*a-1)/(a-1))*(1/(-a+1))^(-(a+1)/(a-1))*x^(2*a)*WhittakerM(-(a+1)/(a-1)+1/(a-1)+1, -1/(a-1)+1/2, 4*x^(-a+1)/(-a+1))*(-a+1)^2*(x^(-a+1)/(-a+1))^(1/(a-1))*exp(-2*x^(-a+1)/(-a+1))/((a+1)*(-3+a)))/(-a+1))^(1/2)+x^(-a)}, {y(x)}, x, [y(1) = 1]
 #(\`dsolve/IC/_C\`,1): ans := \`dsolve/IC/_C/do\`(solns,depvars,t,inits,'evaluated_ans', "default",':-giveup = giveup');

 \`dsolve/IC/_C/do\` called with arguments: {y(x) = -exp(2*x^(-a+1)/(a-1))/(_C[1]-2*2^(2*(a+1)/(a-1))*(1/(-a+1))^((a+1)/(a-1))*(2^(-(5*a-3)/(a-1))*(1/(-a+1))^(-(a+1)/(a-1))*x^(2*a)*(-a+1)^2*(x^(-a+1)/(-a+1))^(1/(a-1))*(-4*x^(-a+1)*a^2/(-a+1)+8*a*x^(-a+1)/(-a+1)-4*x^(-a+1)/(-a+1)+2*a-2)*WhittakerM(-(a+1)/(a-1)+1/(a-1), -1/(a-1)+1/2, 4*x^(-a+1)/(-a+1))*exp(-2*x^(-a+1)/(-a+1))/((a+1)*(-3+a))-2^(-(3*a-1)/(a-1))*(1/(-a+1))^(-(a+1)/(a-1))*x^(2*a)*WhittakerM(-(a+1)/(a-1)+1/(a-1)+1, -1/(a-1)+1/2, 4*x^(-a+1)/(-a+1))*(-a+1)^2*(x^(-a+1)/(-a+1))^(1/(a-1))*exp(-2*x^(-a+1)/(-a+1))/((a+1)*(-3+a)))/(-a+1))^(1/2)+x^(-a)}, {y(x)}, x, [y(1) = 1], evaluated_ans, default, giveup = giveup, usecansolve = false
 #(\`dsolve/IC/_C/do\`,133): Solns := map((u, S) -> map(limit,S,op(u)),csol,Solns);

 limit called with arguments: y(x) = -exp(2*x^(-a+1)/(a-1))/(_C[1]-2*2^(2*(a+1)/(a-1))*(1/(-a+1))^((a+1)/(a-1))*(2^(-(5*a-3)/(a-1))*(1/(-a+1))^(-(a+1)/(a-1))*x^(2*a)*(-a+1)^2*(x^(-a+1)/(-a+1))^(1/(a-1))*(-4*x^(-a+1)*a^2/(-a+1)+8*a*x^(-a+1)/(-a+1)-4*x^(-a+1)/(-a+1)+2*a-2)*WhittakerM(-(a+1)/(a-1)+1/(a-1), -1/(a-1)+1/2, 4*x^(-a+1)/(-a+1))*exp(-2*x^(-a+1)/(-a+1))/((a+1)*(-3+a))-2^(-(3*a-1)/(a-1))*(1/(-a+1))^(-(a+1)/(a-1))*x^(2*a)*WhittakerM(-(a+1)/(a-1)+1/(a-1)+1, -1/(a-1)+1/2, 4*x^(-a+1)/(-a+1))*(-a+1)^2*(x^(-a+1)/(-a+1))^(1/(a-1))*exp(-2*x^(-a+1)/(-a+1))/((a+1)*(-3+a)))/(-a+1))^(1/2)+x^(-a), _C[1] = exp((4*I)*Im(1/(a-1)))*infinity, parametric = false
 #(limit,2): return map(thisproc,_passed)

 limit called with arguments: y(x), _C[1] = exp((4*I)*Im(1/(a-1)))*infinity, parametric = false
 #(limit,33): error "invalid limiting point"

Error, (in dsolve) invalid limiting point

 locals defined as: ddir = ddir, dexpr = y(x), fexpr = fexpr, r = r, x = _C[1], fL = fL, L = exp((4*I)*Im(1/(a-1)))*infinity, efloat = efloat, lfloat = lfloat, ind_dexpr = ind_dexpr, ind_L = ind_L, lexpr = lexpr, t = t, limr = limr, liml = liml, pt = (_C[1] = exp((4*I)*Im(1/(a-1)))*infinity), inertfunctions = {}, limitX = limitX, parameters = parameters, Y = Y, limc = limc, cexpr = cexpr, texpr = texpr, bexpr = bexpr, limt = limt, limb = limb, param = param, c = c, N = N, Z = Z, P = P, o = o, e = e, uneval = uneval, i = i, A = A, cond = cond, ll = ll, rr = rr

 


 

Download internal_error_instead_of_no_solution.mw

I am making changes in my code in order to make it work with Grid. This involves making many modules I had export on them as local.

I have lots of code of this form

use toX=A:-some_very_long_module_name:-toX in
local B := module() 
       export foo:=proc()
            toX(...);
       end proc;
end module;
end use;

This is done so I do not have to type A:-some_very_long_module_name:-toX() all the time as toX() is a very common call I make all over the place in many different modules.

This was working fine, except when I now changed some_very_long_module_name module to be local.

I really do not want to change all my code and change toX(...) to the explicit fully qualified name  some_very_long_module_name:-toX(....)

I could probably look into using alias instead, but I do not like aliases.

But before doing this, any one knows why this now makes Maple not happy? And if it possible to make use....end use while keep this long named module local?

Below is work sheet showing 4 examples. The first one is how I had things before, where the module was export.

The second and third examples showing the problems that show up when changing the module to local.

The last one showing it works if I remove use...end use and just type the full long name.

my goal is to keep this long named module local, but still use  use...end use. around other modules which needs to make calls to it. Just to safe typing, that is all. 

Any ideas to try are welcome. 

 

restart;

 

Original code work, but module has to be export

 

A := module()

  export main_entry:=proc()
     B:-foo();
  end proc;

  export some_very_long_name:= module() #NOTICE, export
        export toX:=proc(n::integer)::integer;
              n+1;
        end proc;
  end module;

  use toX=A:-some_very_long_name:-toX in  #works now
  local B:= module()
     export foo:=proc()
         toX(1);
     end proc;
  end module;
  end use;

end module;

_m1906974412096

A:-main_entry()

2

 

Example 1 where it now fails, since changed to local

 

A := module()

  export main_entry:=proc()
     B:-foo();
  end proc;

  local some_very_long_name:= module() #NOTICE, now local
        export toX:=proc(n::integer)::integer;
              n+1;
        end proc;
  end module;

  use toX=A:-some_very_long_name:-toX in
  local B:= module()
     export foo:=proc()
         toX(1);
     end proc;
  end module;
  end use;

end module;

_m1907025773216

A:-main_entry()

Error, (in foo) module does not export `some_very_long_name`

 

Example 2 remove A:- in the use call

 

A := module()

  export main_entry:=proc()
     B:-foo();
  end proc;

  local some_very_long_name:= module() #NOTICE, now local
        export toX:=proc(n::integer)::integer;
              n+1;
        end proc;
  end module;

  use toX= some_very_long_name:-toX in #notice, removed A:-
  local B:= module()
     export foo:=proc()
         toX(1);
     end proc;
  end module;
  end use;

end module;

Error, (in anonymous procedure created in anonymous module instantiated by anonymous module) nameless local variable in procedure

 

 

 

 

Example 3. One solution is to type the full name and remove use....end use; But I am trying to avoid this.

 

A := module()

  export main_entry:=proc()
     B:-foo();
  end proc;

  local some_very_long_name:= module() #NOTICE, now local
        export toX:=proc(n::integer)::integer;
              n+1;
        end proc;
  end module;
  
  local B:= module()
     export foo:=proc()
         some_very_long_name:-toX(1); #this works
     end proc;
  end module;


end module;

_m1907023851968

A:-main_entry()

2

 


 

Download trouble_with_use.mw

page 37 of book Symmetry Methods for Differential Equations by Hydon gives this example

When I wanted to verify it using Maple., symgen did not find these symmetries. Only when I give it using HINT the exact form it find them.  


 

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 1843 and is the same as the version installed in this computer, created 2025, January 25, 22:5 hours Pacific Time.`

libname;

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

restart;

ode:=diff(y(x),x) = (y(x)^3+y(x)-3*x^2*y(x))/(3*x*y(x)^2+x-x^3)

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

the_syms:=DEtools:-symgen(ode)

the_syms:=DEtools:-symgen(ode,'way'='all')

the_syms:=DEtools:-symgen(ode,'way'='formal')

#only when I give it the exact general form, it finds them !
the_syms:=DEtools:-symgen(ode,'HINT'=[a*y^3+b*y-c*x^2*y,d*x^3-e*x-f*x*y^2])

[_xi = -3*x^2*y+y^3+y, _eta = x*(x^2-3*y^2-1)]

 


 

Download why_no_syms_feb_10_2025.mw

Is this expected? Should it not have found them on its own?

Is it possible Maple internally does not automatically try Ansatz  of polynomials higher than quadratic to keep computation time low?   If so, I wonder if there is a way to tell it to try cubic or higher orders (like tryhard) option but for symgen?  I will search help more to see if there is a way to do this...

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

First 8 9 10 11 12 13 14 Last Page 10 of 199