對於乙個多項式方程:a0+
a1x+
a2x2
+...
+anx
n=0a_0+a_1x+a_2x^2+...+a^nx^n=0
a0+a1
x+a
2x2
+...
+anx
n=0而言,想要準確求得解析解是一件比較困難的事,特別是次數比較高的時候,一般我們可以利用數值方法求得數值解。
先說明一下多項式方程的根的特點,對於n次多項式方程,實數根的可能情況包括(此處只說明實數根):
1、有n
個不同實根;
2、根的數量小於n
,大於0,即有多個相同實根;
3、無實數根,即方程所表示的曲線與x軸無交點;
在opencv中提供了cv::sovlepoly
函式可以用來求解多項式方程的數值解,非常方便。
官方文件中給出了定義:
輸入為係數矩陣,從0次到n次排布,
輸出為乙個列數為2的矩陣,每一行是乙個根,由實部和虛部組成,從這也能看出這個函式能夠求出方程所有的根,包括虛根。
返回值為誤差值。
直接上測試**:
#include
#include
#include
using std::cout;
using std::endl;
intmain()
; std::vector<
double
> coefs1 =
; std::vector<
double
> coefs2 =
; std::vector<
double
> coefs3 =
; std::vector<
double
> roots;
cv::mat rots;
auto ret = cv::
solvepoly
(coefs3, rots)
; cout<
type()
<<
" "<
cout<
cout<
return0;
}
注意區分使用不同的係數時求得的根的結果的不同。
【參考】
1、opencv:solvepoly多項式方程求解函式
多項式方程的輸出
一元nn次多項式可用如下的表示式表示 f x a nx n a x cdots a 1x a 0,a n ne 0f x an xn an 1 xn 1 a1 x a0 an 0 其中,a ix iai xi稱為ii次項,a iai 稱為ii次項的係數。給出乙個一元多項式各項的次數和係數,請按照如下...
Horner規則求解多項式的值
一.目的與背景知識 1 生成乙個多項式 2 根據horner規則求解多項式的值。偽 如下 y 0 for i n down to 0 y a i x y 上述偽 即描述了求解a 0 a 1 x 1 a n x n 二.實現 1 多項式展示與計算類 include namespace myalgori...
MATLAB多項式及多項式擬合
多項式均表示為陣列形式,陣列元素為多項式降冪係數 1.polyval函式 求多項式在某一點或某幾個點的值.p 1,1,1 x 2 x 1 x 1,0,1 y polyval p,x 另外求函式在某一點或某幾個點的值可以用函式feval.x 1,0,1 y feval x exp x x 注意用的乘法...