level 3
YoungLu0
楼主
代码如下:
Clear[r, s, t, n, b, \[Kappa], \[Tau], r0, t0, n0, b0];
eqns = {t'[s] == \[Kappa][s] n[s],
n'[s] == -\[Kappa][s] t[s] + \[Tau][s] b[s],
b'[s] == -\[Tau][s] n[s], r'[s] == t[s], t[0] == t0, n[0] == n0,
b[0] == b0, r[0] == r0};
\[Kappa][s_] := 10.08 Sin[Pi s]^2;
\[Tau][s_] := 3 Cos[Pi s];
{t0, n0, b0} = Orthogonalize[{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}];
r0 = {0, 0, 0};
sol = First@NDSolve[eqns, {r, t, n, b}, {s, 0, 12}];
With[{s1 = (r /. sol)["Domain"][[1, 1]],
s2 = (r /. sol)["Domain"][[1, 2]]},
Manipulate[
Show[ParametricPlot3D[Evaluate[r[s] /. sol], {s, s1, s2},
ImageSize -> 300, BoxRatios -> {1, 1, 1},
PlotStyle -> {Thick, Brown}, PlotRangePadding -> 1],
Graphics3D[
Dynamic@
Translate[{Thick, Red, Arrow[{{0, 0, 0}, t[s0]}], Green,
Arrow[{{0, 0, 0}, n[s0]}], Blue, Arrow[{{0, 0, 0}, b[s0]}]} /.
sol, r[s0] /. sol]]], {s0, s1, s2}]]
2022年10月27日 13点10分
1
Clear[r, s, t, n, b, \[Kappa], \[Tau], r0, t0, n0, b0];
eqns = {t'[s] == \[Kappa][s] n[s],
n'[s] == -\[Kappa][s] t[s] + \[Tau][s] b[s],
b'[s] == -\[Tau][s] n[s], r'[s] == t[s], t[0] == t0, n[0] == n0,
b[0] == b0, r[0] == r0};
\[Kappa][s_] := 10.08 Sin[Pi s]^2;
\[Tau][s_] := 3 Cos[Pi s];
{t0, n0, b0} = Orthogonalize[{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}];
r0 = {0, 0, 0};
sol = First@NDSolve[eqns, {r, t, n, b}, {s, 0, 12}];
With[{s1 = (r /. sol)["Domain"][[1, 1]],
s2 = (r /. sol)["Domain"][[1, 2]]},
Manipulate[
Show[ParametricPlot3D[Evaluate[r[s] /. sol], {s, s1, s2},
ImageSize -> 300, BoxRatios -> {1, 1, 1},
PlotStyle -> {Thick, Brown}, PlotRangePadding -> 1],
Graphics3D[
Dynamic@
Translate[{Thick, Red, Arrow[{{0, 0, 0}, t[s0]}], Green,
Arrow[{{0, 0, 0}, n[s0]}], Blue, Arrow[{{0, 0, 0}, b[s0]}]} /.
sol, r[s0] /. sol]]], {s0, s1, s2}]]