level 3
我爱物理爱我💤
楼主
以下是我的代码,请问为啥这个地方填16.5就说输入数据位于插值函数的数据范围之外?而且显示的根本就不是我输入的数据,输入17就没有任何问题。

L = 67.0; \[CurlyPhi] = 48.85 \[Degree]; g = 9.8;
\[Omega] = 2 \[Pi]/(24*3600.0); x0 = 0.05; time = 100;
equ = {x''[t] == -g x[t]/L + 2 \[Omega] Sin[\[CurlyPhi]] y'[t],
y''[t] == -g y[t]/L -
2 \[Omega] (Sin[\[CurlyPhi]] x'[t] + Cos[\[CurlyPhi]] z'[t]),
z[t] == (x[t]^2 + y[t]^2)/(2 L),
x[0] == x0, x'[0] == 0,
y[0] == 0, y'[0] == 0,
z[0] == x0^2/(2 L), z'[0] == 0};
s = NDSolve[equ, {x, y, z}, {t, 0, time}];
{x, y, z} = {x, y, z} /. s[[1]];
r[t_] := Sqrt[x[t]^2 + y[t]^2];
Plot[r[t], {t, 0, time}, PlotRange -> All,
AxesLabel -> {"t/s", "r/m"}]
s = FindMaximum[r[t], {t, 16.5}]
Print["t1= ", t1 = t /. s[[2]], " s"]
Print["y1= ", y1 = y[t1], " m"]
\[Theta] = ArcSin[Abs[y1]/r[t1]];
Print["\[CapitalOmega]= ", \[CapitalOmega] = \[Theta]/
t1*180/\[Pi]*3600, " \[Degree]/h"]
Print["T2= ", 360/\[CapitalOmega], " h"]
Clear["Global`*"]
2022年03月18日 05点03分
1

L = 67.0; \[CurlyPhi] = 48.85 \[Degree]; g = 9.8;\[Omega] = 2 \[Pi]/(24*3600.0); x0 = 0.05; time = 100;
equ = {x''[t] == -g x[t]/L + 2 \[Omega] Sin[\[CurlyPhi]] y'[t],
y''[t] == -g y[t]/L -
2 \[Omega] (Sin[\[CurlyPhi]] x'[t] + Cos[\[CurlyPhi]] z'[t]),
z[t] == (x[t]^2 + y[t]^2)/(2 L),
x[0] == x0, x'[0] == 0,
y[0] == 0, y'[0] == 0,
z[0] == x0^2/(2 L), z'[0] == 0};
s = NDSolve[equ, {x, y, z}, {t, 0, time}];
{x, y, z} = {x, y, z} /. s[[1]];
r[t_] := Sqrt[x[t]^2 + y[t]^2];
Plot[r[t], {t, 0, time}, PlotRange -> All,
AxesLabel -> {"t/s", "r/m"}]
s = FindMaximum[r[t], {t, 16.5}]
Print["t1= ", t1 = t /. s[[2]], " s"]
Print["y1= ", y1 = y[t1], " m"]
\[Theta] = ArcSin[Abs[y1]/r[t1]];
Print["\[CapitalOmega]= ", \[CapitalOmega] = \[Theta]/
t1*180/\[Pi]*3600, " \[Degree]/h"]
Print["T2= ", 360/\[CapitalOmega], " h"]
Clear["Global`*"]