求解根
函數的根是函數等於零的值。
• polyroots(v) - 傳回內含係數均位於 v 中之多項式根的向量。
polyroots 預設會使用拉格爾法,此法會疊代並在複雜的平面中求解。
• root(f(var1, var2, ...), var1, [a, b]) - 傳回使函數 f 等於零的 var1 值。若指定 a 與 b,root 會在區間 [a, b] 中求解 var1。否則,就必須先以估值定義 var1,再呼叫 root。使用估值時,root 會使用正割法或 Mueller 法;在使用括入根的情況下,root 會使用 Ridder 法或 Brent 法。
引數
• f 是任意數目之變數的純量函數。
• var1 是求得根之變數 f 中所求得的純量變數。定義複數估值就可以求複數根的解。
• a, b (選用) 是實數,且 a < b,因此 f(a) 與 f(b) 的正負號相反。root 會求解區間 a ≤ x ≤ b 的根。
在以符號方式計算 root 函數時,您必須指定範圍引數 [a, b]。
• v 是內含第一個元素為常數項之多項式的係數且
2 ≤
length(v) ≤ 99 的向量。
其他資訊
• 從功能區插入 root 函數會自動為其指派「關鍵字」標籤。
• root 函數只能求解具有一個未知數之單一方程式。若要同時求解數個方程式,請使用
find 或
minerr。
• root 函數會受 TOL 影響,但不會回應大於 10-5 的 TOL。這個值是最大的收斂條件。此外,小於 10-12 之 TOL 的值不太可能會產生更好的結果,且演算法可能無法收斂。
• 若是具有多重根的函數,傳回的根取決於估值。若估值非常接近 f 的最小值或最大值,則 root 函數可能無法收斂,或會收斂至遠離估值的根。選擇適當的估值或括號,有助於事先繪製函數圖形。
• 即使預期有實數結果,變化迅速的函數可能會使根求解器傳回微小的複數部份。
• 若要求解 f(x) = g(x) 形式的方程式,請使用類似 x0 := root(f(x) − g(x), x) 的運算式
• 若運算式 f(x) 具有已知的根 r,求解 f(x) 的其他根等同於求解 h(x) = f(x) / (x − r). 的根。約除類似的已知根,有助於求解兩個可能很接近的根。求解此處定義之 h(x) 的根,一般比嘗試以不同估值求解 f(x) 的其他根來得容易。
• 若 f(x) 的根附近斜率小,則 root(f(x), x) 可能會收斂至 r 值,此值距實際根相當遠。在此情況下,即使 |f(r)|<TOL,r 可能也會距 f(r) = 0 的點很遠。若要求解更正確的根,請減少 TOL 的值。否則,請嘗試求解 root(g(x),x),其中 g(x) = [f(x))]/[(d/dx)*f(x)])。
• 在下列情況下,root 函數可能無法收斂,或會收斂成未預期的根:
◦ 運算式沒有根。
◦ 根距離初始估值太遠。
◦ 估值與根之間有局部最大值、局部最小值或中斷點。
◦ 估值非常接近函數 f 的最小值或最大值。
◦ 運算式的根是複數,但初始估值為實數 (或相反)。
◦ 有多個間距很近的根 - 請嘗試減少 TOL 的值以彼此區分。
◦ 根位於函數的平面區域 - 請嘗試減少 TOL 的值,或求解 f(x) 函數的根除以其第一個導數。