1. 非線性方程(組)及其解
對於非線性函式 $f(x)$ ,方程 $f(x)=0$ 為非線性方程( $f:\mathbb \rightarrow \mathbb$ )。
對於n維向量 $\boldsymbol$ 和在n維空間上的變換 $\boldsymbol:\mathbb^n\rightarrow \mathbb^n$ ,方程 $\boldsymbol(\boldsymbol)=\boldsymbol$ 即可看作是乙個n元非線性方程組(共含n個標量方程,$\boldsymbol(\boldsymbol)$ 可以看作是乙個n維向量,每乙個分量均為乙個關於 $\boldsymbol$ 的n個分量的多元函式)。非線性方程(組)的求解問題也即相對應非線性函式的零點問題。
對於線性方程組,一般的n維向量的n個耦合方程組的解的理論已經非常清楚完整:它要麼有唯一的解,要麼有以線性空間的形式出現的無窮多個解,要麼沒有解。但是對於非線性方程,即使是一維的情形,也沒有乙個直截了當的方法可以判斷,遑論高維情形。對於連續的一元非線性函式,若其在兩個點的取值異號則在兩點間必定存在零點,但是這一判斷並不能推廣到更高的維度:比如在二維的情況下,函式值的兩個分量可以輪流反號,但是在相空間的表現可以是繞著原點作圓周運動而從未經過原點。在更高維的空間類似的例子更容易列舉。而解的數量更是任意,可以有唯一解,可以有無窮多解,可以有任意正整數個的解。
2. 問題條件的性質
先來考慮一維求函式在x處取值的條件數。對於求函式的演算法,輸入為x,輸出為y,根據定義:$$cond(f)=\frac= \lim\limits_\frac=\frac=|f'(x)|$$ 再來考慮一維非線性方程求解的條件數。對於求解的演算法,在計算表示式f(或者過程)已知的條件下,輸入為右端項0(或者說,右端項也就是該方程的解的殘差,當殘差恰好為零時解恰好為精確解),輸出為x,此時條件數表達當右端項離開0產生微小擾動時造成的解的差異,則有:$$cond(f)=\frac=\lim\limits_\frac=\lim\limits_\frac=(\frac)^=\frac|_$$ 求解非線性方程的條件數和計算取值的條件數恰好互為倒數。函式在零點附近導數絕對值越小,求解方程的條件數也越大,問題越病態。求解方程即函式零點的幾何表示為求解一條弧線與x軸(即y=0)的交點(如下圖)。當弧線在該處導數絕對值很小時,弧線在零點附近切線和x軸夾角很小,這使得二者交點的不確定度很大(可參考線性方程組章節中,當直線夾角越小時交點不確定度越大,矩陣越接近奇異,問題越病態),問題顯得十分病態。
然後來考慮高維非線性方程的求解。首先引進乙個矩陣,雅可比矩陣(jacobian)。對於 $\boldsymbol:\mathbb^n\rightarrow \mathbb^n$ :$$jacobian:\quad \boldsymbol_f(\boldsymbol), \quad (\boldsymbol_f(\boldsymbol))_=\frac)}$$ 雅可比矩陣在微積分中已經有過許多接觸。當將面積分的積分區域轉化為極座標表示時,$rsin\theta$ 項即來自於雅可比行列式的貢獻;在積分座標變換的普遍方法中,從正交的a座標系轉化到正交的b座標系需要乘以從b到a的對映f的雅可比行列式的絕對值。可以看出,雅可比行列式表達的是從一套座標向另一套座標轉化的過程中,面積微元的伸縮率。把類似的概念轉嫁到 $\boldsymbol:\mathbb^n\rightarrow \mathbb$ 的變換上,那麼雅可比矩陣應該表達的就是由一套座標構成的向量 $\boldsymbol$ 向另一套座標構成的向量 $\boldsymbol=\boldsymbol(\boldsymbol)$ 轉化的過程中,向量的伸縮比。講到這裡,雅可比矩陣的意義應該已經清楚了:它是乙個類似於導數的概念,描述 $\boldsymbol$ 的微小變化造成的 $\boldsymbol$ 的改變。注意,這裡粗體的 $\boldsymbol$ 和 $\boldsymbol$ 全部都是向量的概念。
雅可比矩陣的意義也可以用另乙個方法來得到。微積分的知識給出,多元函式 $y=f(\boldsymbol)$ (注意這裡y是一維的,x是n維的,即 $f:\mathbb^n\rightarrow \mathbb$ )的全微分為:$$dy=\sum\limits_^n\frac)}dx_i$$ 因而對於 $\boldsymbol=\boldsymbol(\boldsymbol)$ ,就有:$$\delta y_i=\sum\limits_^n\frac)}\delta x_j$$
$$\delta y_1=\frac)}\cdot \delta x_1+\frac)}\cdot \delta x_2...+\frac)}\cdot \delta x_n$$
$$\delta y_2=\frac)}\cdot \delta x_1+\frac)}\cdot \delta x_2...+\frac)}\cdot \delta x_n$$
$$...\qquad ...$$
$$\delta y_n=\frac)}\cdot \delta x_1+\frac)}\cdot \delta x_2...+\frac)}\cdot \delta x_n$$
最終寫成矩陣形式就得到了:
$$\boldsymbol=\begin\frac)} & \frac)} & ... & \frac)}\\ \frac)} & \frac)} & ... & \frac)}\\ ... & ... & ... & ... \\ \frac)} & \frac)} & ... & \frac)} \end\cdot \boldsymbol=\boldsymbol_f(\boldsymbol)\boldsymbol$$ 這就證明了 $\boldsymbol_f(\boldsymbol)\boldsymbol$ 正是 $\boldsymbol$ 的線性主部,也即其微分;而 $\boldsymbol$ 的係數雅可比矩陣 $\boldsymbol_f(\boldsymbol)$ 也就是導數。
因此,可以推測,對於一維非線性函式成立的條件數公式,只要把導數換成雅可比矩陣就很有可能成立。事實也確實如此,但是所謂的導數的「倒數」操作和取絕對值操作有些不同,分別換成了取逆和取範數,即:$cond(\boldsymbol)=||\boldsymbol_f^(\boldsymbol)||$.
3. 數值方法的收斂率和收斂速度
表1 非線性方程迭代演算法的收斂率,及常見求解一維方程演算法
收斂率(rate)r
收斂次數
每次迭代獲得的有效位數
解釋常見演算法
$r=1,c<1$
線性(linear)收斂
常數字(如2位-4位-6位)
$r=1$時,若$c\geq 1$ 則不收斂;
由於誤差總是以係數c每次迭代減小,縮減比相同,獲得有效位數一定
二分法;
不動點迭代(導數非零)
$r>1$
超線性(superlinear)收斂
遞增 (如2位-4位-7位)
介於線性和二次收斂之間
割線法(線性插值法);正向/反向二次插值法
;一次分式插值法
$r=2$
二次(quadratic)收斂
翻倍 (如2位-4位-8位)
誤差按平方的性質遞減,獲得的有效位數按照平方的性質翻倍
牛頓法;不動點迭代(導數為零)
線性方程組(一) 數值計算基本理論
1.線性方程組問題 形如 sum limits n a ix i b 的方程即線性方程 由關於一系列未知變數 x 1,x 2,x n 的同時成立的線性方程的集合構成線性方程組,即 sum limits n a x i b k,k 1,2,m 即為乙個由關於n個未知量的m個線性方程所構成的線性方程組。...
OpenCASCADE解非線性方程組
eryar 163.com abstract.在科學技術領域裡常常提出求解非線性方程組的問題,例如,用非線性函式擬合實驗資料問題 非線性網路問題 幾何上的曲線曲面求交問題等。opencascade中有關於非線性方程組定義的類及其求解類,本文主要介紹如何在opencascade中定義非線性方程組,及對...
N P求解非線性方程組
對於那些看別人部落格,自己卻從來不寫的人,我希望你們也多寫。對於那些只會說別人 你寫的這個別人已經寫過了 的人,請你躝開。用牛頓迭代法 newton raphson 求解非線性方程組 x1 2 10 x1 x2 2 8 0 x1 x2 2 x1 10 x2 8 0 圖1是隨著求解次數的x1與x2值 ...