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}]
之前问过的,我不太懂是哪里的问题,谢谢了 展开
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}]
之前问过的,我不太懂是哪里的问题,谢谢了 展开
1个回答
展开全部
首先,是NDSolve而不是NDsolve,Mathematica是区分大小写的。
其次……其实你看看警告信息就该明白的——方程过定了,也就是,你给的方程数目过多了(两个未知数你给了三个方程),试着去掉了那个代数方程(也就是第二个方程,不含导数的那个)之后,就可解了。不过积分步长又是早早耗光了,但是好歹算到了0.3多(图上只到了0.15,那是因为后面是复根),比之前好很多嘛。
————
试着强制提升了一下计算精度,发现只能算到0.15左右。看来默认情况下能算到0.3是因为误差……
————
仔细一看,你的那个代数方程还写错了……是y[t]而不是Y[t]。然后,去掉你的第一个方程,保留第二三个方程,这个问题就可解了!你试试!:
追问
你的回答很精彩,我也做出了图像,很开心,但是离我想要的还是有差距,我也在想问题出在哪里。
PS小问题:为啥我把解微分方程的t的范围改成(0,4)就会得到一个很奇怪的图像,与其他的不太一样,我想知道为什么,谢谢
追答
嗯,告诉你个不幸的消息,经过实验,我发现前面我贴了图的解法,是不对的。能产生这个解的图形,只是因为产生了数值误差,强制提升精度后会发现方程不可解……所以,你再把方程改改吧……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询