MATLAB多項式計算

2021-10-23 17:05:21 字數 3743 閱讀 5878

在matlab中,n次多項式用乙個長度為n+1的行向量表示(因為是n個冪次項係數加上乙個常數項),缺少的冪次項係數為0。

例如 n次多項式:

p(x)=anxn+an-1xn-1+an-2xn-2+…+a1x+a0

表示為:

[an,an-1,an-2,…,a1,a0]

事實上,多項式的加減運算就是其所對應的係數向量的加減運算。

次數相同的兩個多項式,可直接對多項式係數向量進行加減運算。

次數不同的兩個多項式,則應該把低次的多項式係數不足的高次項用0補足,使同式中的各多項式具有相同的次數。

%次數相同

%計算(2x^2+2x)+(3x^2+3x)

>> a=[2,2,0]

>> b=[3,3,0]

>> c=a+b

c = 5 5 0

%次數不同

%計算(x^3-2x^2+5x+3)+(6x-1),對於和式的後乙個多項式6x-1,它僅為1次多項式,而前面的是3次。為確保兩者次數相同,應把後者的係數向量處理成[0,0,6,-1]。命令如下:

>> a=[1,-2,5,3];

>> b=[0,0,6,-1];

>> c=a+b

c = 1 -2 11 2

函式conv(p1,p2)

用於求多項式p1和p2的乘積。其中,p1、p2是兩個多項式係數向量

%求多項式x4+8x3-10與多項式2x2-x+3的乘積。

>> a=[1,8,0,0,-10];

>> b=[2,-1,3];

>> c=conv(a,b)

c = 2 15 -5 24 -20 10 -30

%執行結果得到乙個6次多項式:

%2x6+15x5-5x4+24x3-20x2+10x-30

函式[q,r]=deconv(p1,p2)

用於對多項式p1和p2作除法運算。其中,q返回多項式p1除以p2的商式r返回p1除以p2的余式。這裡,q和r仍是多項式係數向量。

deconv是conv的逆函式,即有p1=conv(p2,q)+r

%求多項式x4+8x3-10除以多項式2x2-x+3的結果。

>> a=[1,8,0,0,-10];

>> b=[2,-1,3];

>> [p,r]=deconv(a,b)

p = 0.5000 4.2500 1.3750

r = 0 0 0 -11.3750 -14.1250

函式polyder

p=polyder§:求多項式p的導函式。

>> x=[2,1,0,5]

>> p=polyder(x)

p = 6 2 0

%對於2x^3+x^2+5 求導得到 6x^2+2 ,得到的結果向量就是[6,2,0]

p=polyder(p,q):求p·q的導函式。

>> p=[1,2,3,4]

>> q=[3,2,1]

>> p=polyder(p,q)

p = 15 32 42 40 11

%對於x^3+2x^2+3x+4 與3x^2+2x+1 相乘之後求導

[p,q]=polyder(p,q):求p/q的導函式,導函式的分子存入p,分母存入q。

>> p=1;

>> q=[1,0,5];

>> [p,q]=polyder(p,q)

p = -2 0

q = 1 0 10 0 25

函式polyval:求代數多項式的值

y=polyval(p,x)

若x為一數值,則求多項式p在該點的值;

若x為向量或矩陣,則對向量或矩陣中的每個元素求其多項式p的值。

題:已知多項式x4+8x3-10,分別取x=1.2和乙個2×3矩陣為自變數,計算該多項式的值。

>> a=[1,8,0,0,-10];             %4次多項式係數

>> x=1.2; %取自變數為一數值

>> y1=polyval(a,x)

y1 =

5.8976

>> x=[-1,1.2,-1.4;2,-1.8,1.6]; %給出乙個矩陣x

>> y2=polyval(a,x) %分別計算矩陣x中各元素為自變數的多項式之值

y2 =

-17.0000 5.8976 -28.1104

70.0000 -46.1584 29.3216

函式polyvalm:求矩陣多項式的值

y=polyvalm(p,a):a為方陣,它以方陣為自變數求多項式的值。

例:仍以多項式x4+8x3-10為例,以2×2矩陣為自變數分別用polyval和polyvalm計算該多項式的值。

>> a=[1,8,0,0,-10];             	%多項式係數

>> x=[-1,1.2;2,-1.8]; %給出乙個矩陣x

>> y1=polyval(a,x) %計算代數多項式的值

y1 =

-17.0000 5.8976

70.0000 -46.1584

>> y2=polyvalm(a,x) %計算矩陣多項式的值

y2 =

-60.5840 50.6496

84.4160 -94.3504

函式roots:用於求多項式的全部根

x=roots(p):p為多項式的係數向量,求得的根賦給向量x,即x(1)、x(2)、…、x(n)分別代表多項式的n個根

p=poly(x):若已知多項式的全部根,則可以用poly函式建立起該多項式

若x為具有n個元素的向量,則poly(x)建立以x為其根的多項式,且將該多項式的係數賦給向量p

例:求多項式x4+8x3-10的根。

>> a=[1,8,0,0,-10];

>> x=roots(a)

x = -8.0194 + 0.0000i

1.0344 + 0.0000i

-0.5075 + 0.9736i

-0.5075 - 0.9736i

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 注意用的乘法...

matlab多項式與非多項式擬合

擬合標準 1 原始資料向量與擬合向量之間的距離最小,該距離的度量一般使用誤差平方和表示,即均方誤差 r q y 22 2 當均方誤差最小時,說明構造的擬合向量與原始向量最為接近,這種曲線擬合的方法稱為最小二乘法 3 計算均方誤差最小時的擬合係數,可以通過微積分中求解極值的方法實現 多項式擬合 1 多...

多項式計算

計算多項式的值 3x2 1 輸入 多項式係數的個數,x的值 輸出 表示式的值 include stdafx.h include iomanip.h include iostream.h define maxsize 100 此多項式是的係數是按照從a0的係數開始輸入的 當x n前的係數為0時,就輸入...