2012-10-10 62 views
1

我使用Matlab的符號工具箱解決功能,並試圖解決4個方程的非線性系統,無法非線性方程組求解在Matlab

有4個變量:

x1 y1 x2 y2 

和4個參數

delta1 delta2 alpha beta 

該方程式在下面的描述由於圖像: Nonlinear equations

這裏是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

解決但是,如果我試圖取代雙方alphabeta0.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符號工具箱? Matlab實際上可以解決它。

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

回答

3

幾乎可以肯定,不,這些都不是解析解。除非alpha和beta是1或0(或者明顯是1/2),否則這些方程式相當於分析解決方案的順序太高,儘管如果不仔細觀察,我無法確定。但對於一般的真正的阿爾法,這是太多了。

是的,我知道電腦大,快,強大。他們可以做任何事情,對吧?但是看看當你試圖解決像這樣的聯立多項式方程時會發生什麼。

例如,當消除一個未知數時,兩個未知數中的兩個二次方程將減少到四階方程。具有非常係數的四階多項式方程是可解的。但是你有四個方程,每個方程本質上都是二次方程。 (每個方程中都有變量的產品。)因此,其中4個將相當於一個八階多項式,如果您嘗試以符號方式解決它。它將具有一般的非常數係數。而且我們知道五階多項式或更高階通常不會有解析解。所以,雖然你可能會很幸運,但可能對於某些特殊值的alpha &測試版,幾乎可以肯定的是,沒有這樣的分析解決方案。

而對於一般真正的阿爾法,情況更糟。根本沒有期望解決方案存在。事實是,當你嘗試時,它失敗了。但是,嘿,一臺更大的電腦可能會找到答案。對不起,但並非如此。

2

您應該嘗試使用Matlab的mupad命令。它會打開一個類似於Maple的符號編程環境,它比符號庫更強大。如果你的方程有解決方案(甚至是一些想象的解決方案,或者如果他們的解決方案真的是特例),符號環境肯定會找到它們。

試試看!

編輯: 看到@woodchips答案你也可以嘗試解決已知α+β範圍的方程式(似乎知道這個比我多!)。您可以對它們具有的值進行假設,並從一個範圍進行迭代。我只是不知道它是否會起作用,這正是我想爲你的情況做的。

仍然不放棄與mupad嘗試,它可能工作(空間,如果你作出假設,如:assume alpha real樣的命令只是檢查幫助)