2021-03-01 Matlab 多项式的根求解
Matlab 多項式的根求解
分享一下通過多種不同的方法計算多項式的根。
-
數(shù)值根
-
使用代換法求根
-
特定區(qū)間內(nèi)的根
-
符號根
數(shù)值根
roots?函數(shù)用于計算系數(shù)向量表示的單變量多項式的根。
例如,創(chuàng)建一個向量以表示多項式?x2?x?6,然后計算多項式的根。
?
p = [1 -1 -6];r = roots(p)r = 3 -2按照慣例,MATLAB以列向量形式返回這些根。
poly?函數(shù)將這些根重新轉(zhuǎn)換為多項式系數(shù)。對向量執(zhí)行運算時,poly?和?roots?為反函數(shù),因此?poly(roots(p))?返回?p(取決于舍入誤差、排序和縮放)。
???????
p2 = poly(r)p2 = 1 -1 -6對矩陣執(zhí)行運算時,poly?函數(shù)會計算矩陣的特征多項式。特征多項式的根是矩陣的特征值。因此,roots(poly(A))?和?eig(A)?返回相同的答案(取決于舍入誤差、排序和縮放)。
使用代換法求根
通過使用代換法簡化方程來對涉及三角函數(shù)的多項式方程求解。一個變量的生成多項式不再包含任何三角函數(shù)。
例如,計算θ用于對該方程進行求解的值
3cos2(θ)?sin(θ)+3=0.
利用?cos2(θ)=1?sin2(θ),完全以正弦函數(shù)的方式表示該方程:
?3sin2(θ)?sin(θ)+6=0.
利用代換法?x=sin(θ),將該方程表示為簡單的多項式方程:
?3x2?x+6=0.
創(chuàng)建一個向量以表示多項式。
?
p = [-3 -1 6];求多項式的根。
???????
r = roots(p)r = 2×1 -1.5907 1.2573要撤消代換法,請使用?θ=sin?1(x)。asin?函數(shù)計算反正弦。
???????
theta = asin(r)theta = 2×1 complex -1.5708 + 1.0395i 1.5708 - 0.7028i驗證?theta?中的元素是否為θ中用來對原始方程求解的值(在舍入誤差內(nèi))。
???????
f = @(Z) 3*cos(Z).^2 - sin(Z) + 3;f(theta)ans = 2×1 complex 1.0e-14 * -0.0888 + 0.0647i 0.2665 + 0.0399i特定區(qū)間內(nèi)的根
使用?fzero?函數(shù)求多項式在特定區(qū)間內(nèi)的根。在其他使用情況下,如果要繪制多項式并想要知道特定根的值,則這種方法很適用。
例如,創(chuàng)建一個函數(shù)句柄以表示多項式?3x7+4x6+2x5+4x4+x3+5x2。
?
p = @(x) 3*x.^7 + 4*x.^6 + 2*x.^5 + 4*x.^4 + x.^3 + 5*x.^2;在區(qū)間?[?2,1]?內(nèi)繪制該函數(shù)。
???????
x = -2:0.1:1;plot(x,p(x))ylim([-100 50])grid onhold on從繪圖中,多項式在?0?和另一個接近?-1.5?的位置各有一個簡單的根。使用?fzero?計算并繪制接近?-1.5?的根。
???????
Z = fzero(p, -1.5)Z = -1.6056plot(Z,p(Z),'r*')符號根
如果你有 Symbolic Math Toolbox?,則還會提供以符號形式計算多項式的其他選項。一種方式是使用?solve?(Symbolic Math Toolbox)?函數(shù)。
???????
syms xs = solve(x^2-x-6)s = -2 3另一種方式是使用?factor?(Symbolic Math Toolbox)?函數(shù)計算多項式各項的因子。???????
F = factor(x^2-x-6)F = [ x + 2, x - 3]?
總結(jié)
以上是生活随笔為你收集整理的2021-03-01 Matlab 多项式的根求解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-02-28 LQG控制的主动悬
- 下一篇: 修改docker 的挂载路径 Root