繁体   English   中英

MATLAB求解函数的输出顺序

[英]order of the outputs for the MATLAB solve function

我已经尝试了一段时间的MATLABsolve函数,但是似乎无法确定它如何确定输出符号变量的顺序。

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

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:

[eom2, eom1] = solve(Lag(1)==0, Lag(2)==0, ddphi, ddlen);

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

任何意见将是有益的!!

我相信它是基于等式中变量名的ASCII值的字母顺序的。 根据solve文档 ,在不提供输出变量名称的情况下,使用sym/symvar解析方程式。 sym/symvar的帮助表明它按字典顺序返回变量,即按字母顺序返回( symvar通过调用setdiff进行相同的操作,即使它没有这样说, setdiff )。 如果您查看solve.m的实际代码(在命令窗口中输入edit solve类型)并检查名为assignOutputs的子功能( assignOutputs第190行),您会看到它调用了sort并有注释关于字典顺序。

在R2012b(可能还有更早的版本)中,文档与R2013a的文档有所不同,似乎与您的问题有关。 在R2013a中, 添加了以下语句

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

我仍在运行R2012b,因此无法确认这种不同的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM