NDSolve遇到导数非数值量 但是自己没有发现没定义的参量
mathematica吧
全部回复
仅看楼主
level 1
Remove[y, z, z0, y0, y1, z1, y10, z10, k1, k2, s0, m, M, C11, C12];
(*结构参量*)
(*国际单位制*)
m = 0.1;
L = 0.3;
g = 9.8;
\[Omega]0 = 7;
C11 = 0;
C12 = 0;
\[Gamma] = 0.1;
\[Rho] = 7.9*10^3;(*密度*)
S = 4*10^-3;(*横截面积*)
Ex = 2*10^6;
Ix = 10^-11 ;
Ep = 2*10^3;
T = 10;
(*初值参量*)
y1 = 0.01;
z1 = 0.05;
z10 = 0.01;
Lag = m/2 (y'[t]^2 + z'[t]^2) + (\[Rho]*S*L)/10 z0'[t]^2 - (
4*Ex*S*z0[t]^4)/(5*L^3) -
1/2 m*\[Omega]0^2*((y[t] - z0[t]^2/L)^2 + (z[t] - z0[t])^2)
Phi = 1/2 (C11*z0'[t]^2 + \[Gamma]*(y'[t]^2 + z'[t]^2 ));
ode = {D[Lag, y[t]] - D[D[Lag, y'[t]], t] == D[Phi, y'[t]],
D[Lag, z[t]] - D[D[Lag, z'[t]], t] == D[Phi, z'[t]],
D[Lag, z0[t]] - D[D[Lag, z0'[t]], t] == D[Phi, z0'[t]]}
bc = {y[0] == y1, z[0] == z1, z0[0] == z10, z0'[0] == 0.0001,
y'[0] == 0.0001, z'[0] == 0.0001};
sol = NDSolve[{ode, bc}, {y, z, z0}, {t, 0, T}, MaxSteps -> 500000];
f[t_] := {y[t], z[t]} /. sol[[1]];
Animate[ParametricPlot[Evaluate[f[t]], {t, 10, t1}], {t1, 0.01, T,
0.001}, AnimationRunning -> False, AnimationRate -> 0.5]
(以下是Lag和ode的输出)
-237037. z0[t]^4 -
2.45 ((z[t] - z0[t])^2 + (y[t] - 3.33333 z0[t]^2)^2) +
0.05 (Derivative[1][y][t]^2 + Derivative[1][z][t]^2) +
0.948 Derivative[1][z0][t]^2
{-4.9 (y[t] - 3.33333 z0[t]^2) - 0.1 (y^\[Prime]\[Prime])[t] ==
0.1 Derivative[1][y][t], -4.9 (z[t] - z0[t]) -
0.1 (z^\[Prime]\[Prime])[t] ==
0.1 TextCell[""] Derivative[1][z][t], -948148. z0[t]^3 -
2.45 (-2 (z[t] - z0[t]) -
13.3333 z0[t] (y[t] - 3.33333 z0[t]^2)) -
1.896 (z0^\[Prime]\[Prime])[t] == 0}
哪里有非数值量呢...
2018年04月26日 15点04分 1
吧务
level 15
这么大个TextCell[""]在那儿……
2018年05月05日 04点05分 2
1