Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

I noticed in object constructor I had to write  _self:-name  to refer to object own variable called name.  But inside a another proc I can use just name without having to add _self:- to it. It also works when adding _self:-

Is this becuase constructor is special proc, and the object is not yet full constructed?  Here is a MWE

restart;
person:=module()
    option object;
    local name::string:="";

    export ModuleCopy::static:= proc( _self::person, proto::person, the_name::string, $ ) 
            print("Enter  constructor");
           _self:-name:= the_name;

           #Why this fails here, but not in process proc? Is it because of special
           #case since done inside constructor?
           #print(name); 

           print(_self:-name);
    end proc;
 
   export process::static :=proc(_self,$)
     #here both cases work
     print(_self:-name);
     print(name);
   end proc;

end module;

#and now

p:=Object(person,"me")

The above works. But if I uncomment #print(name); inside the constructor, maple gives error

p:=Object(person,"me")
Error, static procedure `ModuleCopy` refers to non-static local or export `name::string` in surrounding scope

But this works with no error

p:-process()

                              "me"
                              "me"

But no such error when doing same thing inside a local static proc inside same module.

Is this special just for the constructor than one must use :-self ? Just wanted to make sure.

Maple 2022.1

Hi.

What wrong could be there with the color line?

restart:

with(plots):

equ1 := BesselJ(sqrt(17)/2, 10*sqrt(t)*sqrt(2))/t^(1/4) + BesselY(sqrt(17)/2, 10*sqrt(t)*sqrt(2))/t^(1/4):

equ2 := BesselJ(sqrt(17)/2, 10*sqrt(t)*sqrt(2))/t^(1/4) + 5*BesselY(sqrt(17)/2, 10*sqrt(t)*sqrt(2))/t^(1/4):

equ3 := BesselJ(sqrt(17)/2, 10*sqrt(t))/t^(1/4) + 5*BesselY(sqrt(17)/2, 10*sqrt(t))/t^(1/4):

tmax   := 30:
colors := ["Red", "Violet", "Blue"]:

p1 := plot([equ1, equ2, equ3], t = 0 .. tmax, labels = [t, T[2](t)], tickmarks = [0, 0], labelfont = [TIMES, ITALIC, 12], axes = boxed, color = colors):

ymin := min(op~(1, op~(2, op~(2, [plottools:-getdata(p1)])))):
ymax := max(op~(2, op~(2, op~(2, [plottools:-getdata(p1)])))):
dy   := 2*ymax:

legend1 := typeset(C[3] = 1, ` , `, C[4] = 1, ` , `, Omega^2 = 50):
legend2 := typeset(C[3] = 1, ` , `, C[4] = 5, ` , `, Omega^2 = 50):
legend3 := typeset(C[3] = 1, ` , `, C[4] = 5, ` , `, Omega^2 = 25):

p2 := seq(textplot([tmax-2, ymax-k*dy/20, legend||k], align=left), k=1..3):

p3 := seq(plot([[tmax-2, ymax-k*dy/20], [tmax-1, ymax-k*dy/20]], color=colors[k]), k=1..3):
display(p1, p2, p3, view=[default, -ymax..ymax], size=[800, 500])

Error, (in plot) invalid color specification: colors[1]

 

display(p1, p2, p3, view = [default, -ymax .. ymax], size = [800, 500])

(1)

 

Download Legend_Inside.mw

How can we export image with minimum size? I plot the solution and then export the image as an .eps file. But when I try to generate the generate the pdf file on Latex, the file size is too large. But when I plot the solutions on Matlab and export the images as .eps file, then Latex generate pdf file with samll size. Why Maple generate images of large sizes?

solution.mw

I want to plot the solutions of the equation (x-y)^2+(1-z)^2=0.

However, implicitplot3d is not able to plot them, at least using the default arguments. Any recommendations?

I know a priori that it is going to be a curve contained in a plane in case that makes this task easier.

NULL

Loading Student:-ODEs

xi^2*(diff(psi[m](xi), xi, xi))+2*xi*(diff(psi[m](xi), xi))+(xi^2-m*(m+1))*psi[m](xi) = 0

xi^2*(diff(diff(psi[m](xi), xi), xi))+2*xi*(diff(psi[m](xi), xi))+(xi^2-m*(m+1))*psi[m](xi) = 0

(1)

Student:-ODEs:-ODESteps(xi^2*(diff(psi[m](xi), `$`(xi, 2)))+2*xi*(diff(psi[m](xi), xi))+(xi^2-m*(m+1))*psi[m](xi) = 0, psi[m](xi))

"[[,,"Let's solve"],[,,xi^2 (((ⅆ)^2)/(ⅆxi^2) psi[m](xi))+2 xi ((ⅆ)/(ⅆxi) psi[m](xi))+(xi^2-m (m+1)) psi[m](xi)=0],["•",,"Highest derivative means the order of the ODE is" 2],[,,((ⅆ)^2)/(ⅆxi^2) psi[m](xi)],["•",,"Isolate 2nd derivative"],[,,((ⅆ)^2)/(ⅆxi^2) psi[m](xi)=((m^2-xi^2+m) psi[m](xi))/(xi^2)-(2 ((ⅆ)/(ⅆxi) psi[m](xi)))/xi],["•",,"Group terms with" psi[m](xi) "on the lhs of the ODE and the rest on the rhs of the ODE; ODE is linear"],[,,((ⅆ)^2)/(ⅆxi^2) psi[m](xi)+(2 ((ⅆ)/(ⅆxi) psi[m](xi)))/xi-((m^2-xi^2+m) psi[m](xi))/(xi^2)=0],["▫",,"Check to see if" xi[0]=0 "is a regular singular point"],[,"?","Define functions"],[,,[P[2](xi)=2/xi,P[3](xi)=-(m^2-xi^2+m)/(xi^2)]],[,"?",xi*P[2](xi) "is analytic at" xi=0],[,,([]) ? ()|() ? (xi=0)=2],[,"?",xi^2*P[3](xi) "is analytic at" xi=0],[,,([]) ? ()|() ? (xi=0)=-m^2-m],[,"?",xi=0 "is a regular singular point"],[,,"Check to see if" xi[0]=0 "is a regular singular point"],[,,xi[0]=0],["•",,"Multiply by denominators"],[,,(-m^2+xi^2-m) psi[m](xi)+2 xi ((ⅆ)/(ⅆxi) psi[m](xi))+xi^2 (((ⅆ)^2)/(ⅆxi^2) psi[m](xi))=0],["•",,"Assume series solution for" psi[m](xi)],[,,psi[m](xi)=(∑)a[k] xi^(k+r)],["▫",,"Rewrite ODE with series expansions"],[,"?","Convert" xi^m*psi[m](xi) "to series expansion for" m=0..2],[,,[]=(∑)a[k] xi^(k+r+m)],[,"?","Shift index using" k "->" k-m],[,,[]=(∑)a[k-m] xi^(k+r)],[,"?","Convert" xi*((ⅆ)/(ⅆxi) psi[m](xi)) "to series expansion"],[,,[]=(∑)a[k] (k+r) xi^(k+r)],[,"?","Convert" xi^2*(((ⅆ)^2)/(ⅆxi^2) psi[m](xi)) "to series expansion"],[,,[]=(∑)a[k] (k+r) (k+r-1) xi^(k+r)],[,,"Rewrite ODE with series expansions"],[,,a[0] (r+1+m) (r-m) xi^r+a[1] (r+2+m) (r-m+1) xi^(1+r)+((∑)(a[k] (r+1+m+k) (r-m+k)+a[k-2]) xi^(k+r))=0],["•",,a[0] "cannot be 0 by assumption, giving the indicial equation"],[,,(r+1+m) (r-m)=0],["•",,"Values of r that satisfy the indicial equation"],[,,r in {m,-m-1}],["•",,"Each term must be 0"],[,,a[1] (r+2+m) (r-m+1)=0],["•",,"Solve for the dependent coefficient(s)"],[,,a[1]=0],["•",,"Each term in the series must be 0, giving the recursion relation"],[,,a[k] (r+1+m+k) (r-m+k)+a[k-2]=0],["•",,"Shift index using" k "->" k+2],[,,a[k+2] (r+3+m+k) (r-m+k+2)+a[k]=0],["•",,"Recursion relation that defines series solution to ODE"],[,,a[k+2]=-(a[k])/((r+3+m+k) (r-m+k+2))],["•",,"Recursion relation for" r=m],[,,a[k+2]=-(a[k])/((2 m+3+k) (k+2))],["•",,"Solution for" r=m],[,,[psi[m](xi)=(∑)a[k] xi^(k+m),a[k+2]=-(a[k])/((2 m+3+k) (k+2)),a[1]=0]],["•",,"Recursion relation for" r=-m-1],[,,a[k+2]=-(a[k])/((k+2) (-2 m+1+k))],["•",,"Solution for" r=-m-1],[,,[psi[m](xi)=(∑)a[k] xi^(k-m-1),a[k+2]=-(a[k])/((k+2) (-2 m+1+k)),a[1]=0]],["•",,"Combine solutions and rename parameters"],[,,[psi[m](xi)=((∑)a[k] xi^(k+m))+((∑)b[k] xi^(k-m-1)),a[k+2]=-(a[k])/((2 m+3+k) (k+2)),a[1]=0,b[k+2]=-(b[k])/((k+2) (-2 m+1+k)),b[1]=0]]]6""

(2)

Solving for Sum(a[k]*xi^(k+m), k = 0 .. infinity)

 

q := a(k+2) = -a(k)/((2*m+3+k)*(k+2))

a(k+2) = -a(k)/((2*m+3+k)*(k+2))

(1.1)

``

When m =1

 

NULL

m[1] := eval(q, m = 1)

a(k+2) = -a(k)/((5+k)*(k+2))

(2.1)

A := rsolve({m[1], a(0) = 1, a(1) = 0}, a(k))

3*(k+2)*cos((1/2)*k*Pi)/GAMMA(k+4)

(2.2)

add(A*(eval(xi^(k+m), m = 1)), k = 0 .. 16)

xi-(1/10)*xi^3+(1/280)*xi^5-(1/15120)*xi^7+(1/1330560)*xi^9-(1/172972800)*xi^11+(1/31135104000)*xi^13-(1/7410154752000)*xi^15+(1/2252687044608000)*xi^17

(2.3)

``

When m =2

 

 

NULL

m[2] := eval(q, m = 2)

a(k+2) = -a(k)/((7+k)*(k+2))

(3.1)

A := rsolve({m[2], a(0) = 1, a(1) = 0}, a(k))

105*(k+4)*(k+2)*(k+6)*cos((1/2)*k*Pi)/GAMMA(k+8)

(3.2)

add(A*(eval(xi^(k+m), m = 2)), k = 0 .. 16)

xi^2-(1/18)*xi^4+(1/792)*xi^6-(1/61776)*xi^8+(1/7413120)*xi^10-(1/1260230400)*xi^12+(1/287332531200)*xi^14-(1/84475764172800)*xi^16+(1/31087081215590400)*xi^18

(3.3)

NULL

When m=3

 

NULL

m[3] := eval(q, m = 3)

a(k+2) = -a(k)/((9+k)*(k+2))

(4.1)

A := rsolve({m[3], a(0) = 1, a(1) = 0}, a(k))

105*(k+4)*(k+2)*(k+6)*cos((1/2)*k*Pi)/GAMMA(k+8)

(4.2)

add(A*(eval(xi^(k+m), m = 3)), k = 0 .. 16)

xi^3-(1/18)*xi^5+(1/792)*xi^7-(1/61776)*xi^9+(1/7413120)*xi^11-(1/1260230400)*xi^13+(1/287332531200)*xi^15-(1/84475764172800)*xi^17+(1/31087081215590400)*xi^19

(4.3)

NULL

When m=4

 

NULL

m[4] := eval(q, m = 4)

a(k+2) = -a(k)/((11+k)*(k+2))

(5.1)

A := rsolve({m[4], a(0) = 1, a(1) = 0}, a(k))

945*(k+4)*(k+8)*(k+2)*(k+6)*cos((1/2)*k*Pi)/GAMMA(k+10)

(5.2)

add(A*(eval(xi^(k+m), m = 4)), k = 0 .. 16)

xi^4-(1/22)*xi^6+(1/1144)*xi^8-(1/102960)*xi^10+(1/14002560)*xi^12-(1/2660486400)*xi^14+(1/670442572800)*xi^16-(1/215882508441600)*xi^18+(1/86353003376640000)*xi^20

(5.3)

``

When m=5

 

NULL

m[5] := eval(q, m = 5)

a(k+2) = -a(k)/((13+k)*(k+2))

(6.1)

A := rsolve({m[5], a(0) = 1, a(1) = 0}, a(k))

10395*(k+10)*(k+4)*(k+8)*(k+2)*(k+6)*cos((1/2)*k*Pi)/GAMMA(k+12)

(6.2)

add(A*(eval(xi^(k+m), m = 5)), k = 0 .. 16)

xi^5-(1/26)*xi^7+(1/1560)*xi^9-(1/159120)*xi^11+(1/24186240)*xi^13-(1/5079110400)*xi^15+(1/1401834470400)*xi^17-(1/490642064640000)*xi^19+(1/211957371924480000)*xi^21

(6.3)

NULL

Now solving  for Sum(b[k]*xi^(k-m-1), k = 0 .. infinity)

 

s := b(k+2) = -b(k)/((k+2)*(-2*m+1+k))

b(k+2) = -b(k)/((k+2)*(-2*m+1+k))

(7.1)

NULL

The final solution is the sum of 2 terms and I am doing it individually for 1st term. I think I am doing it wrong because answer did not match when comparing with textbook answer. Can anyone teach me or hint me compute the final series for m=1 to 10. An example of final series for m=1 would be helpful. 

Download ODE_sol.mw

Hello,

Attached is a simple worksheet dealing with units and angular motion.   I need to reverse calculate from an acceleration to the uniform motion (rad/sec or RPM) which is used in forces and FEA simulation.

The initial units work fine and get to a velocity (feet/sec) but then fail to convert to rad/sec or RPM.   The attached shows the results of units Hz (1/sec) and the problems with resolving to RPM or rad/sec.   the unit (length / length (radius)) as an answer stil confounds me.

Uniform_circular_motion_units_issue.mw

Any help greatly appreciated,
Bill

Hello, I have the following (nested) summation:

add(binomial(196, j)*0.5^(32.1+j)*add(binomial(109, l)*(-1)^(j+l)*add(0.5^(3.1*h)*GAMMA(-4.1+h)*GAMMA(9.3170731707317073170731707317073170731707317073170+.24390243902439024390243902439024390243902439024390*l+.24390243902439024390243902439024390243902439024390*j+.75609756097560975609756097560975609756097560975610*h)/(factorial(h)*(10.354838709677419354838709677419354838709677419355+.32258064516129032258064516129032258064516129032258*j+h)*GAMMA(.24390243902439024390243902439024390243902439024390*j+.24390243902439024390243902439024390243902439024390*l+15.417073170731707317073170731707317073170731707317+.75609756097560975609756097560975609756097560975610*h)), h = 0 .. infinity), l = 0 .. 109), j = 0 .. 196)

 

But it takes ages to sum h up to 80, for example. I was wondering whether we could improve to gain time. any ideas?

CorrBasis := {<sqrt(3),2,0>, <0,1/5,1>};
CorrMat := Matrix([op(CorrBasis)]);

Basis := {<3^(0.5), 2., 0.>, <0.,0.2,1.>}; #float
Basis := remove(i -> is(LinearAlgebra:-Rank(<CorrMat|i>) <> nops(CorrBasis)),  Basis);

I need to use matrices/ vectors with different datatypes. Do I need to turn them all into floats in order for Basis to remain the same after calling

Basis := remove(i -> is(LinearAlgebra:-Rank(<CorrMat|i>) <> nops(CorrBasis)),  Basis);

Is there any better way to manage this?

How do you stop Maple during this code execution:

proc()
x:
print(1);
goto(x);
end():

     Hello everyone !

     I have a problem asking for help:

     In the Oxy coordinate plane, for rectangles are limited by straight lines: x=1, x=7, y=1, y=9 and there are 63 points distinguished from coordinates that are integers located on this rectangle.

     These include:

  • 7 black points with coordinates are listed in the list:

[[1,1], [2,1], [3,1], [4,1], [5,1], [6,1], [7,1]].

  • 7 red points with coordinates are listed in the list:

[[1,2], [2,2], [3,2], [4,2], [5,2], [6,2], [7,2]].

  • 8 yellow points with coordinates are listed in the list:

[[1,3], [4,3], [5,3], [7,3], [1,4], [4,4], [5,4], [7,4] ].

  • 6 pink points with coordinates are listed in the list:

[[2,3], [3,3], [6,3], [2,4], [3,4], [6,4]].

  • 8 brown points with coordinates are listed in the list:

[[1,5], [3,5], [5,5], [7,5], [1,6], [3,6], [5,6], [7,6]].

  • 6 purple points with coordinates are listed:

[[2,5], [4,5], [6,5], [2,6], [4,6], [6,6]].

  • 9 blue points with coordinates are listed in the list:

[[1,7], [2,7], [7,7], [1,8], [2,8], [7,8], [1,9], [2,9], [7,9]].

  • 6 green points with coordinates are listed:

[[3,7], [5,7], [3,8], [5,8], [3,9], [5,9]].

  • 6 orange points with coordinates are listed in the list:

[[4,7], [6,7], [4,8], [6,8], [4,9], [6,9]].

     Help me find the integer coordinates of the 63 points when arranging them on the rectangle knowing that their HorizontalCoord has not changed, and the VerticalCoord of the points of the same color is always different with the Maple command.

     Thank you so much for your help!

Here's a procedure using GraphTheory by morphing one four letter word into another by changing only one letter at a time.  This is my initial working version.  I've commented out the DrawGraph portion as it takes a long time (5 minutes or so) to produce.  Using the Neighbors command from the GraphTheory package the graph can be shrunk to only include the relevant paths and will take a shorter time to draw.  It's an initial version so there is room for improvements.
 

a := readdata("c:/sowpods.txt", string)NULL

with(StringTools)NULL

b := [seq(`if`(length(a[i]) = 4, a[i], NULL), i = 1 .. nops(a))]

NULL

The word morph procedure for 4 letter words.

NULL

morph := proc (w1::string, w2::string) local c, i, q, d, r, j, k, g, gg, sp; c := {seq(`if`(HammingDistance(w1, b[i]) = 1, b[i], NULL), i = 1 .. nops(b))}; q := {seq(`if`(HammingDistance(w2, b[i]) = 1, b[i], NULL), i = 1 .. nops(b))}; for i to nops(c) do c || i := {seq(`if`(HammingDistance(c[i], b[j]) = 1, b[j], NULL), j = 1 .. nops(b))} end do; for i to nops(q) do q || i := {seq(`if`(HammingDistance(q[i], b[j]) = 1, b[j], NULL), j = 1 .. nops(b))} end do; d := map(proc (x) options operator, arrow; {x, w1} end proc, c); r := map(proc (x) options operator, arrow; {x, w2} end proc, q); for i to nops(c) do d || i := map(proc (x) options operator, arrow; {c[i], x} end proc, c || i) end do; for i to nops(q) do r || i := map(proc (x) options operator, arrow; {q[i], x} end proc, q || i) end do; for k to nops(c) do for j to nops(c || k) do c || k || _ || j := {seq(`if`(HammingDistance(c || k[j], b[i]) = 1, b[i], NULL), i = 1 .. nops(b))} end do end do; for k to nops(q) do for j to nops(q || k) do q || k || _ || j := {seq(`if`(HammingDistance(q || k[j], b[i]) = 1, b[i], NULL), i = 1 .. nops(b))} end do end do; for i to nops(c) do for j to nops(c || i) do d || i || _ || j := map(proc (x) options operator, arrow; {c || i[j], x} end proc, c || i || _ || j) end do end do; for i to nops(q) do for j to nops(q || i) do r || i || _ || j := map(proc (x) options operator, arrow; {q || i[j], x} end proc, q || i || _ || j) end do end do; g := {d[], r[], seq(d || i[], i = 1 .. nops(c)), seq(r || k[], k = 1 .. nops(q)), seq(seq(d || j || _ || i[], i = 1 .. nops(c || j)), j = 1 .. nops(c)), seq(seq(r || j || _ || i[], i = 1 .. nops(q || j)), j = 1 .. nops(q))}; gg := GraphTheory:-Graph(g); sp := GraphTheory:-ShortestPath(gg, w1, w2); print(sp) end proc
Today, June 6 is international yoyo day.  So I start off with, of course, the word yoyo.

NULL

morph("yoyo", "four")

["yoyo", "boyo", "boys", "foys", "fous", "four"]

(1)

morph("door", "yoyo")

["door", "boor", "boos", "boys", "boyo", "yoyo"]

(2)

morph("four", "yoyo")

["four", "fous", "foys", "boys", "boyo", "yoyo"]

(3)

morph("zane", "quit")

["zane", "cane", "cant", "cunt", "cuit", "quit"]

(4)

morph("lair", "jump")

["lair", "gair", "gaur", "gaup", "gamp", "gump", "jump"]

(5)

morph("jump", "lair")

["jump", "gump", "gamp", "gaup", "gaur", "gair", "lair"]

(6)

morph("quit", "jump")

["quit", "luit", "lunt", "luna", "luma", "lump", "jump"]

(7)

morph("xray", "jump")

Error, (in GraphTheory:-ShortestPath) no path from xray to jump exists

 

NULL

With no path another level of iteration word groups will be needed.  Otherwise you can use an intermediate word as below

NULL

morph("xray", "door")

["xray", "dray", "drab", "doab", "doob", "door"]

(8)

morph("door", "jump")

["door", "poor", "poop", "pomp", "pump", "jump"]

(9)

morph("lair", "door")

["lair", "loir", "loor", "door"]

(10)

NULL

NULL


 

Download Word_Morph_3.mw

Word_Morph.maple

I would show you what I have but I actually don't know where to start this problem..

If n people (numbered 1 to n) stand in a circle and someone starts going around the circle and eliminating every other person till only one person is left, the number J(n) of the person left at the end is given by 

    J(n) = 1                           if n = 1
    J(n) = 2*J(n/2) - 1          if n > 1 and n is even
    J(n) = 2*J((n-1)/2) + 1   if  n > 1 and n is odd

(i) Write a recursive procedure to compute J. [As a check the first 16 values (starting with 1) of J(n) are 1,1,3,1,3,5,7,1,3,5,7,9,11,13,15,1]. 
(ii)Compute the value of J(10000). 
(iii) Can you explain why this is so much faster than our recursive procedure to compute the n-th Fibonacci number?

Why this error message ?
with(geometry);
vartheta := (2*Pi)/17;
x || k := cos(k*theta);
y || k := sin(k*theta);
 xk := cos(k theta): yk := sin(k theta)
.M||k:=(point,x||k,y||k);
 with(plots):
Points := pointplot([seq(M || k, k = 1 .. 16)], symbol = solidcircle, color = red, symbolsize = 10):
Error, (in plots:-pointplot) cannot convert data to an Array of datatype float[8]; Thank you for your answer..

Hello, I have a question.

The exercise consists of defining the image in relation to a chosen base. For example, I choose {x^4,x^3*y,x^2*y^2,x*y^3,y^4} as a base. Then I want to calculate T(x^4), T(x^3*y),T(x^2*y^2),T(x*y^3),T(y^4) through maple but but maple won't calculate it.

Do you know what I'm doing wrong?
Thanks in advance

 

 I came across this question while trying to verify the equality of expressions containing elliptic integrals.

 

That's what Maple returns for EllipticK(1)

EllipticK(1)

Error, (in EllipticK) numeric exception: division by zero

 

However

evalf(EllipticK(1.))

Float(infinity)

(1)

limit(EllipticK(k), k = 1, left)

infinity

(2)

indicate infinity.

Float(infinity) = infinity

Float(infinity) = infinity

(3)

is(Float(infinity) = infinity)

true

(4)

NULL

Download EllpticK(1).mw

I have no experience with elliptic integrals. Can I assume in this case that infinity is correct?

First 303 304 305 306 307 308 309 Last Page 305 of 2217