【问题标题】:Simplifying the solution of differential equations in Matlab在Matlab中简化微分方程的解
【发布时间】:2021-04-20 14:13:29
【问题描述】:

我尝试了各种方法来简化以下微分方程的解,但无法将其完全简化为 0.01e^(-0.15t)sin(9.999t+1.556),并且带有根式的表达式也没有得到适当的简化。有人可以解释一下如何在尽可能减少术语数量的情况下完全简化解决方案吗?

syms y(t) m k x c 

Dy = diff(y,t);
Dy2 = diff(y,t,2);  
m = 10; c = 3; k = 1000; 
ode = m*Dy2 +c*Dy + k*y == 0;
eqns = [ode]
cond = [y(0) == 0.01,Dy(0) == 0];
ySol(t) = dsolve(eqns,cond)
ySol(t) = simplify(ySol(t),'steps',500)
pretty(ySol(t)) 
vpa(ySol(t), 5)
simplify(ySol(t))

【问题讨论】:

  • 您确定所需的表格真的是一个解决方案吗?当前生成的代码是什么?也许绘制一些 t 的当前和预期结果,以表明 Matlab 确实不够简化。
  • 是的,它是Matlab输出的一种简化形式。解决方案 Matlab 包含一个形式为 acos(b) + csin(d) 的项,这可以简化为单个余弦或正弦函数。

标签: matlab equation simplify


【解决方案1】:

vpa函数的输出传递给simplify函数,如下:

vpa(simplify(vpa(ySol(t), 3)),3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多