Maple How to numerically solve differential equs with MAPLE ?

AI Thread Summary
Help is sought for using Maple to numerically solve a system of three second-order differential equations related to Newton's equations, with specified initial conditions. The user requires a complete code that can replicate a Mathematica solution, including the ability to plot the numerical trajectory in 3D. The equations involve forces defined by specific functions, and the initial conditions include position and velocity values. There is a discussion about the differences between Maple and Mathematica, with some users expressing skepticism about translating code between the two platforms. The thread highlights the need for clear guidance on Maple syntax to achieve the desired numerical solutions and graphical outputs.
Barnak
Messages
62
Reaction score
0
I need help with the Maple maths software, which I don't know very well. I need to numerically solve a system of three second order differential equations, specifically with Maple. I have to write a code which numerically solves the Newton's equation, using some initial conditions, and then show the numerical trajectory as a 3D plot. How am I supposed to do that?

More specifically, consider the following three coupled differential equations:

\frac{d^2 x(t)}{dt^2} = F_x(x(t), y(t), z(t))

\frac{d^2 y(t)}{dt^2} = F_y(x(t), y(t), z(t))

\frac{d^2 z(t)}{dt^2} = F_z(x(t), y(t), z(t))

where F_x(x, y, z), F_y(x, y, z) and F_z(x, y, z) are three specific functions (which should be specified in the Maple code). The initial conditions are also given:

x(0) = C_1,
y(0) = C_2,
z(0) = C_3,
v_x(0) = C_4,
v_y(0) = C_5,
v_z(0) = C_6.

Here, the six constants C_i are arbitrary, but they should be specified as some real numbers in the Maple code.

How to program Maple so it can solves the previous equations and show the trajecory in some 3D graph ? I need a complete and explicit code to do this, because I'm really a novice with Maple. :cry:

In the particular case of Mathematica (a rival of Maple), I know how to do it. The following code gives the complete solution to my problem, except that I need the Maple code which can do the same. How to translate this code to Maple language ? Please, be specific. The answer will certainly help a lot of other people!

Code:
Pos[ x_, y_, z_] := {x, y, z}

r[x_, y_, z_] := Sqrt[x^2 + y^2 + z^2]

Velocity[t_] := {x'[t], y'[t], z'[t]}MagnMoment := {0, 0, 1}

MagneticField[ x_, y_, z_] := 3 (MagnMoment.Pos[x, y, z]) Pos[x, y, z]/r[x, y, z]^5 - MagnMoment/r[x, y, z]^5

MagneticCoupling := 0

GravitationCoupling := 1

FrictionCoupling := 0.005

GravitationalForce[t_] := - GravitationCoupling Pos[x[t], y[t], z[t]]/r[x[t], y[t], z[t]]^3

MagneticForce[t_] := MagneticCoupling Cross[Velocity[t], MagneticField[x[t], y[t], z[t]]]

Friction[t_] := - FrictionCoupling Velocity[t]

Force[t_] := GravitationalForce[t] + MagneticForce[t] + Friction[t]

Fx[t_] := {1, 0, 0}.Force[t]
Fy[t_] := {0, 1, 0}.Force[t]
Fz[t_] := {0, 0, 1}.Force[t]

Time1 := 0
Time2 := 200

X0 := 3
Y0 := 0.1
Z0 := 5
Vx0 := -0.5
Vy0 := 0
Vz0 := 0

Trajectory = NDSolve[{

x''[t] == Fx[t],

y''[t] == Fy[t],

z''[t] == Fz[t],

x[0] == X0,
y[0] == Y0,
z[0] == Z0,

x'[0] == Vx0,
y'[0] == Vy0,
z'[0] == Vz0

}, {x,y,z}, {t,Time1,Time2}, Method -> ExplicitRungeKutta, MaxSteps->10000]

To trace the trajectory in 3D, the Mathematica code is bellow :
Code:
PTmin := (x /. Trajectory)[[1]][[1]][[1]][[1]]
PTmax := (x /. Trajectory)[[1]][[1]][[1]][[2]]

ParametricPlot3D[Evaluate[{x[t], y[t], z[t]} /. Trajectory], {t, PTmin, PTmax}, PlotPoints -> 10000]
 
Last edited:
Physics news on Phys.org
Nobody here ? Is this forum dead ?
 
Why have you "trashed" Maple ? I'm curious (as a Mathematica user), since I'm yet unable to get help on this topic. Is Maple a not-so-good-math software, compared to Mathematica ?
 
I did not "trash" Maple. I'm migrating to new hardware and things are a mess right now. People fiercely argue about which X is better for almost every X. I don't need to go there.

Ten or twenty years ago someone did a huge amount of work to compare half a dozen computer algebra systems. He concluded that for anyone of these you needed up to thousands of hours of intense work to become an expert and that being an expert in one did not provide you much expertise in using another one.

I could try to tell you how to translate your Mathematica, but I don't want to take the chance of being wrong when I cannot compare the output from both to make sure there are no errors. Sorry.
 
maple code for this problem is not going to be much different from the code you have written for mathematica...instead in maple its much easier..
i don't know providing the complete solution to the problems is allowed here or not..
 
Ok. Thanks anyway.

Any other able to translate the code above, Mathematica -> Maple ?

I have the feel it should be relatively easy, since this is just about solving numerically Newton's equations with some initial conditions. The forces functions are just arbitrary, but may be usefull to show some "popular" physics (gravitation from a planet, a Lorentz magnetic force from a dipolar magnetic field, and a friction force). The graphical outputs are very cool, when you change the various parameters (three constants).
vishal007win said:
i don't know providing the complete solution to the problems is allowed here or not..

Huh ? Why not ??

The Mathematica code given above is from myself. I need the proper Maple syntax to make a conversion.
 
Last edited:
People have (rarely) discussed compilers that would translate one computer algebra system to another. The conclusion always seems to be that for very simple things this would be feasible, but when you start getting near the subtle sometimes bizarre details of anyone of the systems that the translation becomes far more difficult and likely impossible to ensure that it can be done exactly correctly and that it would be impossible to tell the user exactly how much had been correctly translated.
 
  • #10
The following code is *almost* working ! However, I'm getting an error and I suspect there's something missing (what about the time interval for the resolution ?). Please help !:rolleyes:

Code:
PDEtools[declare]((x, y, z)(t), prime = t);
r(x, y, z) := sqrt(x^2 + y^2 + z^2);
Vitesse(t) := [x'(t), y'(t), z'(t)];

MomentMagn := [0, 0, 1];
ChampMagnetique(x, y, z) := 3 dotprod(MomentMagn, [x, y, z]) * [x, y, z]/r(x, y, z)^5 - MomentMagn/r(x, y, z)^3;

CouplageMagnetique := 0;
CouplageGravitation := 1;
CouplageFrottement := 0.005;

ForceGravitationnelle(t) := - CouplageGravitation * [x(t), y(t), z(t)]/r(x(t), y(t), z(t))^3;
ForceMagnetique(t) := CouplageMagnetique * crossprod(Vitesse(t), ChampMagnetique(x(t), y(t), z(t)));
Frottement(t) := - CouplageFrottement * Vitesse(t);
Force(t) := ForceGravitationnelle(t) + ForceMagnetique(t) + Frottement(t);

EquationsNewton := (diff(diff(x(t), t), t) = dotprod([1, 0, 0], Force(t)), diff(diff(y(t), t), t) = dotprod([0, 1, 0], Force(t)), diff(diff(z(t), t), t) = dotprod([0, 0, 1], Force(t)]);

Temps1 := 0;
Temps2 := 200;

ConditionsInitiales := [X0 = 3, Y0 = 0.1, Z0 = 5, Vx0 = -0.5, Vy0 = 0, Vz0 = 0];
Trajectoire = dsolve(EquationsNewton, ConditionsInitiales, [x(t), y(t), z(t)], type = numeric);

The compilation gives me this error message :
x(t) will now be displayed as x
y(t) will now be displayed as y
z(t) will now be displayed as z
derivatives with respect to t of functions of one variable will now be

displayed with '
Error, (in RealRange) invalid arguments
Error, (in dsolve/numeric/process_input) missing differential equations and initial or boundary conditions in the first argument: EquationsNewton
 
Last edited:

Similar threads

Replies
1
Views
2K
Replies
4
Views
2K
Replies
4
Views
1K
Replies
1
Views
2K
Replies
4
Views
3K
Replies
3
Views
2K
Back
Top