Hell, I am trying to model a physical system. The system composes of two partial differential equations with initial conditions defined.
I wrote the code and everything works fine, just except me trying to manipulate one of the parameters and I appreciate if anyone can suggest me a solution The code is as follows.
ClearAll["Global`*"] (*Remove all global variables*)
gamma[alpha1_] := 1/(1 + alpha1^2);
hexternal = {1, 0, 0};
hxexternal = hexternal[[1]];
hyexternal = hexternal[[2]];
hzexternal = hexternal[[3]];
equationM1[
alpha1_] := {M1'[t] ==
gamma[alpha1]*(alpha1*((Cos[M1[t]]*Cos[M2[t]])*
hxexternal + (Cos[M1[t]]*Sin[M2[t]])*hyexternal -
Sin[M1[t]]*hzexternal) + ((-Sin[M2[t]])*
hxexternal + (Cos[M2[t]])*hyexternal))};
equationM2 [
alpha1_] := {M2'[t] ==
gamma[alpha1]*((-1/
Sin[M1[t]])*((Cos[M1[t]]*Cos[M2[t]])*
hxexternal + (Cos[M1[t]]*Sin[M2[t]])*hyexternal -
Sin[M1[t]]*hzexternal) + (alpha1/
Sin[M1[t]])*((-Sin[M2[t]])*hxexternal + (Cos[M2[t]])*
hyexternal))};
initial1 = {M1[0] == Pi/2 + 0.01}
initial2 = {M2[0] == Pi + 0.01}
eqns[alpha1_] :=
Join[equationM1[alpha1], equationM2[alpha1], initial1, initial2];
Manipulate[
sol1 = NDSolve[eqns[alpha1], {M1[t], M2[t]}, {t, 0, 100},
StartingStepSize -> 1/100,
Method -> {"FixedStep", Method -> "ExplicitEuler"}];
{M1[t], M2[t]} = {M1[t], M2[t]} /. sol1[[1]];
x = Sin[M1[t]]*Cos[M2[t]];
y = Sin[M1[t]]*Sin[M2[t]];
z = Cos[M1[t]];
ParametricPlot3D[{x, y, z}, {t, 0, 100}, PlotRange -> 1,
BoxRatios -> {1, 1, 1}, AxesLabel -> {X, Y, Z}],
{alpha1, 0.1, 1}]