首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB solve函数的输出顺序

MATLAB solve函数的输出顺序
EN

Stack Overflow用户
提问于 2013-06-22 06:43:00
回答 1查看 334关注 0票数 1

我已经修补了一段时间的MATLAB解决函数,但似乎不能确定它如何决定它输出符号变量的顺序。

具体地说,我有一个想要同时求解的方程组。

代码语言:javascript
复制
a = f(a, b, c, d)
b = f(a, b, c, d)
c = f(a, b, c, d)
d = f(a, b, c, d)

这些方程是符号的,并且具有其他符号变量(除了a、b、c和d之外)。(因此,解决方案的输出不是数字,而是符号)。

例如,当我求解倒置弹簧摆的运动方程时,我有两个方程,这两个方程都依赖于phiDDot和lenDDot。我使用solve函数通过以下调用分别求解phiDDot和lenDDot:

代码语言:javascript
复制
[eom2, eom1] = solve(Lag(1)==0, Lag(2)==0, ddphi, ddlen);

ddphi的解对应于输出矩阵的第二项,而ddlen对应于矩阵的第一项。我想知道是否有某种方法可以告诉MATLAB先输出ddphi,然后输出ddlen,或者至少确定它们的输出顺序。当我求解4个以上的变量,并试图用ode45求解微分方程时,不知道变量的顺序就成了一个大问题。

任何建议都会很有帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-24 04:04:38

我相信它是按字母顺序排列的,基于你方程式中变量名的ASCII值。根据solvedocumentation,在未提供输出变量名称的情况下,sym/symvar用于解析公式。sym/symvar的帮助表明它返回lexicographical order中的变量,即按字母顺序(symvar通过调用setdiff来做同样的事情,尽管它没有这样做)。如果您查看solve.m的实际代码(在命令窗口中输入edit solve ),并检查名为assignOutputs的子函数(R2012b中的第190行),您将看到它调用了sort,并且有一个关于字典序顺序的注释。

在R2012b (以及可能更早的版本)中,文档与R2013a的不同之处在于它似乎与您的问题相关。在R2013a中,this sentence is added

如果显式指定自变量vars,则求解器将使用相同的顺序返回解决方案。

我仍然在运行R2012b,所以我不能确认这种不同的行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17245364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档