MaplePrimes Questions

Search Questions:

For a numericial integration I want to check if all physical parameters are given in SI base units (before stripping of the units for the integration). Right now I am doing this
 

restart

 

Parameters

H = 0.1e-1*Unit('m'), R = 0.6e-2*Unit('m'), r_sub = 0.3e-2*Unit('m'), k = .540*Unit('W'/('m'*'K')), rho = 1060.0*Unit('kg'/'m'^3), Cp = 3745*Unit('J'/('kg'*'K')), Q_flux = 5000*Unit('W'/'m'^2), T_amb = 0*Unit('K'), Nz = 20, Nr = 20, t_final = 30*Unit('s'), t_step = Unit('s'), test_1 = Unit('kW'), test_2 = 2*Unit('N')

H = 0.1e-1*Units:-Unit(m), R = 0.6e-2*Units:-Unit(m), r_sub = 0.3e-2*Units:-Unit(m), k = .540*Units:-Unit(W/(m*K)), rho = 1060.0*Units:-Unit(kg/m^3), Cp = 3745*Units:-Unit(J/(kg*K)), Q_flux = 5000*Units:-Unit(W/m^2), T_amb = 0, Nz = 20, Nr = 20, t_final = 30*Units:-Unit(s), t_step = Units:-Unit(s), test_1 = Units:-Unit(kW), test_2 = 2*Units:-Unit(N)

(1)

H: length of rod
R: outer radius
r_sub: outer radius of heat flux
k: conductance
ρ: density
Cp: heat capacity
Q_flux: heat flux
T_amb: initial Tempearture
Nz: number of axial grid points
Nr: number of radial grid points
t_final: integration time
t_step: sampling interval for temperature fields

test_1: unit given in kilos
test_2: unit given in derived base units

alpha = k/(rho*Cp); simplify(subs(H = 0.1e-1*Units:-Unit(m), R = 0.6e-2*Units:-Unit(m), r_sub = 0.3e-2*Units:-Unit(m), k = .540*Units:-Unit(W/(m*K)), rho = 1060.0*Units:-Unit(kg/m^3), Cp = 3745*Units:-Unit(J/(kg*K)), Q_flux = 5000*Units:-Unit(W/m^2), T_amb = 0, Nz = 20, Nr = 20, t_final = 30*Units:-Unit(s), t_step = Units:-Unit(s), test_1 = Units:-Unit(kW), test_2 = 2*Units:-Unit(N), %))

alpha = 0.1360304305e-6*Units:-Unit(m^2/s)

(2)

α: thermal diffusivity

 

 


One way is to check whether the value of a physical parameter has not changed after simplification

`minus`(map(convert, simplify(`~`[rhs]({Cp = 3745*Units:-Unit(J/(kg*K)), H = 0.1e-1*Units:-Unit(m), Nr = 20, Nz = 20, Q_flux = 5000*Units:-Unit(W/m^2), R = 0.6e-2*Units:-Unit(m), T_amb = 0, k = .540*Units:-Unit(W/(m*K)), r_sub = 0.3e-2*Units:-Unit(m), rho = 1060.0*Units:-Unit(kg/m^3), t_final = 30*Units:-Unit(s), t_step = Units:-Unit(s), test_1 = Units:-Unit(kW), test_2 = 2*Units:-Unit(N)})), unit_free), map(convert, `~`[rhs]({Cp = 3745*Units:-Unit(J/(kg*K)), H = 0.1e-1*Units:-Unit(m), Nr = 20, Nz = 20, Q_flux = 5000*Units:-Unit(W/m^2), R = 0.6e-2*Units:-Unit(m), T_amb = 0, k = .540*Units:-Unit(W/(m*K)), r_sub = 0.3e-2*Units:-Unit(m), rho = 1060.0*Units:-Unit(kg/m^3), t_final = 30*Units:-Unit(s), t_step = Units:-Unit(s), test_1 = Units:-Unit(kW), test_2 = 2*Units:-Unit(N)}), unit_free))

{1000}

(3)

if is(`minus`(map(convert, simplify(`~`[rhs]({Cp = 3745*Units:-Unit(J/(kg*K)), H = 0.1e-1*Units:-Unit(m), Nr = 20, Nz = 20, Q_flux = 5000*Units:-Unit(W/m^2), R = 0.6e-2*Units:-Unit(m), T_amb = 0, k = .540*Units:-Unit(W/(m*K)), r_sub = 0.3e-2*Units:-Unit(m), rho = 1060.0*Units:-Unit(kg/m^3), t_final = 30*Units:-Unit(s), t_step = Units:-Unit(s), test_1 = Units:-Unit(kW), test_2 = 2*Units:-Unit(N)})), unit_free), map(convert, `~`[rhs]({Cp = 3745*Units:-Unit(J/(kg*K)), H = 0.1e-1*Units:-Unit(m), Nr = 20, Nz = 20, Q_flux = 5000*Units:-Unit(W/m^2), R = 0.6e-2*Units:-Unit(m), T_amb = 0, k = .540*Units:-Unit(W/(m*K)), r_sub = 0.3e-2*Units:-Unit(m), rho = 1060.0*Units:-Unit(kg/m^3), t_final = 30*Units:-Unit(s), t_step = Units:-Unit(s), test_1 = Units:-Unit(kW), test_2 = 2*Units:-Unit(N)}), unit_free)) <> {}) then print("Not all units are in SI base units") end if

"Not all units are in SI base units"

(4)

NULL

NULL


Download check_for_SI_base_units.mw

 

I am interested in simpler ways to perform the test. The statement is quite long and not easy to understand.

Given the size of the unit package, there might be a command that I have overlooked to check whether units are in SI base units. 

Have I missed test cases to make the check fool proof?


 
 

Has anyone developed an Agent Skill for Maple compliant with the Agent Skills Specification?

I frequently use Claude Code to create and edit Maple Documents. It does fine alone, but I found adding a script to do a syntax check eliminated a lot of content errors. I also presume some instructions on how it should read the Maple documentation will improve its reliability. Before I go about writing my own Skill against the specification, I just want to check if there is already one in use within the community.

I am trying to follow a series of substitutions used in a paper. I have given some examples of the substitutions. But I am having difficulty getting them to work. I know if all else fails I can manually recreate an expression with the substitution variables and then check backwards using eval(f,vals).
Would appreciate any insight on substitution techniques here.
 

restart

 

sidrels := [a*c - b^2 = Delta, a + c - 2*b = d, a - b = c__bar, a - c = b__bar, c - b = a__bar];

[a*c-b^2 = Delta, a+c-2*b = d, a-b = c__bar, a-c = b__bar, c-b = a__bar]

(1)

vals:='rhs=lhs'~(sidrels)

[Delta = a*c-b^2, d = a+c-2*b, c__bar = a-b, b__bar = a-c, a__bar = c-b]

(2)

t1:=a + c - 2*b;
simplify(t1,sidrels); #this should be d

a+c-2*b

 

d

(3)

t2:=Vector[column](3, [-a + b, c - b, 0]);
simplify(t2,sidrels) ; # This should be <-c__bar,a__bar,0> or <c__bar,-a__bar,0,>r

Vector(3, {(1) = -a+b, (2) = c-b, (3) = 0})

 

Vector[column](%id = 36893490321805397396)

(4)

t3:=normal(1 - b^2/(a*c));

(a*c-b^2)/(a*c)

(5)

simplify((5),sidrels); # This should be Delta/(a*c)

Delta/(b^2+Delta)

(6)

simplify(numer((5)),sidrels,'mindeg')/(denom((5)) ); # This works

 

Delta/(a*c)

(7)

t4:=[(-b^2 + b*c)/(a*c - b^2), (a*b - b^2)/(a*c - b^2)]

[(-b^2+b*c)/(a*c-b^2), (a*b-b^2)/(a*c-b^2)]

(8)

simplify(t4,sidrels,'mindeg');# this should be [(b*a__bar)/Delta, (b*b__bar)/Delta]

[-b*(-c+b)/Delta, b*(a-b)/Delta]

(9)

t5:=simplify(Vector[column](3, [3*b*c__bar - Delta, -3*a__bar*b + Delta, b*(-c__bar + a__bar)]))

Vector(3, {(1) = 3*b*c__bar-Delta, (2) = -3*a__bar*b+Delta, (3) = b*(-c__bar+a__bar)})

(10)

t5[3]:=simplify(t5[3],sidrels)  ;#This should be b*b__bar

 

-a__bar^2+(2*b+d)*a__bar-Delta

(11)

t5

Vector(3, {(1) = 3*b*c__bar-Delta, (2) = -3*a__bar*b+Delta, (3) = -a__bar^2+(2*b+d)*a__bar-Delta})

(12)

subs(sidrels[-2],b*(-c__bar + a__bar))

b*(-c__bar+a__bar)

(13)

algsubs(sidrels[-2],b*(-c__bar + a__bar))

b*(-c__bar+a__bar)

(14)

 


 

Download 2026-07-29_Q_Simplifications_and_Substitutions.mw

I am a long-time user of Joe Riel's maplev mode in emacs. Upgraded emacs to version 30.2 and now it does not work anymore because of difficulties with something called abbrevlist. This is on MacOS. I am already on the last version of maplev.

Anyone have an idea what is going on and what to do? Somehow for me referencing a username no longer is possible (I get a blocking box with a spinner upon entering the at sign) so I can't create a notification for Joe.

TIA,

Mac Dude.

In the attached file, I'd like to solve an ODE as an exercise. Only the "series" option yielded a solution. How can the length of the result series be controlled? Is there a package that leads to a "closed" solution – even using well-known transcendental functions?

restart

ode := (1+f(x))*(diff(f(x), x, x)) = 1+x

(1+f(x))*(diff(diff(f(x), x), x)) = 1+x

(1)

ics := f(0) = 1, (D(f))(0) = 0

f(0) = 1, (D(f))(0) = 0

(2)

dsolve({ics, ode}, f(x), series)

f(x) = series(1+(1/4)*x^2+(1/12)*x^3-(1/192)*x^4-(1/240)*x^5+O(x^6),x,6)

(3)

``

Download test.mw

This piecewise function with units

q := r -> piecewise(0 <= r and r < 0.1*Unit('mm'), 5*Unit(('kW')/'m'^2));

returns this output

Is it possible to get the output printed without ticks and the units in roman?

In the attached file, I would like to calculate the expressions for the function f(n,x) using a recursion for a given index range, e.g., n=3..15. I would appreciate any advice on this.
 

NULL

restart;

kernelopts(version);

`Maple 2026.1, X86 64 WINDOWS, Jun 04 2026, Build ID 2018217`

(1)

f(1,x):=x;

x

(2)

f(2,x):=2*x + 2*sin(x);

2*x+2*sin(x)

(3)

f(n,x):=2*f(n-1,x)-f(n-2,x)+2*sin((n-1)*x)/(n-1);

2*f(n-1, x)-f(n-2, x)+2*sin((n-1)*x)/(n-1)

(4)

f(3,x):=eval(f(n,x),n=3);

3*x+4*sin(x)+sin(2*x)

(5)

f(4,x):=eval(f(n,x),n=4);

4*x+6*sin(x)+2*sin(2*x)+(2/3)*sin(3*x)

(6)

NULL

NULL


 

Download test24c.mw

 

Responses from the AI assistant in Maple2026 can be copied directly into a Maple Document or Worksheet, Is there a process which allows one to similarly import a external ChatGPT conversation. I have Maple MCP configured in my ChatGPT account.

So the problem I encountered is when I try to assign ranking of variables of ODE in ThomasDecomposition, the indexed variables are not allowed. For instance, for an ODE system containing a[0], a[1], a[2] as dependent variables, if I assign:
R := Ranking([x],[a[0],a[1],a[2]])
It throws an error:
This is going to be inconvenient when I have to dynamically solve ODE system within a function call, especially when the system is nonlinear and algebraically closed(no integration constants in solutions) and calling DifferentialThomas in dsolve will be slow. I want to know how to resolve this.

How to integrate this function (n::posint) :
f := (n, x) -> (1 - cos(n*x))/(1 - cos(x))

Maple is not returning a result. It seems unable to establish the connection with the Dirichlet kernel. Is there a solution that doesn't require forcing a decomposition into a sum of cosinus?

Thank you for your help.

Best regards.

In the context of numerical integration of partial differential equations I am looking for tools to create difference equations for the numerical integration of PDE's. Ideally the desired integration scheme could be given as an input.

The only command that I am aware of is the DiffEquation command from the DynamicSystems package (see ?DynamicSystems,DiffEquation) which is limited to linear time invariant systems and only provides a simple forward integration scheme.

Any insights/examples into the topic of numerical integration of pde's with Maple beyond pdsolve/numeric capabilites is very much appreciated. (I know that Maple comes with advanced numerical solvers for ODE's. MapleSim uses such solvers to integrate systems of ODE's. This seems to be, in terms of computation, close to what I am looking for.)

Pretty much what the title says. I am a student and I've worked with B&R Automation Studio, which is a SCADA software, with the physical automation components in the lab in college. Now that I'm on the summer break, it would be great to continue this learning via the B&R connector that Maple offer, to create a "digitial twin". However, there doesn't seem to be any information as to whether MapleSim is actually included in the student edition, and whether the connector is included too.

Thanks

I am pretty new to pdsolve.

?pdsolve/numeric states

PDEsys - single or set or list of time-dependent partial differential equations in two independent variables

This could be interpreted in a way that problems with 3 independent variables can be handled (time + two others).

The rest of the helppage only describes two independent variables and does not mention time.

In case the above interpretation is wrong, I have two questions:

  • If only two independent variables can be treated, why is time-depencency mentioned at all?
  • Is it possible to integrate the PDE of an axially heated rod of finite length and radius with the help of pdsolve where on one end of the rod a heat flux q=q(r) is applied?

Any links to similar problems solved with Maple (not necessary with pdsolve) are very much appreciated.

Edit: Updated BCs

PDE := diff(T(r, z, t), t) = alpha*(diff(T(r, z, t), r, r)+(diff(T(r, z, t), r))/r+diff(T(r, z, t), z, z))

diff(T(r, z, t), t) = alpha*(diff(diff(T(r, z, t), r), r)+(diff(T(r, z, t), r))/r+diff(diff(T(r, z, t), z), z))

(1)

Updated BC

BC1 := -k*(D[2](T))(r, 0, t) = q; BC2 := (D[2](T))(r, L, t) = 0; BC3 := (D[1](T))(R, z, t) = 0; BC4 := (D[1](T))(0, z, t) = 0; IC := T(r, z, 0) = 0

T(r, z, 0) = 0

(2)

NULL

Corrected original BC (this is a different case of constant external temperature)

BC1 := -k*(D[2](T))(r, 0, t) = q; BC2 := T(r, L, t) = 0; BC3 := T(R, z, t) = 0; BC4 := (D[1](T))(0, z, t) = 0; IC := T(r, z, 0) = 0

T(r, z, 0) = 0

(3)

NULL

Download 2d_BVP.mw

Hello,

I want to define these two equations.I know how I can define a Tensor, but how can I use a Tensor with tue diffrent indices. In one case I need u[i] , but I need also u[j]. I know also, that I need an extra command if I want to use latine letters. Can somebody write this complete for me ?

Thank you 

Hello,

I was wondering whether there is a way to achieve the same result as the code below, but using threads instead of Grid.

The problem is the following. Given a very large list of models (the example below contains only two models), I would like to return a set of sets using a simpler notation for the alpha parameters.

Example

models:=[[y^2*z*alpha[1, 17], z^3*alpha[2, 19], x*z^2*alpha[3, 15] + z^3*alpha[3, 19]], [y^2*z*alpha[1, 17], z^3*alpha[2, 19], x*z^2*alpha[3, 15] + y*z^2*alpha[3, 18]]]:

Desired output

{{[1, 17], [2, 19], [3, 15], [3, 18]}, {[1, 17], [2, 19], [3, 15], [3, 19]}}

The order of the elements does not matter, but the final result should be a set of sets.

The code I am currently using is

svars:={x,y,z}:
Grid:-Set('svars'):
convert(Grid:-Map(w->map(v->[op](v),indets(w,name) minus svars),models),set)

Unfortunately, indets is not listed as thread-safe, so I cannot simply replace Grid:-Map with Threads:-Map.

Is there a thread-safe alternative (or a completely new way of doing the same thing) that would achieve the same result?

Many thanks.

1 2 3 4 5 6 7 Last Page 1 of 2466