簡體   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