Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

Was just pondering this idea and posted this in the post topic for discussion. 

Each Maple finished version of Maple may still have certain bugs that will not be updated for that version, so I am suggesting (I think anyone could implement it) that if there is a workaround, one could wrap it up in something I would call a patch package updateable by us users we could update here on mapleprimes.  It would be good for people who haven't upgraded or can't upgrade due to costs etc...

For example, there was recent issue with pdsolve that was fixed quite quickly in the seperate updateable Physics package.  Things could be done similarily that might work with other workarounds using this patch package idea. 

If anyone thinks this is good or even viable idea then lets implement it.  I envisioned it with just this one rule to follow - the name of the patch package would reflect the version we are patching (ie. with(patch12) or with(patch2016) for Maple 12 and Maple 2016 respectively etc...)  We could make these patch packages available in this post or start another.

As I said, I'm just throwing the idea out there.  Thoughts?


I am plotting a three dimensional plot within a range in maple. There are two variables x and y. Third dimension is the objective function ( Z).

On this three dimensional plot, I want to show the point ( preferably by some colour, say red) which have maximum objective value. How it can be done in maple?

Also, Can I show the maximum objective function value (Z) and its coordinates (x,y) on the graph.

Thanks and regard,


I want ot add an annotation to a plot using the drawing facility. Then I export the plot. My problem is that I cannot increase the viewport of the plot without also increasing the size of the plot. For example the code:

plot(20-(20*(1/10))*P, P = 0 .. 10, labels = ["Q", "P"], scaling = constrained, tickmarks = [5, 3], size = [600, 400])


produces this plot:

I have constrained the plot and used the size option which together have the side effect of giving me more horizontal space. But this is a wretched hack! I want to size the viewport of the plot so I can write on it.


For sqrt(-1), Maple returns I. Why not -I? I understand why in general Maple does not, and should not, return both signs, because sqrt is defined with a branch cut - specifically out along the negative real axis:


But as +I and -I lie symmetrically around the branch cut, I do not understand why +I should be chosen in favor of -I. Neither the square of +I or of -I crosses the branch cut, which is,  I guess, the standard way to select a unique value, although both squares end up on the branch cut itself - the latter fact leading to the following more general consideration:

I do not understand why the square root of any negative real number (the above being just a specific case) should at all be assigned any meaning when lying as they do on the branch cut itself. I think it would be more sensible if Maple raised an error, telling you that the branch cut needs to be changed/moved if any value is to be assigned. Which leads me to the following question:

Can the branch cut of the logarithm, and thus of sqrt as well, be changed/moved? I would like it to lie out along the negative imaginary axis.

Update I: Concerning -1 lying on the branch cut itself, there is no issue, see my 'ups' in the reply to the answer by John May. But redefining the branch cut is still relevant.

Update II: Perhaps the issue raised is not all that trivial, after all. At least, it is "a subject of papers and debate", as Alejandro Jakubi formulated it in an email to me, pointing me to the article 'Function evaluation on branch cuts', by Rich and Jeffrey.



When I use simplify((t-1)/(-1+2*t)) it returns the same thing I entered, how come Maple doesn't return the actual simplified version that is (1/2)-(1/(2*(2*t-1))), even when using expand, it doesn't return anything really that good.


Do anyone know a good idea to get the desired result via Maple? Thank you. 

I am stumped with this trivial puzzle.  Let
z := arctan(x/sqrt(a^2-x^2));
How do we simplify z to.

I tried all sorts of tricks with simplify(...) and convert(...), with assumptions, but did not get anywhere.  Any clues?

Versions: Maple 2016 and 2017.

I was trying to answer a question by torabi 25, August 14, 2017 to speed up his calculations. I got this idea of converting the original code to a procedure - that was not easy, run the procedure and obtain a value of time() to establish a baseline, and making sure the answer from the procedure was the same as from torabi 25. So far so good. Then I would compile the procedure, execute it, and get another value for time(). Hopefully the compiled procedure will be faster than the uncompiled procedure. I am close, but - please see if you can fix my compiler error. Thanks!



pa := proc (k::integer, h::float, N::float, nu::float, E_m::float, E_c::float, rho_m::float, rho_c::float, d::(Matrix()))::float; local lambda_m::float, lambda_c::float, mu_m::float, mu_c::float, Z::float, U::float, S::float, e2::float, f::float, W::float, z::float, b::integer, alpha::integer, beta::integer; lambda_m := nu*E_m/((1+nu)*(1-2*nu)); lambda_c := nu*E_c/((1+nu)*(1-2*nu)); mu_m := E_m/(2+2*nu); mu_c := E_c/(2+2*nu); Z := rho_m+(rho_c-rho_m)*(1/2+z/h)^N; U := lambda_m+(lambda_c-lambda_m)*(1/2+z/h)^N; S := mu_m+(mu_c-mu_m)*(1/2+z/h)^N; e2 := 0.; for alpha from 0 to k-2 do for b from 0 to k-2 do for beta from 0 to k-1 do f := 2*S*d[beta+1, alpha+1]*W(beta)*sqrt(alpha+1/2)*orthopoly:-P(alpha, z)*d[2, b+1]*sqrt(b+1/2)*orthopoly:-P(b, z); e2 := e2-(int(f, z = -(1/2)*h .. (1/2)*h)) end do end do end do end proc


k := 6; h := 1.; N := .5; nu := .3; E_m := 7.0*10^10; E_c := 3.80*10^11; rho_m := 2702.; rho_c := 3800.; d := Matrix([evalf([0, 0, 0, 0, 0, 0, 0, 0]), evalf([sqrt(3), 0, 0, 0, 0, 0, 0, 0]), evalf([0, sqrt(15), 0, 0, 0, 0, 0, 0]), evalf([sqrt(7), 0, sqrt(35), 0, 0, 0, 0, 0]), evalf([0, sqrt(27), 0, sqrt(63), 0, 0, 0, 0]), evalf([sqrt(11), 0, sqrt(55), 0, sqrt(99), 0, 0, 0]), evalf([0, sqrt(39), 0, sqrt(91), 0, sqrt(143), 0, 0]), evalf([sqrt(15), 0, sqrt(75), 0, sqrt(135), 0, sqrt(195), 0])], datatype = float[8])

time(pa(k, h, N, nu, E_m, E_c, rho_m, rho_c, d))



pa(k, h, N, nu, E_m, E_c, rho_m, rho_c, d)



# Original Answer:        -3.192307692*10^11*W(1)+4.396880662*10^11*W(3)-1.474586301*10^11*W(5)-9.235575669*10^10*W(2)+1.979090105*10^11*W(4);NULL

cpa := Compiler:-Compile(pa)

Error, (in Compiler:-Compile) Array parameter types must specify a hardware datatype


time(cpa(k, h, N, nu, E_m, E_c, rho_m, rho_c, d))



cpa(k, h, N, nu, E_m, E_c, rho_m, rho_c, d)



Download for_(5).mw


Is there a routine available to derive the variable (i.e for any given z) for the standard normal loss function, L(z)?

If we know the value of L(z), how can z be determined?

There seems to be a bug with improper integration:




Substituting any number for x, or assuming x >= 0  (or x<=0) does give the correct result,

The problem also persists when assuming x>-1 (or x>-Maple_floats(MIN_FLOAT))

restart; d[1] := [2.36, 26.90], [2.75, 30.0], [3.14, 31.9], [3.53, 32.8], [3.93, 33.4], [4.32, 32.8], [4.71, 31.9]

[2.36, 26.90], [2.75, 30.0], [3.14, 31.9], [3.53, 32.8], [3.93, 33.4], [4.32, 32.8], [4.71, 31.9]



d[2] := [2.36, 32.40], [2.75, 34.90], [3.14, 36.90], [3.53, 38.00], [3.93, 38.40], [4.32, 37.8], [4.71, 36.5]

[2.36, 32.40], [2.75, 34.90], [3.14, 36.90], [3.53, 38.00], [3.93, 38.40], [4.32, 37.8], [4.71, 36.5]


d[3] := [2.36, 27.9], [2.75, 28.3], [3.14, 30.0], [3.53, 30.9], [3.93, 31.3], [4.32, 30.8], [4.71, 29.7]

[2.36, 27.9], [2.75, 28.3], [3.14, 30.0], [3.53, 30.9], [3.93, 31.3], [4.32, 30.8], [4.71, 29.7]


y := a*x^2+b*x+c; for i to 3 do d[i] := [d[i]]; c[i] := CurveFitting[LeastSquares](d[i], x, curve = y) end do




curve1 := [c[1], c[2]]; k[1] := [1, 2]; curve1p := [d[1], d[2]]; l[1] := "plot 1"

"plot 1"


curve2 := [c[2], c[3]]; k[2] := [2, 3]; curve2p := [d[2], d[3]]; l[2] := "plot 2"

"plot 2"


curve3 := [c[1], c[3]]; k[3] := [1, 3]; curve3p := [d[1], d[3]]; l[3] := "plot 3"

"plot 3"

Table 1


xlabel := "Brake Power"; ylabel := "Efficiency"



p1 := plot(curve1, x = 2.0 .. 5.0, labels = [xlabel, ylabel], labeldirections = ["horizontal", "vertical"], color = [black], linestyle = [1, 2], thickness = [3, 1], title = Title, caption = "Fig. 1 cool  Example 1", legend = ["curve1", "curve2"]); p2 := plot(curve1p, style = point, color = [black], symbol = [soliddiamond, box], symbolsize = 10); plots:-display(p1, p2)


p1 := plot(curve2, x = 2.0 .. 5.0, labels = [xlabel, ylabel], labeldirections = ["horizontal", "vertical"], color = [black], linestyle = [1, 2], thickness = [3, 1], title = Title, caption = "Fig. 1 cool  Example 1", legend = ["curve1", "curve2"]); p2 := plot(curve2p, style = point, color = [black], symbol = [box, point], symbolsize = 10); plots:-display(p1, p2)


p1 := plot(curve3, x = 2.0 .. 5.0, labels = [xlabel, ylabel], labeldirections = ["horizontal", "vertical"], color = [black], linestyle = [1, 2], thickness = [3, 1], title = Title, caption = "Fig. 1 cool  Example 1", legend = ["curve1", "curve2"]); p2 := plot(curve3p, style = point, color = [black], symbol = [soliddiamond, point], symbolsize = 10); plots:-display(p1, p2)



"for j from 1 to 3 do  print( Report on l[j]); for i in k[j] do x1(i):=solve((&DifferentialD;)/(&DifferentialD; x)c[i]);  y1(i):=eval( c[i], [x = x1(i)]):  print( Maximum brake thermal efficiency of,y1(i) "%"occurs at brake power value of , x1(i)kW);  end do;  end do;"

Maximum*brake*thermal*efficiency*of, HFloat(30.964188366461613)*"%"*occurs*at*brake*power*value*of, 3.886317459*kW





Can any one state the uses of mathcontainer?

1. It can store only one algebraic expression at a time?

2. Can it handle list of algebraic expressions?

3. Can it store list data points (x,y) for a list of curves?

4. Can there be any use for click to edit this component?

More than a simple Yes or No a simple example for each yes answer would be very helpful.

I enclose a document with list of coordinates for for three curves, expression for curve fitting, three expressions derived for these plot points (coordinates), a command for optimum y for each of the three curves (maximum y and corresponding x value), 

Thanks for answering.

Ramakrishnan V

Hey there. 

I recently had to install maple 2017, because the licensens for 2016 had expired. 

And in the new version, whenever i want to copy a matrix from a result, it gives me an _rtable, and a number. The result is the same, but it makes it harder to read and i am not able to edit values in this copied matrix. 

How do i change this?

I have an two arrays of elements Op1[i,j] with -5 <= i,j <= 5 and Op2[i,j] with 5<=i,j<= 35 . When I use surfdata like


it produces a plot with both the range of Op1 and Op2 between 0 and 1 (see Fig1).

I tried surfdata({0p1,Op2},-5..35,-5..35) but this only gave the range of the figure from -5 to 35, -5 to 35 but with both plots scaled so that they cover the whole range(see Fig2).

How do i make surfdata use different ranges on the same plot for both arrays?

Please can someone help with maple comand to obtain Jacobian elliptic functions particularly in code editing region?

I have an excel data file where data are in floating points of different decimals. I have made the following command which worked once. Second time it gives an error stating that one argumnet is expected, but receives three. How do I solve this problem. I want the data to be imported to data table in two decimal formats.

M1 := Import(evalf[2]("E:/A_PhD2017/Export_TO_Maple1.xlsx", "Sheet1", "A2:U8"));

Is it possible to compare two maple files, given that there are small changes between them?

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