MaplePrimes Questions

This seems like a very simple questaion, but I have been spinning my wheels trying to find the answer.

Is there a single command the will return a list of all symbols used in a symbolic expression?

Thank you, David

I want to check whether the last expression is zero symbolically in maple. I am trying to learn how to calculate symbolically in Maple. Any suggestion would be very appreciated.



[`*`, `.`, Annihilation, AntiCommutator, Antisymmetrize, Assume, Bra, Bracket, Check, Christoffel, Coefficients, Commutator, CompactDisplay, Coordinates, Creation, D_, Dagger, Decompose, Define, Dgamma, Einstein, EnergyMomentum, Expand, ExteriorDerivative, Factor, FeynmanDiagrams, FeynmanIntegral, Fundiff, Geodesics, GrassmannParity, Gtaylor, Intc, Inverse, Ket, KillingVectors, KroneckerDelta, LeviCivita, Library, LieBracket, LieDerivative, Normal, NumericalRelativity, Parameters, PerformOnAnticommutativeSystem, Projector, Psigma, Redefine, Ricci, Riemann, Setup, Simplify, SortProducts, SpaceTimeVector, StandardModel, SubstituteTensor, SubstituteTensorIndices, SumOverRepeatedIndices, Symmetrize, TensorArray, Tetrads, ThreePlusOne, ToContravariant, ToCovariant, ToFieldComponents, ToSuperfields, Trace, TransformCoordinates, Vectors, Weyl, `^`, dAlembertian, d_, diff, g_, gamma_]


[`&x`, `+`, `.`, ChangeBasis, ChangeCoordinates, Component, Curl, DirectionalDiff, Divergence, Gradient, Identify, Laplacian, Nabla, Norm, Setup, diff]






sum((1/2)*Physics:-Vectors:-Norm(p_[n])^2/m+U(q_[n]), n = 1 .. s)+(1/2)*(sum(sum(V(q_[i]-q_[j]), j = i .. s), i = 1 .. s))



sum((1/2)*Physics:-Vectors:-Norm(p_[n])^2/m+U(q_[n]), n = s+1 .. N)+(1/2)*(sum(sum(V(q_[i]-q_[j]), j = s+1 .. N), i = s+1 .. N))








I do not remember is this was asked before.

In other OOP languages such as Java, it allows one to name object variable name same as method name. I found this example on the net for java to illustrate

class Test {

  private boolean isVal;

  public boolean isVal() {
      return isVal;


In Maple, this is not allowed. So now I have to come up with new name for either the method or the variable that returns that hidden internal variable.

Here is an example

  option object;
  local is_valid::truefalse:=false;
  export is_valid::static:=proc(_self,$)::truefalse;
    return _self:-is_valid;
  end proc;
end module;

THis gives error

Error, (in A) exported variable `is_valid` cannot be multiply declared

It will be nice if Maple allows this. For now one has to rename either the variable or the method. Which is little annoying.

Is this something that could  be easily added to Maple in a future release?

I changed today my code to use DEtools:-odeadvisor(ode,y(x),[linear]); to check that the ode is linear or not before calling DEtools:-convertAlg 

The problem is that sometimes the advisor returns _linear on what is not linear ode (at least the way it is originally written). Here is an example

              (x+y(x))*diff(y(x),x) = 0;

From help page:


In the event that convertAlg cannot isolate for the proper list form (for instance, if the DE is not a linear ODE) then FAIL is returned.


So now I am worried  that using odeadvisor to check for linear ode is not the right method.

Is there a build-in method in Maple to check if an ode is linear or not? (I do have my own code to do this, but I thought it is better to use a buildin method, as it will be more robust).

Should DEtools:-odeadvisor(ode,y(x),[linear]) have returned _linear in this case?


`Standard Worksheet Interface, Maple 2022.1, Windows 10, May 26 2022 Build ID 1619613`

ode:=(x+y(x))*diff(y(x),x) = 0;
#check if linear ODE

(x+y(x))*(diff(y(x), x)) = 0







In the website there is an animation of an insect tracing a path on a torus while walking "forward". The caption to the animation says that the path is then by definition a geodesic.

I would like to duplicate this animation in Maple (and other "walking forward" geodesics on other surfaces) which seems to require an exact definition of walking forward but I cannot find such a definition on this or any other website.

Also, I thought that a geodesic is the shortest distance between two points in space, but no such end points are shown in the website's animation. Then how can the word geodesic apply to the insect's path?

Hi senior, I am using Maple 2022 version. I am facing a issue regrading opening of maple worksheet. If connected with wifi then maple worksheet will open and work properly, while i disconnected the internet, maple crashed and pop up a message to activate license again..

How do we truncate a polynomial in Maple, that is, obtain only the terms of degree <= n?

For example, if 


then the truncation [P(x)]4 is


and the truncation [P(x)]is


dAlmbert ode has the form


Also from Maple own help page, it agrees with Wikipedia and says:


Now, given this ode


Then clearly the above is not dAlmbert. Right? it is missing the x. But odeadvisor says it is:


What Am I missing here?


These are the rules I know about this ode. For y=x f(p)+ g(p). 

g(p) can be zero, yes, but in this case, f(p) has to be nonlinear in p for it to be dAlembert (else it will be either separable or linear.

I did not think f(p) can be zero and it remains dAlermber, even if g(p) remains nonlinear in p. So y=g(p) can not be dAlembert, even if g(p) is nonlinear.

May be Maple uses its own definition of dAlembert?. I do not know. This will be new definition to me. Is there a reference that mentions this case of y=g(p) classified as dAlembert for nonlinear g?

Maple 2022.1 on windows 10

Using plot3d(..., style=surfacecontour, ...) or contourplot3d(...) displays wrong level curves when some axis are switched to a log mode.




`Standard Worksheet Interface, Maple 2015.2, Mac OS X, December 21 2015 Build ID 1097895`


X := (0.4000000000e-4*(-R+80.00))/(R*(0.4e-1+M__a)):

plot3d(X, R=0..10, M__a=10^0..10^4, style=surfacecontour, color=gold)


plot3d(X, R=0..10, M__a=10^0..10^4, axis[2]=[mode=log], axis[3]=[mode=log], style=surfacecontour, color=gold)


  plots:-contourplot3d(X, R=0..10, M__a=10^0..10^4, axis[2]=[mode=log], axis[3]=[mode=log], color=red),
  plot3d(X, R=0..10, M__a=10^0..10^4, style=surface, color=gold)





The problem is not dramatic because there is a workaround.



`Standard Worksheet Interface, Maple 2015.2, Mac OS X, December 21 2015 Build ID 1097895`


X := (0.4000000000e-4*(-R+80.00))/(R*(0.4e-1+M__a)):

fig := plot3d(X, R=0..10, M__a=10^0..10^4, style=surfacecontour, color=gold):
Tr  := plottools:-transform((x, y, z) -> [x, log[10](y), log[10](z)]):
plots:-display(Tr(fig), axis[2]=[tickmarks=[seq(i=10^i, i=0..4)]], axis[3]=[tickmarks=[seq(i=nprintf("%1.0e", 10.^i), i=-7..-1)]])





I've attached a maple file (.mw). After solving the first order condition of SW expression, I tried to obtain an optimal point for en. To do that I used solve API, and obtained a solution in rootof. I want to comment on the relationship of en with other parameters like A, theta, zeta, etc. Therefore, I want to understand the interpretation of rootof and how analytically I can simplify it further if possible.


SW := (1/6)*a*(8*sqrt(epsilon[n]*theta[n]*a)*Zeta[n]+3*a*tau-3*a)+(1/3)*e[n]*(-beta[n]*e[n]^2+3*delta[n]*A+4*sqrt(e[n]*theta[n]*A))





Opt_effort_FOC := diff(SW, e[n])





solve(Opt_effort_FOC = 0, e[n])






I know that this is a stupid question but I cannot find how to do the dyadic product of two matrix. Those matrix could be two tensor matrix and I need to do this multiplication:

Thank you in advance for your help.



    I am regularly using tabled data for things like material properties, or other tabled look-up data from induustry or custom datasets.

    I have not used workbooks within Maple and yet see that exel files or other data sets can be "connected(?)" in the workbook tree.  Is this helpful?

    What is the best practice view of connecting to DB data and looking up variables that repeat project to project or worksheet to worksheet - without pulling into memory the full datasets for each ref call?

All thoughts appreciated.   

P.S., Tables vs. dataframes are a slight confusing matter also.  The access to the cell info seems different based on dataframe/table/matrix type.  I have no problems with matrix element access.


"object at address is binary"


The following code is attempting to pass 'debug' through 2 procedures

p1 := proc(a, b, {debug::truefalse := false}) print("p1", debug); a + b; end proc;
p2 := proc(a, b, {debug::truefalse := false}) print("p2", debug); p1(a, b, 'debug' = true); end proc;
p2(1, 2, 'debug' = true);

The result I get is 

                           "p2", true

                          "p1", false


How can I get the value of debug in my call statement to p2 to be passed to p1?



I wanna export data from maple to excel and I tried this:

ExcelTools:-Export(op([1, 1], plots:-display( convert( ans1[12..14,3], list))));

I was expecting 4 columns including z vector and 3 columns from ans1[12..14,3] but got only 2

Please any help?

3 4 5 6 7 8 9 Last Page 5 of 2156