我怎么解这个方程?

1视图(30天)
Joo Seo李
Joo Seo李 2020年5月23日
回答: 约翰D 'Errico 2020年5月23日
给定的方程是
d ^ 2 (x) / dt ^ 2 = 0.002 cos(型)sin (x)
我试着解决它
在t = 0:100
dsolve (“D2x = = 0.002 * cos(型)sin (x)”,“x (0) = = 0, Dx (0) = = 0”)
结束
情节(x, t)
但它不工作

接受的答案

约翰D 'Errico
约翰D 'Errico 2020年5月23日
我只添加一个单独的答案来解释如何使用dsolve,然后如何策划解决方案。
你不使用一个循环来解决它。没有必要改变t在一个循环中,自解,如果能够找到一个dsolve,将t的函数。不管怎样,这些多个调用dsolve保存没有导致任何变量能够那么阴谋。
我可能会尝试:
信谊x (t)
Dx = diff (x, t);
索尔= dsolve (diff (x, t, 2) = = 0.002 * cos(型)sin (x) x (0) = = 0, Dx (0) = = 0)
警告:不能找到明确的解决方案。
在dsolve >(第190行)
索尔=
(空符号)
然而MATLAB放弃,无法找到一个解决方案。这可能意味着它只是需要一点帮助。例如,移位的余弦值转换成一对术语使用身份,因此;
因为(型)= cos (x) * cos (t) + sin (x) *罪(t)
然而这也失败了。
索尔= dsolve (diff (x, t, 2) = = 0.002 * (cos (x) * cos (t) + sin (x) * sin (t)) sin (x), x (0) = = 0, Dx (0) = = 0)
警告:不能找到明确的解决方案。
在dsolve >(第190行)
索尔=
(空符号)
不幸的是,它很容易编写一个微分方程,缺乏一个解决方案,至少dsolve可以处理。dsolve设法找到解决方案,例如在一个更简单的问题,然后从fplot情节可以获得。
索尔= dsolve (diff (x, t) = = sin (x) x (0) = = 1)
索尔=
2 *:exp (t +日志(tan (1/2))))
fplot(溶胶,[0,3 *π])
缺乏一个解决方案,你最好使用一个数值解算器。埃米尔显示怎么做了。

答案(1)

埃米尔哈姆萨
埃米尔哈姆萨 2020年5月23日
你ode似乎并没有一个解析解(至少dsolve()不能找到一个解决方案)。你可以尝试一个数值解算器,如数值。二阶颂歌。看到这个例子: //www.tianjin-qmedu.com/help/matlab/ref/ode45.html bu3uj8b 。这是你的代码方程
dfun = @ (t, x) [x (2);0.002 * cos (x (1) - t) sin (x (1)));
时间= (100 0);
ic = [0;0);
(t, x) = ode15s (dfun、时间、集成电路);
情节(t, x);
传奇({“x”,“xdot”})

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!