Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

I have and input parameter to a procedure called shift:=05. It sets the position of test between to points.

this particular procedure has two potential sets of text one in Q and the other in vec.
Can Q and vec have the own individual values for shift?

I have shown the input to the procedure and what it outputs. The procedure itself to too long and akward to the post.

Also given is the input definiton of the procedure and how I could possibly find a shift in a list.

 

restart

#with( RationalTrigonometry)

P1:=[-1,3]:P2:=[4,5]:

# shift operates as such mp:=P1+shift*(P2-P1). It's default value 0.5 It moves
#   the text along between P1 and P2
# shift and shift are optional inputs to move individual test pieces.
#If Q contains shift then use it else use shift
  qp:=P1+shift*(P2-P1) or qp:=P1+shift*(P2-P1)
#Similarily for vec

Qdim([P1,typeset("P1=",P1),align=[left],colour=red] ,
     [P2,typeset("P2=",P2),align=[right],colour=purple] ,
      Q=[Q_12,align =[below,right],shift=0.6] ,
      point=[symbolsize=12,symbol=solidcircle,colour=blue,shift=0.4] ,
      vec=[typeset("v[12]=",P2-P1),align=[below,right],shift=0.1],
      shift=0.7):  

#The definition input of the procedure is

 

#proc(P1, P2,
#    {Q:=[ NULL,:-align={':-left'}]},
#        {corp::{"cart","proj"}:="cart"},
#        {shift:=0.5},
#        {vec::list:=[]},
#        {scale::{list,integer}:=1},
#        {leader::{-1,0,1}:= 1},
#        {dimoffset::{1/6,1/5,1/4,3/4,2/3,1/2,1/3,1,3/2,2,3,4,5,6}:=1},
#        {point::list:=['color' = ':-blue', symbol = ':-solidcircle', 'symbolsize' = 8]},
#        {line::list:=['thickness'=3]},
#        {plopts::list:=[]})

restart

Q:=[Q_12,shift=0.6,align =[below,right]]  
      
      

 

[Q_12, shift = .6, align = [below, right]]

(1)

nops(Q)

3

(2)

for i to nops(Q) do
 if has([op(Q[i])],`shift`) then
 qp:=rhs(Q[i]);
 print(i,qp);
 break;
end if;
end do;

2, .6

(3)

 


 

Download 2024-09-18_Select_name_and_Value_from_List.mw

In this post, I would like to share some exercises that I recently taught to an undergraduate student using Maple. These exercises aimed to deepen their understanding of mathematical concepts through computational exploration and visualization. With its powerful symbolic computation capabilities, Maple proved to be an excellent tool for this purpose. Below, I present a few of the exercises and the insights they provided. Interestingly, the student found Maple to be more user-friendly and efficient compared to the software he usually uses for his studies. Below, I present a few of the exercises and the insights they provided.

One of the first topics we tackled was the Fourier series. We used Maple to illustrate how the Fourier series approximates a given function as more terms are added. We explored this through both static plots and interactive animations.

To help the student understand the behavior of different types of functions, we defined piecewise functions using Maple's piecewise command. This allowed us to model functions that behave differently over various intervals, such as the following cubic function exercise

Maple's Explore command was an effective tool for creating an interactive learning environment. We used it to create sliders that allowed the student to vary parameters, such as the number of terms in a Fourier series, and see the immediate impact on the plot.

restart; with(plots)

" F(x):={[[-1,-1<x<0],[1,0<x<1]];  "

proc (x) options operator, arrow, function_assign; piecewise(-1 < x and x < 0, -1, 0 < x and x < 1, 1) end proc

(1)

p1 := plot(piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), x = -3 .. 3, color = blue)

 

L := 2; a__0 := (int(F(x), x = -(1/2)*L .. (1/2)*L))/L

0

(2)

a__n := proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(3)

b__n := proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(4)

" #` Fourier series function`  `F__fourier`(x,N):=`a__0`+(&sum;)(`a__n`(n)&lowast;cos(2 * n * Pi * x / L) +`b__n`(n)&lowast;sin(2* n * Pi * x / L));"

proc (x, N) options operator, arrow, function_assign; a__0+sum(a__n(n)*cos(2*n*Pi*x/L)+b__n(n)*sin(2*n*Pi*x/L), n = 1 .. N) end proc

(5)

p2 := plot([F__fourier(x, 40)], x = -3 .. 3, numpoints = 200, color = [purple])

display([p1, p2])

 

Explore(plot([piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), F__fourier(x, N)], x = -3 .. 3, color = [blue, purple], numpoints = 200), N = 1 .. 40, title = "Fourier Series Approximation with N Terms")

restart; with(plots)

" #` Define the piecewise function`  F(x):={[[0,-1<x<0],[x^(2),0<x<1]];  "

proc (x) options operator, arrow, function_assign; piecewise(-1 < x and x < 0, 0, 0 < x and x < 1, x^2) end proc

(6)

p3 := plot(piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), x = -3 .. 3, color = blue)

 

L := 2; a__0 := (int(F(x), x = -(1/2)*L .. (1/2)*L))/L

1/6

(7)

a__n := proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(8)

b__n := proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(9)

" #` Fourier series function`  `F__fourier`(x,N):=`a__0`+(&sum;)(`a__n`(n)&lowast;cos(2 * n * Pi * x / L) +`b__n`(n)&lowast;sin(2* n * Pi * x / L));"

proc (x, N) options operator, arrow, function_assign; a__0+sum(a__n(n)*cos(2*n*Pi*x/L)+b__n(n)*sin(2*n*Pi*x/L), n = 1 .. N) end proc

(10)

p4 := plot([F__fourier(x, 40)], x = -3 .. 3, numpoints = 200, color = [purple])

display([p3, p4])

 

Explore(plot([piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), F__fourier(x, N)], x = -3 .. 3, color = [blue, purple], numpoints = 200), N = 1 .. 40, title = "Fourier Series Approximation with N Terms")

restart; with(plots)

" #` Define the piecewise function`  F(x):={[[x+2,-2<x<0],[2-2 x,0<x<2]]; "

proc (x) options operator, arrow, function_assign; piecewise(-2 < x and x < 0, x+2, 0 < x and x < 2, 2-2*x) end proc

(11)

p5 := plot(piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), x = -3 .. 3, color = blue)

 

L := 2; a__0 := (int(F(x), x = -(1/2)*L .. (1/2)*L))/L

5/4

(12)

a__n := proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(13)

b__n := proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(14)

" #` Fourier series function`  `F__fourier`(x,N):=`a__0`+(&sum;)(`a__n`(n)&lowast;cos(2 * n * Pi * x / L) +`b__n`(n)&lowast;sin(2* n * Pi * x / L));"

proc (x, N) options operator, arrow, function_assign; a__0+sum(a__n(n)*cos(2*n*Pi*x/L)+b__n(n)*sin(2*n*Pi*x/L), n = 1 .. N) end proc

(15)

p6 := plot([F__fourier(x, 40)], x = -3 .. 3, numpoints = 200, color = [purple])

display([p5, p6])

 

Explore(plot([piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), F__fourier(x, N)], x = -3 .. 3, color = [blue, purple], numpoints = 200), N = 1 .. 40, title = "Fourier Series Approximation with N Terms")

restart; with(plots)

F := proc (x) options operator, arrow; piecewise(-1 < x and x < 1, x-x^3, 0) end proc

proc (x) options operator, arrow; piecewise(-1 < x and x < 1, x-x^3, 0) end proc

(16)

p7 := plot(piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), x = -3 .. 3, color = blue)

 

L := 2; a__0 := (int(F(x), x = -(1/2)*L .. (1/2)*L))/L

0

(17)

a__n := proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*cos(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(18)

b__n := proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

proc (n) options operator, arrow; 2*(int(F(x)*sin(2*n*Pi*x/L), x = -(1/2)*L .. (1/2)*L))/L end proc

(19)

b__n(n)

-4*(n^2*Pi^2*sin(n*Pi)+3*cos(n*Pi)*Pi*n-3*sin(n*Pi))/(n^4*Pi^4)

(20)

" #` Fourier series function`  `F__fourier`(x,N):=`a__0`+(&sum;)(`a__n`(n)&lowast;cos(2 * n * Pi * x / L) +`b__n`(n)&lowast;sin(2* n * Pi * x / L));      #` Plot the Fourier series approximation`  p8:=plot([`F__fourier`(x,40)],x = -3.. 3 ,numpoints=200, color=[red]) :"

proc (x, N) options operator, arrow, function_assign; a__0+sum(a__n(n)*cos(2*n*Pi*x/L)+b__n(n)*sin(2*n*Pi*x/L), n = 1 .. N) end proc

(21)

display([p7, p8])

 

Explore(plot([piecewise(-3 < x and x < -1, F(x+2), -1 < x and x < 1, F(x), 1 < x and x < 3, F(x-2)), F__fourier(x, N)], x = -3 .. 3, color = [blue, purple], numpoints = 200), N = 1 .. 40, title = "Fourier Series Approximation with N Terms")

NULL

Download Fourier_Series.mw

The first time they are evaluated, some aborts can occur; the second time they are evaluated, no exception is thrown: 
 

Physics:-Version()

`The "Physics Updates" version in the MapleCloud is 1806 and is the same as the version installed in this computer, created 2024, September 11, 11:27 hours Pacific Time.`

(1)

restart;

RootOf(
        9*x1-5+RootOf(8*_Z**2+_Z-43, 41629632769253767815/18446744073709551616 .. 20814816384626883921/9223372036854775808), x1, 171590466306199/562949953421312 .. 343180932612401/1125899906842624
);

Error, (in property/ProbablyNonZero) cannot determine if this expression is true or false: ln(.1e11*abs(-.304805898398896+1.*RealRange(.304805898398895,.304805898398897)))/ln(10) < -6

 

RootOf(
        9*x1-5+RootOf(8*_Z**2+_Z-43, 41629632769253767815/18446744073709551616 .. 20814816384626883921/9223372036854775808), x1, 171590466306199/562949953421312 .. 343180932612401/1125899906842624
);

5/9-(1/9)*RootOf(8*_Z^2+_Z-43, 41629632769253767815/18446744073709551616 .. 20814816384626883921/9223372036854775808)

(2)

RootOf(
        2*x1-3+RootOf(_Z**2+2*_Z-11, 181818607464242035159/73786976294838206464 .. 363637214928484070345/147573952589676412928), x1, 301683970796757/1125899906842624 .. 150841985398379/562949953421312
);

Error, (in property/ProbablyNonZero) cannot determine if this expression is true or false: ln(2500000000.*abs(-.267949192431123+1.*RealRange(.267949192431122,.267949192431123)))/ln(10) < -6

 

RootOf(
        2*x1-3+RootOf(_Z**2+2*_Z-11, 181818607464242035159/73786976294838206464 .. 363637214928484070345/147573952589676412928), x1, 301683970796757/1125899906842624 .. 150841985398379/562949953421312
);

3/2-(1/2)*RootOf(_Z^2+2*_Z-11, 181818607464242035159/73786976294838206464 .. 363637214928484070345/147573952589676412928)

(3)


 

Download run__twice.mw

Why does (the outer) RootOf have to be evaluated twice? 
Note. There are other similar examples, but they are less concise (so they are omitted here).

I have a differential equation which I am looking for a series solution in inverse powers of r. I am doing this by matching inverse powers between the RHS and LHS of the differential equation and then finding the coefficient in the series solution that would solve this. I have written a little procedure which returns the coefficients, I am just curious if there is a command that will do this for me or if i can improve on this technique? I tried the Solve command in PDETools but it just kept evaluating and did not return an answer. 

Thanks in advance. 

 

EDIT: More detail provided in the first reply. 

coefficient_question.mw

Hello, 

I have a list of data {a,b,c,d} for which I need to create permutations without inbult function in Maple. The list of inputs is not fixed and it can contain aither one value or n-values. I was thinking about use of recursion in loops but it doesn't work as I was expected. Do you know please how to set a such recursive calculation with loops?
 

Result should be as follows for the list whole list range:

a+b

a+c

a+d

a+b+c

a+b+d
a+c+b
a+c+d

a+d+b

a+d+c

a+b+c+d

a+c+d+b

a+d+b+c

b+a

b+c

b+d

b+a+c

b+a+d

b+c+a

b+c+d

b+d+a

b+d+c

b+a+c+d

b+c+d+a

b+d+a+c

etc...

 

Comb1:=proc(S)
local G2::DataFrame,x,xs,i,j,T,k;

G2:=DataFrame([[]]);

if numelems(S)=0 then 
		return {}
		elif numelems(S)=1 then
			return {S}
		else 
			for i in seq(1..numelems(S))do
				for j in seq(1..numelems(S))do
					if i=j then
						next j
					end if;
			x:=S[j];
			xs:=S[i]+S[j];	

			#collect data into a dataframe
			G2:=Append(G2,DataSeries(<xs>),mode=row);

			#recursion
			for T in Comb1([xs]) do 
				for k in seq(1..numelems(S)) do
					if k=i or k=j then 
						next k
						end if;
				G2:=Append(G2,DataSeries(<[S[k]]+T>),mode=row);
				
					end do;
				end do;
			end do;
		end do;
	end if;
		
return G2;

end proc:

Comb1({a,b,c,d});

 

I cannot remember that this was an issue in Maple 6/9/11, so it must have changed later on up to 22.

The following limit fails to execute

restart;
1/(r_S^5*(_C2*r_S^4 + _C2*r_S^3 + _C2*r_S^2 + f[3](0)*r_S + f[4](0)));
limit(%, f[4](0) = infinity);

It fails to calculate the limit with result as zero.

Thanks

I want to solve a pde numerically, where one of the initial conditions involves an integral expression. In essence, I would like to get the following code to run. 

restart;
with(PDEtools);

# the heat equation
pde := diff(v(x, t), t) = diff(v(x, t), x, x);

f := x -> exp(-x^2);

a := -1.68858; b := 1.68858; delx := 1/100; t_final := 5;

pds := pdsolve(pde, {v(a, t) = 0, v(b, t) = 0, v(x, 0) = 1 - int(f(f(s)), s = 0 .. x)}, numeric, range = a .. b, time = t, spacestep = delx);

Error, (in pdsolve/numeric/process_IBCs) improper specification of initial/boundary condition: additional unknown(s) {s} were found in v(x,0) = 1-int(exp(-exp(-s^2)^2),s = 0 .. x)

pds:-animate(frames = 120, t = t_final);

Maple doesn't have any built-in function to evaluate the integral expression, so the initial condition doesn't evaluate to a simple expression involving x. I hope that because pdsolve is outputting numerical results, it should be acceptable for the initial condition to output floats as well.

If you draw a chord in any curve, when the latter becomes infinitely small, the ratio of the surface segment to the triangle formed by the chord and the associated tangents is 2:3.

(Source: Archive of Mathematics and Physics, editor Johann August Grunert, 31st part of 1858, pp. 449-453, "On a remarkable general theorem on curves",
Author: Andreas Völler)

(The curve may be assumed to be sufficiently differentiable.)

Source codes (seen in the pdf file) for the paper "Maximal Gap Among Integers Having a Common Divisor with an Odd Semi-prime".

MaxGapTheorem2.pdf

I was about to review a piece of code which is the "main procedure" of a worksheet (as one would say in other languages).

What I mean by that are the top level code statements of a Maple worksheet which are not part of procedures. For the code example I can easily put everything into a procedure and invoke the Maple debugger. For larger worksheets this becomes complicated.

For this reason I was wondering whether the debugger can also be started for a complete document.

I have a quite complex expression (where and are real numbers): 

expr := Or(And(-p^2 + 3*q < 0, p < 0, p^2 - 4*q < 0, Or(And(p < 0, -q < 0), p < 0, q < 0), Or(And(-2*p^2 + 3*q < 0, -q^2 < 0), And(p <= 0, Or(-2*p^2 + 3*q < 0, q^2 < 0))), Or(And(Or(And(p < 0, -q < 0), p < 0, q < 0), Or(And(-2*p^2 + 3*q < 0, -q^2 < 0), And(p <= 0, Or(-2*p^2 + 3*q < 0, q^2 < 0)))), And(p < 0, -q < 0), p < 0, q < 0, And(2*p^2 - 3*q < 0, -q^2 < 0), And(-p <= 0, Or(2*p^2 - 3*q < 0, q^2 < 0))), -2*p^5 + 15*p^3*q - 27*p*q^2 <= 0, p^2*q^2 - 4*q^3 = 0), And(p^2 - 3*q = 0, p < 0, -2*p^2 + 3*q < 0, Or(And(p < 0, -2*p^2 + 3*q < 0), p < 0, 2*p^2 - 3*q < 0), 2*p^3 - 9*p*q = 0), And(-p^2 + 3*q < 0, Or(And(p < 0, p^2 - 4*q < 0), p < 0, -p^2 + 4*q < 0), p < 0, -q < 0, Or(And(-2*p^2 + 3*q < 0, -q^2 < 0), And(-p <= 0, Or(-2*p^2 + 3*q < 0, q^2 < 0))), Or(And(p < 0, -q < 0, Or(And(-2*p^2 + 3*q < 0, -q^2 < 0), And(-p <= 0, Or(-2*p^2 + 3*q < 0, q^2 < 0)))), And(p < 0, -q < 0), And(2*p^2 - 3*q < 0, -q^2 < 0), And(p <= 0, Or(2*p^2 - 3*q < 0, q^2 < 0))), 2*p^5 - 15*p^3*q + 27*p*q^2 <= 0, p^2*q^2 - 4*q^3 = 0)):

According to coulditbe, is satisfiable: 

_EnvTry := 'hard':
coulditbe(expr) assuming real;
 = 
                              true

But according to SMTLIB:-Satisfiable, is not satisfiable: 

SMTLIB:-Satisfiable(expr) assuming real;
 = 
                             false

Why are the two results opposite

For reference, below is the output from RealDomain:-solve

RealDomain:-solve(expr);
 = 
               /           1  2\                 
              { p = p, q = - p  }, {p = p, q = 0}
               \           4   /                 

I also tried using RealDomain:-simplify, yet the output remains almost unchanged (Why?). 

How to find the dispersion relation (9). Although I calculated the dispersion relation (see Eq. (3) in DR_1.mw), it is not consistent as in the image. 

 

5 6 7 8 9 10 11 Last Page 7 of 2152