当我以角速度w(包括表面张力的影响)旋转时,我试图使用ndsolve来找到液体表面的形状,但似乎r = 0时存在奇点。
\[Gamma]0 := 0.42541
\[Gamma]1 := 0.456
g := 9.81
\[Rho] := 1000.00
zInit := 1
r0 := 1
w := 2
sol = NDSolve[{\[Gamma]0*(z'[r]*(1 + (z'[r])^2) +
r*z''[r]) == (r*(1 + (z'[r])^2)^(3/2))*(2*\[Gamma]1/
r0 + \[Rho] (g*(z[r] - zInit) - 1/4*w^2*(r0^2 - 2*r^2))),
z'[0] == 0, z'[r0] == Cos[140 Degree]}, z[r], {r, 0, r0}]
输出:
Power::infy: Infinite expression 1/0. encountered. >>
Infinity::indet: Indeterminate expression 0. ComplexInfinity encountered.
Power::infy: Infinite expression 1/0. encountered. >>
Infinity::indet: "Indeterminate expression 0.` ComplexInfinity encountered.
NDSolve::ndnum: Encountered non-numerical value for a derivative at r == 0.`.
我尝试用10 ^ -4之类的小数字代替0,但随后图形以10 ^ 40的顺序可笑地爆炸。我尝试过将初始条件更改为(z [r0] == 0,z'[r0] == Cos [140度])并尝试过StiffnessSwitching并设置起点,但这些似乎都没有帮助(图表如下图所示)。有什么帮助吗?
有些失败了:
\[Rho] := 1000.00
zInit := 1
r0 := 1
w := 2
sol = NDSolve[{\[Gamma]0*(z'[r]*(1 + (z'[r])^2) +
r*z''[r]) == (r*(1 + (z'[r])^2)^(3/2))*(2*\[Gamma]1/
r0 + \[Rho] (g*(z[r] - zInit) - 1/4*w^2*(r0^2 - 2*r^2))),
z[r0] == 0, z'[r0] == Cos[140 Degree]}, z[r], {r, 0, r0},
Method -> "StiffnessSwitching"]