簡體   English   中英

無法在Matlab中求解非線性方程

[英]Unable to solve nonlinear equations in Matlab

我正在使用具有求解功能的Matlab符號工具箱 ,並嘗試求解由4個方程組成的非線性系統,

具有4個變量:

x1 y1 x2 y2

和4個參數

 delta1 delta2 alpha beta

下圖描述了這些方程式: 非線性方程

這是Matlab代碼:

syms x1 x2 y1 y2 alpha beta delta1 delta2

[x1,y1,x2,y2] = solve('delta1 * x1^alpha * y1^(1 - alpha) = (1 - x2)^alpha * (1 - y2)^(1-alpha)',...
    'delta2 * x2^alpha * y2^(1 - alpha) = (1 - x1)^beta* (1 - y1)^(1-beta)',...
    'alpha / (1-alpha) * (1 - y2) / (1 - x2) = beta / (1 - beta) * y2/x2',...
    'alpha / (1-alpha) * y1 / x1 = beta / (1 - beta) * (1 - y1) / (1 - x1)','x1','y1','x2','y2')

Matlab返回:

警告:找不到明確的解決方案。

>在81解決

但是,如果我嘗試將alphabeta都替換為0.5

[x1,y1,x2,y2] = solve('delta1 * x1^0.5 * y1^ 0.5 = (1 - x2)^0.5* (1 - y2)^0.5',...
    'delta2 * x2^0.5 * y2^0.5 = (1 - x1)^0.5* (1 - y1)^0.5',...
    '(1 - y2) / (1 - x2) = y2/x2',...
    'y1 / x1 = (1 - y1) / (1 - x1)','x1','y1','x2','y2')

然后Matlab將給出結果。

所以我想知道:

  1. 這些方程式真的不可解嗎?

  2. 如果可以解決,我是否以錯誤的方式使用Matlab Symbolic Toolbox? Matlab實際上可以解決它。

  3. 如果Matlab沒有足夠的能力來解決它,還有其他工具可以解決非線性方程組嗎?

幾乎可以肯定,不,這些都是無法解析的。 除非alpha和beta為1或零(或顯然為1/2),否則這些方程將等效於對於解析解來說太高階的方程,盡管如果不仔細看我就無法確定。 但是對於一般的真實Alpha,這是太多的事情了。

是的,我知道計算機是大型,快速,強大的。 他們可以做任何事情,對不對? 但是,看看當您嘗試求解聯立多項式方程時會發生什么。

例如,當您消除一個未知數時,兩個未知數中的兩個二次方程將簡化為四階方程。 可以求解具有非恆定系數的四階多項式方程。 但是您有四個方程,每個方程本質上都是二次的。 (每個方程式中都有變量的乘積。)因此,如果您嘗試用符號方式求解,則其中的4個將等於八階多項式。 它將具有一般的非恆定系數。 而且,我們知道5階多項式或更高階的多項式通常沒有解析解。 因此,盡管您可能會很幸運,但也許可以肯定地說,對於某些特殊的alpha和beta值,沒有這樣的分析解決方案。

對於一般的真實Alpha,情況更糟。 根本就沒有解決方案的期望。 當您嘗試時,它失敗的事實支持這一點。 但是,嘿,一台更大的計算機可能會找到答案。 對不起,但事實並非如此。

您應該嘗試使用Matlab的mupad命令。 它打開了一個類似於Maple的符號編程環境,它比符號庫功能強大得多。 如果您的方程式有解(甚至有些虛構的解,或者它們的解確實是特定情況),則符號環境肯定會找到它們。

試試看!

編輯:看到@woodchips答案(似乎比我知道的更多!),您也可以嘗試求解已知alpha beta范圍的方程式。 您可以假設它們將具有哪些值並從一個范圍進行迭代。 我只是不知道它是否會起作用,這就是我在您的情況下要嘗試的方法。

仍然不要放棄嘗試使用mupad ,它可能會起作用(在空間上,如果您做一些假設,例如: assume alpha real的命令。只需檢查幫助即可)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM