【问题标题】:The recommended way to remove a redundant part from a symbolic ordinary differential equation从符号常微分方程中删除冗余部分的推荐方法
【发布时间】:2019-11-12 10:12:18
【问题描述】:

我正在使用名为“dsolve”的 MATLAB 工具来解决 ODE,但我无法解决它,因为我的问题比我需要的要多。就像我的情况一样,我只需要前 2 个方程,但我有 4 个。问题是如何使用符号工具将其删除。

odequations = [diff(h(t), t, t) == (26*h(t))/25 
                   (11683563954355*theta(t))/1099511627776;

         diff(theta(t), t, t) == (4296857747895619*theta(t))/562949953421312 - 
           (400*h(t))/1043;

         0 == 0;

         0 == 0]

我尝试过简化(odequations)但没有成功。

我的错误信息如下所示。

Error using mupadengine/feval (line 187)
Invalid initial conditions.

Error in dsolve>mupadDsolve (line 340)
T = feval(symengine,'symobj::dsolve',sys,x,options);

Error in dsolve (line 194)
sol = mupadDsolve(args, options);

【问题讨论】:

    标签: matlab ode


    【解决方案1】:

    您可以使用isAlways 删除多余的方程。

    >> syms a
    >> eqs = [a == 10;
        a == a;
        0 == 0];
    >> eqs(isAlways(eqs)) = []
    eqs =
    a == 10
    

    isAlways 将针对非冗余方程发出警告,您可以通过调用来抑制:

    isAlways(eqs,'Unknown','false')
    

    【讨论】:

    • 太棒了。效果很好。
    猜你喜欢
    • 2012-01-22
    • 2016-08-02
    • 1970-01-01
    • 2020-10-27
    • 2022-11-17
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多