各位小哥哥小姐姐,萌新在此求教了,NDSolve求解二阶微分方程
mathematica吧
全部回复
仅看楼主
level 2
CAOOAC698 楼主

x、y代表两个广义坐标,ab是有效载荷处加速度,需要用x[t]、y[t]、x'[t]、y'[t]、x''[t]、y''[t]表示出来,但为什么ab的计算结果是二维列表呢?不应该是一维吗?我想得到的是ab随时间变化曲线。
Clear["Global`*"];
equ = {x'[t] == y[t], 2 y'[t] == -0.1 y[t] - Sin[x[t]], x[0] == 0, y[0] == 1.9};
d = {x[t], y[t]} /. First@NDSolve[equ, {x, y}, {t, 0, 100}]; (*------位移------*)
v = D[d, t]; (*------速度------*)
a = D[d, {t, 2}]; (*------加速度------*)
ab =Cos[d[[2]]]*(a[[1]] - d[[1]]*v[[2]]^2) -Sin[d[[2]]]*(2*v[[1]]*v[[2]] + d[[1]]*a[[2]]) ;
Dimensions[d]
Dimensions[v]
Dimensions[Subscript[a, b]]
Plot[ab, {t, 0, 100}]
2020年11月28日 07点11分 1
level 2
CAOOAC698 楼主
这里是ab[t]的数学表达式
2020年11月28日 08点11分 2
吧务
level 10
不管怎么样,你先把下标改掉,我再来看你的代码问题在哪。
精品区常见问题栏有一篇专门讲下标的。总之就是新手勿用下标。
2020年11月28日 09点11分 3
问题已更新,谢谢小吧主[献花]
2020年11月28日 12点11分
level 2
CAOOAC698 楼主

(*x、y代表两个广义坐标,ab是有效载荷处加速度,需要用x[t]、y[t]、x'[t]、y'[t]、x''[t]、y''[t]表示出来,但为什么ab的计算结果是二维列表呢?不应该是一维吗?我想得到的是ab随时间变化曲线。*)
Clear["Global`*"];
equ = {x'[t] == y[t], 2 y'[t] == -0.1y[t] - Sin[x[t]], x[0] == 0,y[0] == 1.9};
d = {x[t], y[t]} /.First@NDSolve[equ,{x, y}, {t, 0, 100}];
(*------位移------*)
v = D[d, t];
(*------速度------*)
a = D[d, {t,2}];
(*------加速度------*)
ab = Cos[d[[2]]]*(a[[1]] - d[[1]]*v[[2]]^2)-Sin[d[[2]]]*(2*v[[1]]*v[[2]] + d[[1]]*a[[2]]);
Dimensions[d]
Dimensions[v]
Dimensions[ab]
其中:
很奇怪,为什么会有Dimensions[ab]=2?输出值不该是1吗?另外,Dimensions[ab]=2的情况下竟然画出了图,还是1条曲线。
2020年11月28日 12点11分 4
吧务
level 10
此问题已在别处得到解决。
2020年11月28日 15点11分 5
……这样子不好,不好哇。
2020年12月05日 04点12分
@xzcyr 你指的是哪方面不好?是说答题应优先在贴吧,还是说不应以此类发言来阻止其他人重新回答问题?
2020年12月05日 11点12分
@asdasd1dsadsa 我指的是至少应该把怎么解决的给贴出来,不然这帖差不多也就报废了。
2020年12月05日 11点12分
@xzcyr 我写这句话一般是在手机上看贴吧的时候,这种情况作复制粘贴之类的操作稍麻烦,所以我懒得写,就顺手回一句表示题主已不需要帮助。
2020年12月05日 12点12分
吧务
level 15
……这个问题可以简化如下:
为什么
aaa + bbb // Dimensions
输出
{2}
?
这个在帮助里其实写了:
2020年12月05日 04点12分 6
1