【求助】NDSolve函数无法输出数值解
mathematica吧
全部回复
仅看楼主
level 2
题主正在用mma解决物理问题,求解带有角速度的球体的运动轨迹。将方程组输入后,方程“y'[0]==36.53”被替换为True,删除后提示方程约束条件的数目不等于系统的总微分阶数 (6),请大家帮忙看看如何解决这个问题。
R = 0.105; M = 0.45; Cd = 0.24; Cw = 1.7; g = 9.8; S = 0.0346; \[Rho] \
= 1.3;
w0 = 88
ans = NDSolve[{M*
x''[t] == -(1/2) \[Rho] Sqrt[x'[t]^2 + y'[t]^2 + z'[t]^2]
x'[t] S Cd - \[Rho]*R^3 w0*y'[t] Cw,
M*y''[t] == -(1/2) \[Rho] Sqrt[x'[t]^2 + y'[t]^2 + z'[t]^2]
y'[t] S Cd + \[Rho]*R^3 w0*x'[t] Cw,
M*z''[t] == -M*g -
1/2 \[Rho] Sqrt[x'[t]^2 + y'[t]^2 + z'[t]^2] z'[t] S Cd,
x[0] == 0, y[0] == 0, z[0] == 0, x'[0] == 7.77, y'[0] == 36.53,
z'[0] == 7}, {x, y, z}, {t, 0, 3}]
ParametricPlot3D[Evaluate[{x[t], y[t], z[t]} /. ans], {t, 0, 1.2},
PlotTheme -> "Scientific", AxesLabel -> {"x", "y", "z"}]
谢谢大家!
2024年04月18日 14点04分 1
level 8
这大概率是你在之前运行的过程中误定义了y'[0]=36.53。实际上你一楼的代码完全是可以运行的。
可以使用Clear@Derivative,或者重新启动mathematica。
2024年04月19日 07点04分 2
1