mathematica 解微分方程组的问题,谢谢了

R=0.008;r=0.0125;Y=47.0*2.0*Pi;Z=0.09;m=0.08;k=9.0;g=9.8;f=0.000586;e=28;NDsolve[{R^2... R = 0.008;
r = 0.0125;
Y = 47.0*2.0*Pi;
Z = 0.09;
m = 0.08;
k = 9.0;
g = 9.8;
f = 0.000586;
e = 28;

NDsolve[{R^2*y[t]*y'[t] + z[t]*z'[t] == 0,
R^2*Y^2 + Z^2 == R^2*(Y[t])^2 + (z[t])^2,
0.5*m*(z'[t])^2 + 0.2*m*r^2*(y'[t])^2 + 0.5*k*(z[t] - Z)^2 +
0.5*f*(y[t] - Y)^2 - m*g*(z[t] - Z) == e, y[0] == Y,
z[0] == Z}, {z[t], y[t]}, {t, 0, 1}, MaxSteps -> 20000];
Plot[Evaluate[y[t] /. %], {t, 0, 1}]
之前问过的,我不太懂是哪里的问题,谢谢了
展开
xzcyr
2013-04-10 · TA获得超过3399个赞
知道大有可为答主
回答量:1400
采纳率:100%
帮助的人:667万
展开全部

首先,是NDSolve而不是NDsolve,Mathematica是区分大小写的。

其次……其实你看看警告信息就该明白的——方程过定了,也就是,你给的方程数目过多了(两个未知数你给了三个方程),试着去掉了那个代数方程(也就是第二个方程,不含导数的那个)之后,就可解了。不过积分步长又是早早耗光了,但是好歹算到了0.3多(图上只到了0.15,那是因为后面是复根),比之前好很多嘛。

————

试着强制提升了一下计算精度,发现只能算到0.15左右。看来默认情况下能算到0.3是因为误差……

————

仔细一看,你的那个代数方程还写错了……是y[t]而不是Y[t]。然后,去掉你的第一个方程,保留第二三个方程,这个问题就可解了!你试试!:

追问
你的回答很精彩,我也做出了图像,很开心,但是离我想要的还是有差距,我也在想问题出在哪里。
PS小问题:为啥我把解微分方程的t的范围改成(0,4)就会得到一个很奇怪的图像,与其他的不太一样,我想知道为什么,谢谢
追答
嗯,告诉你个不幸的消息,经过实验,我发现前面我贴了图的解法,是不对的。能产生这个解的图形,只是因为产生了数值误差,强制提升精度后会发现方程不可解……所以,你再把方程改改吧……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式