Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

I am completely new to maple and am stuck in the very beginning trying to use the Physics package to calculate Christoffel symbols. Suppose I have coordinates (t, x, sigma, theta). The metric g_ has coefficients that are functions of (t,x,sigma) i.e. the metric is like

g_ = a(t,x,sigma) dt^2 + b(t,x,sigma)dt dx + dx^2 + dsigma^2 + sigma^2 dtheta^2.

(Should I write dsigma^2 or (d sigma)^2?)

How do I tell maple to treat a, b as functions of (t,x,sigma)?

Thank you.

HI, 

Yesterday I replied  denitsastaicova's question while providing an attached file. 

Surprisingly, I wasn't able to save the worksheet after having executed it. The only way I found to save it was to copy-paste it's content in a new worksheet and save this latter without any execution.
Here is the file
events.mw

For info I'm working with  Standard Worksheet Interface, Maple 2015.2, Mac OS X, December 21 2015 Build ID 1097895
on Mac OS Mojave 10.14.3
If I open this file and execute it (and even if I execute only the commands from the initial restart to the three dsolve), I get this pop-up error message when trying to save it:

Does my worksheet contain some undesired character or is it a bug ?

Hello,

How can write a code for determination of Laplacian in a new form is introduced in maple code (First line).

Thank you.

FOR2
 

``

"L:=(∑)`e__i`/(`h__i`)*(∂)/(∂ `xi__i`).((∑)(∑)`e__k`/(`h__k`)((∂)/(∂ `xi__k`)`U__j`*`e__j`+`U__j`(∂)/( `xi__k`)`U__j`)):"

restart; with(VectorCalculus); with(LinearAlgebra); h__1 := VectorCalculus:-`*`(a, 1/cosh(r)); h__2 := VectorCalculus:-`*`(a, 1/cosh(r)); h__3 := VectorCalculus:-`*`(sinh(r), 1/cos(theta)); U__1 := u__r; U__2 := `u__θ`; U__3 := `u__φ`

"for i from 1 to 3 do  for j from 1 to 3 do  for k  from 1 to 3 do     if i=1 then   `h__i`:=a/(cosh(r)-cos(theta)); `U__i`:=`u__r`;`e__i`:=`e__r`:`xi__i`:=r:     else  if i=2 then  `h__i`:=a/(cosh(r)-cos(theta));`U__i`:=`u__theta`;`e__i`:=`e__theta`:`xi__i`:=theta:  else ;   `h__i`:=a/(cosh(r)-cos(theta));`U__i`:=`u__phi`;`e__i`:=`e__phi`:`xi__i`:=phi:  end if;          if  j=1 then ;  `h__j`:=a/(cosh(r)-cos(theta)); `U__j`:=`u__r`;`e__j`:=`e__r`:`xi__j`:=r:   else if  j=2 then;  `h__j`:=a/(cosh(r)-cos(theta));`U__j`:=`u__theta`;`e__j`:=`e__theta`:`xi__j`:=theta:  else ;   `h__j`:=a/(cosh(r)-cos(theta));`U__j`:=`u__phi`;`e__j`:=`e__phi`:`xi__j`:=phi:  end if;       if k=1 then   `h__k`:=a/(cosh(r)-cos(theta)); `U__k`:=`u__r`;`e__k`:=`e__r`:`xi__k`:=r:   else if i=2 then  `h__k`:=a/(cosh(r)-cos(theta));`U__k`:=`u__theta`;`e__k`:=`e__theta`:`xi__k`:=theta:  else     `h__k`:=a/(cosh(r)-cos(theta));`U__k`:=`u__phi`;`e__k`:=`e__phi`:`xi__k`:=phi:  end if;                   end ;  end ;         end ;               "

Error, unterminated loop

"for i from 1 to 3 do  for j from 1 to 3 do  for k  from 1 to 3 do    if i=1 then `h__i`:=a/(cosh(r)-cos(theta)); `U__i`:=`u__r`;`e__i`:=`e__r`:xi__i:=r:     else  if i=2 then  `h__i`:=a/(cosh(r)-cos(theta));`U__i`:=`u__theta`;`e__i`:=`e__theta`:xi__i:=theta:  else ;   `h__i`:=a/(cosh(r)-cos(theta));`U__i`:=`u__phi`;`e__i`:=`e__phi`:xi__i:=phi:  end if;       if j=1 then ;  `h__j`:=a/(cosh(r)-cos(theta)); `U__j`:=`u__r`;`e__j`:=`e__r`:xi__j:=r:   else if j=2 then;  `h__j`:=a/(cosh(r)-cos(theta));`U__j`:=`u__theta`;`e__j`:=`e__theta`:xi__j:=theta:  else ;   `h__j`:=a/(cosh(r)-cos(theta));`U__j`:=`u__phi`;`e__j`:=`e__phi`:xi__j:=phi:  end if;     if k=1 then `h__k`:=a/(cosh(r)-cos(theta)); `U__k`:=`u__r`;`e__k`:=`e__r`:xi__k:=r:   else if i=2 then  `h__k`:=a/(cosh(r)-cos(theta));`U__k`:=`u__theta`;`e__k`:=`e__theta`:xi__k:=theta:  else `h__k`:=a/(cosh(r)-cos(theta));`U__k`:=`u__phi`;`e__k`:=`e__phi`:xi__k:=phi:  end if;           end ;  end ;     end ;               "

 

i

i

(1)

j

j

(2)

``


 

Download FOR2

 

 

Maple does not simplify the expression A*[sin(x)]^2+A*[cos(x)]^2=A, where A is any expression.

How can I make it do so? 

 

Thanks,

Maple 17 64-bit on Windows 8

Hello. How to connect 2 point of segment with animation? I know only one way to do this. We need connect P and Q. We need to create intermediate points like:

for i from 1 to 100
q[i]:=i/100*P+(1-i/100)*Q

It seems to me that this option consumes a lot of resources.

Is there another way to do this with the Maple?
Thanks

I have thought that   D(y)(0)=C1  and  eval(diff(y(t),t),t=0)=C1  mean exactly the same thing which is derivative of y wr.t. "t" evaluated at specific point t=0 is C1.

If you agree they are exactly the same thing, then why dsolve works with both forms used for initial conditions if the option 'series' is not used.

When using the 'series' option, dsolve stops working when using  eval(diff(y(t),t),t=0) form? All else is the same.

ode:=diff(y(t),t$2)+3*diff(y(t),t)+2*y(t)=0;
bc_form_1:=y(0)=C1,eval(diff(y(t),t),t=0)=C2;
bc_form_2:=y(0)=C1,D(y)(0)=C2;
sol1:=dsolve([ode,bc_form_1],y(t));
sol2:=dsolve([ode,bc_form_2],y(t))

Both the above work

But now when I use the 'series' option, the first form stops working!

ode:=diff(y(t),t$2)+3*diff(y(t),t)+2*y(t)=0;
bc_form_1:=y(0)=C1,eval(diff(y(t),t),t=0)=C2;
bc_form_2:=y(0)=C1,D(y)(0)=C2;
sol1:=dsolve([ode,bc_form_1],y(t),'series');
sol2:=dsolve([ode,bc_form_2],y(t),'series')

 

 

Is this a bug? 

Just updated to Maple 2019.1  on windows 10.

The code is from the book(SDE). I think P.n := evalm( P.(n-1)&*P0) causes the problem. I have never seen this kind of the structure before ( I did some coding with C and Java). Could you explain that? P0, P1, P2,,,, using for n from 1 to 10. Is "." between P and n the dot (period)? Thank you in advance.

restart

N := 2; A := -N; B := N

q := .3; p := .5; sa := .9; sb := .1; r := 1-p-q

with(linalg)

dimP := 2*N+1

P := matrix(dimP, dimP, [`$`(0, dimP*dimP)])

P[1, 1] := sa; P[1, 2] := 1-sa; P[dimP, dimP] := sb; P[dimP, dimP-1] := 1-sb

for i from 2 to dimP-1 do P[i, i-1] := q; P[i, i] := r; P[i, i+1] := p end do

P0 := P

for n to 10 do P.n := evalm(`&*`(P.(n-1), P0)) end do

print(P10)

P10

(1)

``


 

Download TransitionMatix.mw

I have this very ugly ODE system which I solve with "dsolve, numeric, complex=true". It works ok but I'd really like to be able to use events. The problem is that the solution of the system has very small (~10^(-Digits)) imaginary part and as we know "events" works only for real ODEs.

My question is does anyone know a way to force dsolve to solve the ODE as a real system? In Mathematica, there is the function "chop" which does the trick. In Maple, I tried with fnormal and also by forcing some terms to be real but that makes it hit a singularity at 0.01 which doesn't exist when it integrates it as a complex system. In Mathematica, it integrates ok with "chop" without any random singularities. 

I'm currently trying separating the system into real and imaginary parts, but considering how ugly the system is, it may not be so simple (and so far, it doesn't work). So something to trick dsolve would come handy.

Thanks in advance.

How can plot two  and bipolar figures as attached and extract their data.

Thank You.

I have reinstalled Maple 2019 several times, including its latest update. But when trying to graph the following:

plot(sin(x), x = -2*Pi .. 2*Pi)

But I get this:

Error, (in plot) expected a range but received x = -2*Pi .. 2*Pi

And if I enter:

sin(x)

The result is:

2.73949338633639*10-116 + 2.73949338633639*10-116*I

When trying this:

plot3d(x*exp(-x^2 - y^2), x = -2 .. 2, y = -2 .. 2, color = x)

I get this:

And if I try it with Graph Theory:

with(GraphTheory);
G := Graph({{a, b}, {a, c}, {b, c}});
G := Graph 1: an undirected unweighted graph with 3 vertices and 3 edge(s)

DrawGraph(G)

Error, (in GraphTheory:-DrawGraph) invalid input: modp received I, which is not valid for its 2nd argument, m
 

I do not know what is the reason for this anomalous behavior of Maple 2019, it will be some software bug or it will be an error caused by my computer...
I would like to know if this problem happens to other people or just to me. Any help or guidance on this problem will be greatly appreciated.


Best regards

 

We occasionally get asked questions about methods of Perturbation Theory in Maple, including the Lindstedt-Poincaré Method. Presented here is the most famous application of this method.

Introduction

During the dawn of the 20th Century, one problem that bothered astronomers and astrophysicists was the precession of the perihelion of Mercury. Even when considering the gravity from other planets and objects in the solar system, the equations from Newtonian Mechanics could not account for the discrepancy between the observed and predicted precession.

One of the early successes of Einstein's General Theory of Relativity was that the new model was able to capture the precession of Mercury, in addition to the orbits of all the other planets. The Einsteinian model, when applied to the orbit of Mercury, was in fact a non-negligible perturbation of the old model. In this post, we show how to use Maple to compute the perturbation, and derive the formula for calculating the precession.

In polar coordinates, the Einsteinian model can be written in the following form, where u(theta)=a(1-e^2)/r(theta), with theta being the polar angle, r(theta) being the radial distance, a being the semi-major axis length, and e being the eccentricity of the orbit:
 

# Original system.
f := (u,epsilon) -> -1 - epsilon * u^2;
omega := 1;
u0, du0 := 1 + e, 0;
de1 := diff( u(theta), theta, theta ) + omega^2 * u(theta) + f( u(theta), epsilon );
ic1 := u(0) = u0, D(u)(0) = du0;


The small parameter epsilon (along with the amount of precession) can be found in terms of the physical constants, but for now we leave it arbitrary:
 

# Parameters.
P := [
    a = 5.7909050e10 * Unit(m),
    c = 2.99792458e8 * Unit(m/s),
    e = 0.205630,
    G = 6.6740831e-11 * Unit(N*m^2/kg^2), 
    M = 1.9885e30 * Unit(kg), 
    alpha = 206264.8062, 
    beta = 415.2030758 
];
epsilon = simplify( eval( 3 * G * M / a / ( 1 - e^2 ) / c^2, P ) ); # approximately 7.987552635e-8


Note that c is the speed of light, G is the gravitational constant, M is the mass of the sun, alpha is the number of arcseconds per radian, and beta is the number of revolutions per century for Mercury.

We will show that the radial distance, predicted by Einstein's model, is close to that for an ellipse, as predicted by Newton's model, but the perturbation accounts for the precession (42.98 arcseconds/century). During one revolution, the precession can be determined to be approximately
 

sigma = simplify( eval( 6 * Pi * G * M / a / ( 1 - e^2 ) / c^2, P ) ); # approximately 5.018727337e-7


and so, per century, it is alpha*beta*sigma, which is approximately 42.98 arcseconds/century.
It is worth checking out this question on Stack Exchange, which includes an animation generated numerically using Maple for a similar problem that has a more pronounced precession.

Lindstedt-Poincaré Method in Maple

In order to obtain a perturbation solution to the perturbed differential equation u'+omega^2*u=1+epsilon*u^2 which is periodic, we need to write both u and omega as a series in the small parameter epsilon. This is because otherwise, the solution would have unbounded oscillatory terms ("secular terms"). Using this Lindstedt-Poincaré Method, we substitute arbitrary series in epsilon for u and omega into the initial value problem, and then choose the coefficient constants/functions so that both the initial value problem is satisfied and there are no secular terms. Note that a first-order approximation provides plenty of agreement with the measured precession, but higher-order approximations can be obtained.

To perform this in Maple, we can do the following:
 

# Transformed system, with the new independent variable being the original times a series in epsilon.
de2 := op( PDEtools:-dchange( { theta = phi/b }, { de1 }, { phi }, params = { b, epsilon }, simplify = true ) );
ic2 := ic1;

# Order and series for the perturbation solutions of u(phi) and b. Here, n = 1 is sufficient.
n := 1;
U := unapply( add( p[k](phi) * epsilon^k, k = 0 .. n ), phi );
B := omega + add( q[k] * epsilon^k, k = 1 .. n );

# DE in terms of the series.
de3 := series( eval( de2, [ u = U, b = B ] ), epsilon = 0, n + 1 );

# Successively determine the coefficients p[k](phi) and q[k].
for k from 0 to n do

    # Specify the initial conditions for the kth DE, which involves p[k](phi).
    # The original initial conditions appear only in the coefficient functions with index k = 0,
    # and those for k > 1 are all zero.
    if k = 0 then
        ic3 := op( expand( eval[recurse]( [ ic2 ], [ u = U, epsilon = 0 ] ) ) );
    else
        ic3 := p[k](0), D(p[k])(0);
    end if:

    # Solve kth DE, which can be found from the coefficients of the powers of epsilon in de3, for p[k](phi).
    # Then, update de3 with the new information.
    soln := dsolve( { simplify( coeff( de3, epsilon, k ) ), ic3 } );
    p[k] := unapply( rhs( soln ), phi );
    de3 := eval( de3 );

    # Choose q[k] to eliminate secular terms. To do this, use the frontend() command to keep only the terms in p[k](phi)
    # which have powers of t, and then solve for the value of q[k] which makes the expression zero. 
    # Note that frontend() masks the t-dependence within the sine and cosine terms.
    # Note also that this method may need to be amended, based on the form of the terms in p[k](phi).
    if k > 0 then
        q[1] := solve( frontend( select, [ has, p[k](phi), phi ] ) = 0, q[1] );
        de3 := eval( de3 );
    end if;

end do:

# Final perturbation solution.
'u(theta)' = eval( eval( U(phi), phi = B * theta ) ) + O( epsilon^(n+1) );

# Angular precession in one revolution.
sigma := convert( series( 2 * Pi * (1/B-1), epsilon = 0, n + 1 ), polynom ):
epsilon := 3 * G * M / a / ( 1 - e^2 ) / c^2;
'sigma' = sigma;

# Precession per century.
xi := simplify( eval( sigma * alpha * beta, P ) ); # returns approximately 42.98


Maple Worksheet: Lindstedt-Poincare_Method.mw

Hello everyone! 

I have a naive question... 
I'm traying to construct an array such entries are derivatives of a particular function. In my original problem, the elements of the array are numerous, so build it manual is not an option... A simplification of my task is :

                      


So, as you can see, for some reason Maple doen't chanche the index "i" in my derivative while the cycle is runnin. So all i want to do  is construct an array of the form 

using a cycle. 

Thanks for yout help! 

Hello everybody

can anybody help me solve this differential equation please?

 

d^2y(t)/dt^2-dy(t)/dt*1/y(t)=a*y(t)^2

I am really not good at writing the code. The code was from the book (Stochastic process with maple).

It does not seem to generate the different plots when I run the code.

Also the last added code was from the book but it shows error.

Thank you for the help in advance. (My English also is not good.)
 

restart

with(stats)

with(plots)

RandWalk := proc (N, p, q, sa, sb, M) local A, B, r, PA, PC, PB, state, step, path; A := -N; B := N; r := 1-p-q; PA := empirical[0., sa, 1-sa]; PC := empirical[q, r, p]; PB := empirical[1-sb, sb, 0.]; state := 0; path := state; to M do if A < state and state < B then step := trunc(stats[random, PC](1))-2 elif state = A then step := trunc(stats[random, PA](1))-2 elif state = B then step := trunc(stats[random, PB](1))-2 end if; state := state+step; path := path, state end do; plots[pointplot]([seq([i, path[i]], i = 1 .. nops([path]))], axes = BOXED) end proc

RandWalk(3, .5, .5, .8, .8, 20)

 

plots[display]([seq(RandomWalk(10, .45, .5, .8, 300), k = 1 .. 4)], insequence = true); plots[display](%)

Error, (in plots:-display) cannot make plot structure from object with name RandomWalk

 

 

``


 

Download randomWalk.mw
 

restart

with(stats)

with(plots)

RandWalk := proc (N, p, q, sa, sb, M) local A, B, r, PA, PC, PB, state, step, path; A := -N; B := N; r := 1-p-q; PA := empirical[0., sa, 1-sa]; PC := empirical[q, r, p]; PB := empirical[1-sb, sb, 0.]; state := 0; path := state; to M do if A < state and state < B then step := trunc(stats[random, PC](1))-2 elif state = A then step := trunc(stats[random, PA](1))-2 elif state = B then step := trunc(stats[random, PB](1))-2 end if; state := state+step; path := path, state end do; plots[pointplot]([seq([i, path[i]], i = 1 .. nops([path]))], axes = BOXED) end proc

RandWalk(3, .5, .5, .8, .8, 20)

 

plots[display]([seq(RandomWalk(10, .45, .5, .8, 300), k = 1 .. 4)], insequence = true); plots[display](%)

Error, (in plots:-display) cannot make plot structure from object with name RandomWalk

 

 

``


 

Download randomWalk.mw

 


Could you help me?

restart

with(stats)

with(plots)

"RandWalk :=proc(N,p,q,sa,sb,M)  local A,B,r,PA,PC,PB, state,step,path:  A:=-N: B:=N: r:=1-p-q:  PA:=empirical[0.,sa,1-sa]:  PC:= empirical[q,r,p]:  PB := empirical[1-sb,sb,0.]:  state:=0: path:=state:  from 1 to M do  if (A< state and state <B) then step:=trunc(stats[random, PC](1))-2:  else if state =A then step:= trunc(stats[random,PA](1))-2:  else if state =B then step:= trunc(stats[random,PB](1))-2:  end if:  state := state + step:  path := path,state:  end do:  plots[pointplot]([seq([i,path[i]],i=1..nops([path]))],axes=BOXED):  end proc:"

Error, unterminated procedure

"RandWalk :=proc(N,p,q,sa,sb,M) local A,B,r,PA,PC,PB, state,step,path:  A:=-N: B:=N: r:=1-p-q:  PA:=empirical[0.,sa,1-sa]:  PC:= empirical[q,r,p]:  PB := empirical[1-sb,sb,0.]:  state:=0: path:=state:  from 1 to M do  if (A< state and state <B) then step:=trunc(stats[random, PC](1))-2:  else if state =A then step:= trunc(stats[random,PA](1))-2:  else if state =B then step:= trunc(stats[random,PB](1))-2:  end if:  state := state + step:  path := path,state:  end do:  plots[pointplot]([seq([i,path[i]],i=1..nops([path]))],axes=BOXED):  end proc:"

 

``


 

Download randomWalk.mw
 

restart

with(stats)

with(plots)

"RandWalk :=proc(N,p,q,sa,sb,M)  local A,B,r,PA,PC,PB, state,step,path:  A:=-N: B:=N: r:=1-p-q:  PA:=empirical[0.,sa,1-sa]:  PC:= empirical[q,r,p]:  PB := empirical[1-sb,sb,0.]:  state:=0: path:=state:  from 1 to M do  if (A< state and state <B) then step:=trunc(stats[random, PC](1))-2:  else if state =A then step:= trunc(stats[random,PA](1))-2:  else if state =B then step:= trunc(stats[random,PB](1))-2:  end if:  state := state + step:  path := path,state:  end do:  plots[pointplot]([seq([i,path[i]],i=1..nops([path]))],axes=BOXED):  end proc:"

Error, unterminated procedure

"RandWalk :=proc(N,p,q,sa,sb,M) local A,B,r,PA,PC,PB, state,step,path:  A:=-N: B:=N: r:=1-p-q:  PA:=empirical[0.,sa,1-sa]:  PC:= empirical[q,r,p]:  PB := empirical[1-sb,sb,0.]:  state:=0: path:=state:  from 1 to M do  if (A< state and state <B) then step:=trunc(stats[random, PC](1))-2:  else if state =A then step:= trunc(stats[random,PA](1))-2:  else if state =B then step:= trunc(stats[random,PB](1))-2:  end if:  state := state + step:  path := path,state:  end do:  plots[pointplot]([seq([i,path[i]],i=1..nops([path]))],axes=BOXED):  end proc:"

 

``


 

Download randomWalk.mw

 

restart; with(stats); with(plots); RandWalk :=proc(N,p,q,sa,sb,M) local A,B,r,PA,PC,PB, state,step,path: A:=-N: B:=N: r:=1-p-q: PA:=empirical[0.,sa,1-sa]: PC:= empirical[q,r,p]: PB := empirical[1-sb,sb,0.]: state:=0: path:=state: from 1 to M do if (A< state and state

First 679 680 681 682 683 684 685 Last Page 681 of 2224