化學工程過程導論/代數方程組
一個方程組是任意數量的方程,包含多個未知數,每個方程中的同一個未知數必須具有相同的值。你可能過去已經處理過大量的線性方程組,它們有許多求解方法。線性方程組的形式如下:
等等,其中 a 和 b 是常數。
任何非線性的方程組都是非線性的。一般來說,非線性方程比線性方程更難求解,但有一些技巧可以用於求解一些特殊情況的精確解。對於其他情況,可能沒有解(這甚至對於線性方程組也是正確的!),或者這些解可能只能使用類似於單變數方程的數值方法來獲得。正如你可能想象的,這些方法在多變數方程組中比在單個方程中要複雜得多,所以建議你在方程變得過於複雜時使用計算機程式。
一個方程組是可解的,當且僅當它只有有限數量的解。當然,這通常是你想要的,因為你希望結果能夠在某種程度上預測你正在設計的任何東西。
以下是判斷一組方程是否肯定無法求解,或者僅僅是可能無法求解的方法。
方程組的可解性:
- 如果一組 n 個獨立的方程有 n 個未知數,則該方程組有有限個(可能為 0)解。
- 如果一組 n 個獨立的方程有少於 n 個未知數,則該方程組有無限個解。
- 如果一組 n 個獨立或相關的方程有多於 n 個未知數,則該方程組沒有解。
- 方程組中的任何相關方程都不計入 n。
請注意,即使一個方程組是可解的,也不意味著它有解,它只是意味著沒有無限個解。
正如你可能記得的,求解線性方程組有很多方法。這些方法包括
- 線性組合:將一個方程的倍數加到其他方程中,以消除一個變數。這是高斯消元法的基礎,它是在計算機上使用的較快的方法之一。
- 克萊姆法則,它涉及係數矩陣的行列式。
- 代入法:用一個方程解出一個變數,然後將得到的表示式代入所有其他方程中,從而消除你所解出的變數。
最後一個方法,代入法,在求解一組非線性方程時最為有用。線性組合只能在所有方程中出現相同型別的項時使用(除非是線性方程組,否則這種情況不太可能發生),並且對於非線性方程組沒有通用的克萊姆法則類似方法。但是,代入法仍然同樣有效。讓我們看一個簡單的例子。
示例:
求解以下方程組,得到 X 和 Y 的值
解:我們希望使用代入法,因此我們應該問:哪個變數更容易解出?。在本例中,X(在頂部方程中)最容易解出,所以我們這樣做,得到
代入底部方程得到
可以用代入法解此方程。
令 。代入後得到
透過因式分解求解
因此,由於 ,我們得到了 Y 的四個解!
但是請注意,根據這個系統來源的不同,負解可能沒有意義,所以在繼續之前要三思!
現在讓我們考慮所有這些解。由於我們已經得到了 Y,現在可以求解 X
請注意,即使像這樣的簡單系統也有大量的解,實際上,一些系統會有無窮多個解,例如
在多個變數中,有一些方法與上一節中演示的某些方法等價。它們中許多在最純粹的形式中涉及使用微積分(實際上,泰勒方法也是如此),但與之前一樣,它們可以在犧牲一定精度的情況下簡化為近似代數形式。
如果你可以顯式地將所有方程都解出同一個變數(例如,y),那麼你可以猜測除一個變數以外的所有變數,然後比較每個方程中得到的y值之間的差異。這種方法完全是暴力破解,因為如果方程多於兩個,就需要使用這種方法猜測除一個變數以外的所有變數,而且無法判斷下一個猜測應該是什麼。從無到有地嘗試猜測多個變數,即使藉助計算機,也會變得很麻煩。
由於這種方法存在許多問題,因此不再詳細討論。
同樣,不動點迭代的多變數形式非常不穩定,通常可以認為它不會起作用。加權迭代也更加困難。
這是一種確實有效的方法,它與任何單變數方法都有所不同。在迴圈方法中,需要能夠針對每個方程解出唯一的變數,然後你將基本上以迴圈的方式進行,從一個變數(理想情況下是單個變數,例如y)的初始猜測開始,然後計算所有方程,直到你返回到具有新值的原始變數y'。如果結果與你開始時的猜測相同,則無需進行新的猜測。如果結果與你開始時的猜測不同,則需要根據結果的趨勢進行新的猜測。
更具體地說,以下是一個你可以使用的演算法
- 將所有方程解出不同的變數。
- 對一個變數(或評估第二個變數所需的多個變數)進行猜測,如果有多個變數,則會變得更加困難,因此建議使用其他方法。
- 遍歷所有方程,直到最終重新計算你最初猜測的變數(或所有變數)。注意結果是高於還是低於你的猜測。
- 對變數進行新的猜測。再次遍歷迴圈。
- 經過這兩個猜測,我們知道增加猜測會增加還是減少重新計算的值。因此,我們可以推斷出需要增加還是減少猜測才能使重新計算的值等於猜測。
- 適當地繼續猜測,直到重新計算的值等於猜測。
這種技術在工程計算中經常需要,因為它們是基於資料而不是基於數量的顯式方程。然而,正如我們將看到的,它可能很難收斂,而且這種方法不太方便手工操作(儘管它是最可靠的現實方法)。但是,它非常適合將猜測輸入計算機或電子表格,直到它起作用為止。
示例:
求解以下方程組
首先,我們需要將其中一個方程解出x,我們選擇第一個方程
- 首先,我們進行一個猜測:y = 0.1 然後從第一個方程得到x = 2.303
- 將此代回第二個方程,你將得到y' = 0.834。重新計算的值太高了。
- 現在對y進行新的猜測:例如,y = 0.5。這將導致x = 0.6931
- 代回第二個方程得到y' = -0.3665。重新計算的值太低了。
- 現在我們嘗試y = 0.25。
- 這將導致從第一個方程得到x = 1.386,從第二個方程得到y' = 0.326。太高了,所以我們需要增加猜測。
- 我們猜測y = 0.3
- 這將導致x = 1.204,因此y' = 0.185,這太低了,表明猜測的值太高了。
- 猜測y = 0.28,因此x = 1.273,y'= 0.241。因此,猜測仍然太高了。
- 猜測y = 0.27,因此x = 1.309,y' = 0.269。因此,我們現在已經收斂
我們可以透過將猜測過程程式設計到電子表格中來更輕鬆地進行。首先設定三行,如下所示
A B C 1 y guess x y' 2 =-ln(A2) =ln(B2)
在B2中,我們放入解出x的第一個函式,在C2中,我們放入解出y的第二個函式。現在,我們只需要在A2中輸入猜測,直到C2中的值與我們的猜測相同(電子表格會自動為你計算B2和C2)。為了使操作更加輕鬆,將行 放入單元格D2中。由於我們想要y'等於y,只需繼續猜測,直到D2中的值儘可能接近零即可。
作為一個更深入的示例(手工操作將非常困難),請考慮以下方程組
示例:
求解
為了使這種方法有效,我們只需要解出每個方程的唯一變數,表示式不需要是顯式的!以下將起作用(假設 X 是一個正值),這將在稍後變得明顯
現在我們需要問:哪個變數最適合作為迭代過程的初始猜測?在本例中,最好的答案是 T,因為根據這個猜測,我們可以從方程 3 計算出 P,然後從方程 2 計算出 X,最後從方程 1 計算出 T 的新猜測,並使用這個新值作為我們舊猜測的度量。
讓我們將其程式設計到電子表格中
A B C D E 1 T guess P X T' T' - T guess 2 =0.1*A2 =sqrt(A2^3 - B2) =(2*B2^2*C2^2 - 3*exp(-C2/A2))/(A2 - 2) =D2 - A2
一旦所有這些都程式設計好,您就可以像以前一樣輸入猜測,最終的結果是
多變數牛頓法
[edit | edit source]牛頓法有一個多變數擴充套件,非常有用。它收斂很快,就像單變數版本一樣,缺點是,至少手工操作起來很繁瑣。但是,計算機可以輕鬆地程式設計來完成這項工作,並且該方法不僅限於可以像迴圈方法那樣明確求解的系統。此外,與迴圈方法不同,牛頓法實際上會給出下一組值作為猜測。
該方法的工作原理如下
1. 將所有方程解為 0,即讓 對於系統中的所有函式 F。
2. 猜測所有變數的值,並將它們放入矩陣 (X) 中。計算所有函式 F 在此猜測時的值,並將它們放入矩陣 (F) 中。
3. 我們需要找到對函式在猜測值處的偏導數的估計,這將在後面介紹。
4. 構造一個矩陣(成為雅可比矩陣)如下:建立一個具有 n 行和 n 列的空矩陣,其中 n 是方程數或變數數(記住,可解系統通常具有與變數數相同的方程數)。然後用變數名稱標記列,用函式名稱標記行。它應該看起來像這樣
5. 將適當的偏導數放在標記的位置。例如,將來自函式 1 關於 x1 的偏導數放在第一個位置。
6. 一旦雅可比矩陣完全構建,找到矩陣的逆。包括這個在內的多個計算機程式可以做到這一點(警告:未經測試的軟體,使用風險自負!)。或者,如果您知道如何操作,您可以手動進行。
7. 用逆雅可比矩陣乘以轉置函式矩陣 F(將其變成列矩陣),然後從 X 的轉置(再次將其變成列矩陣)中減去它
多變數牛頓法公式
8. 結果是您的下一個猜測。重複此操作,直到收斂。
估計偏導數
[edit | edit source]您必須確保在執行此操作時保留相當多的小數位,因為透過非常小的量更改變數可能不會改變函式值太多,但即使很小的變化也很重要! |
偏導數在最基本意義上,是當除一個變數外所有變數保持不變時,具有多個變數的函式的切線的斜率。計算它的方法是
現在我們需要保持井井有條,所以讓我們引入一些符號
要計算它
- 根據你的猜測計算一個函式 F。
- 將 *一個* 變數 x 增加一個非常小的值 。**保持所有其他變數不變**。
- 重新計算 F 在修改後的猜測值下,得到 F'。
則函式 F 關於 x 的偏導數為 。
牛頓法使用示例
[edit | edit source]讓我們回到我們的典型示例
**步驟 1**:我們需要將每個方程求解為零
**步驟 2**:讓我們猜測 x = 2.303 且 y = 0.1(選擇滿足其中一個方程的猜測是一個好主意)。 那麼
F 在此猜測下的值為 ,因此根據定義
**步驟 3-5**:計算偏導數 讓我們選擇 。 那麼
類似地,可以計算出 F2 的偏導數為 和
因此,該系統的雅可比矩陣為
步驟 6:可以使用任何你所知的方法來求解該矩陣的逆矩陣
步驟 7:F 的轉置矩陣為
因此,透過矩陣乘法,可以得到以下修正矩陣
因此,應該從 x 中減去 1.3682,從 y 中減去 0.1418,得到下一個猜測值
注意,這個結果比我們最初的猜測更接近真實解。但是,由於需要進行大量繁瑣的矩陣代數運算,這種方法通常更適合計算機處理。