mathematica 求解微分方程的问题,作图,谢谢

R = 0.008;
r = 0.0125;
Y = 47*2*3.14;
z = 0.09;
m = 0.08;
k = 9;
g = 10;
f = 0.00018;
e = 30;
NDSolve[{0.5*m*
R^4 *(y[t])^2 *(y'[t])^2/(R^2*Y^2 + z^2 - R^2*y[t])^2 +
0.2*m*r^2*(y'[t])^2 + 0.5*k*(R^2*Y^2 + z^2 - R^2*y[t]^2) +
0.5*k*z^2 - k*z*Sqrt[R^2*Y^2 + z^2 - R^2*y[t]^2] +
0.5*f*(y[t] - Y)^2 -
m*g*(Sqrt[R^2*Y^2 + z^2 - R^2*y[t]^2] - z) == e, y[0] == 0.25},
y[t], {t, 0, 1}];
Plot[Evaluate[y[t] /. %], {t, 0, 1}]
为什么图像有两根线,Evaluate[y[t] /. %]是什么意思,这个代码有神么问题,我用的mathematica8 谢谢了

……唉,同学,基础语法要懂啊。

其实你把倒数第二个分号去掉再执行,就会发现你的方程有两个解,所以画出来的图有两根线。

%代表上一个式子的输出,在这里就是你的微分方程的解。

/. 是ReplaceAll的简写,简单地说就是把你解出来的y给代入到前面的y里了。追问

1.那如果我想只显示一个解的图像,应该怎么做?
2.这段代码,运行起来到某点就停了,可能是y‘(t)的正负软件无法判断,消耗了步长,我以终端的地方为初始条件,在接下去作图,发现是能做的,有没有办法指定y‘(t)的正负?
3或者是这两个解交在一起,软件无法识别了?

谢谢

追答

1 很简单,把那个解给提取出来就行了,使用Part([[]]):也就是把你的 % 改成 %[[1]] 和%[[2]]。

2 微分方程求解出错的原因没你想的那么简单,这里恐怕并不是什么没法判断正负的问题,要知道NDSolve对微分方程进行的是数值求解。顺便你的“以终端的地方为初始条件”是什么意思?

3 所以说,微分方程求解的出错原因,并不是这么简单的。如果缺乏数值计算方面的知识,就尽量不要在这方面打算盘。在你上一个问题时我应该就提过,对于此类问题最好从方程,即模型本身的改善去着手。

追问

NDSolve[{ y[0.13] == Y - 180}, y[t], {t, 0.13, 1}, MaxSteps -> 2000];Plot[Evaluate[y[t] - Y /. %], {t, 0.13, 1}]
2.例如我将初始条件改为y[0.13] == Y - 180,计算范围为{t, 0.13, 1},而0.13就是上次停掉的点

追答

……你这不是照样在极短时间内耗尽了积分步长吗?这往往表明方程的边界条件没有取好,或者是方程本身有问题……顺便软件虽然算出来了这么一小段,但这一小段准确与否……嗯?貌似回代之后精度还成?

追问

说的是,我只是大概看一下图像的趋势是不是我想要的,恩谢谢啦

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答