所以我使用NDSolve在mathematica中求解一组四个微分方程。我也使用ArcSin作为方程的一部分。现在,我的ArcSin值对y的值不敏感,导致解决方案定期生成。 例如,对于x = 1,y = 1,我将ArcSin作为pi / 4。如果我把它设为x = 1,y = -1,它仍然是pi / 4。如何避免循环行为?我知道,条件应该是如果y <0,则将pi添加到解决方案中。我没能正确地写它。
任何帮助表示赞赏。
ClearAll["Global`*"]
\[Alpha]1 = 0.5;
\[Sigma]1 = -1;
Subscript[\[CapitalTheta], N] = \[Pi]/2;
traceractive =
NDSolve[{x'[
t] == ((-\[Alpha]1*(x[t] -
X[t]))/((x[t] - X[t])^2 + (y[t] - Y[t])^2)^(3/
2)) - (2*
Cos[Subscript[\[CapitalTheta], N] -
ArcSin[(x[t] - X[t])/((x[t] - X[t])^2 + (y[t] - Y[t])^2)^(1/
2)]]*\[Alpha]1*\[Sigma]1)/((x[t] - X[t])^2 + (y[t] -
Y[t])^2)^(3/
2) + ((y[t] - Y[t])*
Sin[Subscript[\[CapitalTheta], N] -
ArcSin[(x[t] - X[t])/((x[t] - X[t])^2 + (y[t] - Y[t])^2)^(1/
2)]]*\[Alpha]1*\[Sigma]1)/((x[t] - X[t])^2 + (y[t] -
Y[t])^2)^2,
y'[t] == ((-\[Alpha]1*(y[t] -
Y[t]))/((x[t] - X[t])^2 + (y[t] - Y[t])^2)^(3/
2)) - (2*
Cos[Subscript[\[CapitalTheta], N] -
ArcSin[(x[t] - X[t])/((x[t] - X[t])^2 + (y[t] - Y[t])^2)^(1/
2)]]*\[Alpha]1*\[Sigma]1)/((x[t] - X[t])^2 + (y[t] -
Y[t])^2)^(3/
2) - ((x[t] - X[t])*
Sin[Subscript[\[CapitalTheta], N] -
ArcSin[(x[t] - X[t])/((x[t] - X[t])^2 + (y[t] - Y[t])^2)^(1/
2)]]*\[Alpha]1*\[Sigma]1)/((x[t] - X[t])^2 + (y[t] -
Y[t])^2)^2, X'[t] == 0, Y'[t] == 0, x[0] == 0.1,
y[0] == 0.02, X[0] == 0, Y[0] == 0}, {x, y, X, Y}, {t, 0, 1000}]
xlist = Flatten[Table[x[t] /. traceractive, {t, 0, 100}]];
ylist = Flatten[Table[y[t] /. traceractive, {t, 0, 100}]];
Xlist = Flatten[Table[X[t] /. traceractive, {t, 0, 100}]];
Ylist = Flatten[Table[Y[t] /. traceractive, {t, 0, 100}]];
Tracer = Transpose@{xlist, ylist};
Length[Tracer];
Activep = Transpose@{Xlist, Ylist};
P1 = ListPlot[Tracer, Joined -> True]
P2 = ListPlot[Activep, PlotMarkers -> Automatic]
Show [P1, P2, Graphics[{PointSize[0.025], Point[{Tracer[[1]]}]}],
Graphics[{PointSize[0.025], Red, Point[{Tracer[[Length[Tracer]]]}]}],
PlotRange -> All, AxesOrigin -> {0, 0}]
(*Black point: Tracer initial position, Red point: Tracer final \
position*)