當前位置:妙知谷 >

遊戲數碼 >電腦 >

matlab多項式

matlab多項式

Matlab的應用-多項式函數及多項式擬合

本節將向大家簡要介紹matlab在多項式處理方面的應用。

多項式函數主要有:

roots求多項式的根

poly特徵多項式

polyval多項式的計算

poly2str(p,'x')多項式代換

polyfit多項式曲線擬合

conv多項式乘法

deconv多項式除法

polyder微分多項式

polyint 多項式積分

下面我們將介紹這些函數的用法:

1,roots---求多項式的根

格式:roots(c)

説明:它表示計算一個多項式的根,此多項式係數是向量c的元素.如果c有n+1個元素,那麼此多項式為:

c(1)*x^n+c(2)*x^(n-1)+c(3)*x^(n-2)+--+c(n)*x+c(n+1)

2,poly---特徵多項式

格式:poly(a)

説明:(1)如果a是一個n階矩陣,poly(a)是一個有n+1個元素的行向量,這n+1個元素是特徵多項式的係數(降冪排列).

(2)如果a是一個n維向量,則poly(a)是多項式(x-a(1))*(x-a(2))*..(x-a(n)),即該多項式以向量a的元素為根。

3,polyval—多項式計算

格式:polyval(v,s)

説明:

如果v是一個向量,它的元素是一個多項式的係數,那麼polyval(v,s)是多項式在s處的值.

如果s是一個矩陣或是一個向量,則多項式在s中所有元素上求值

例如:

v=[1234];vv=poly2str(v,’s’)

(即v=s^3+2*s^2+3*s+4)

s=2;

x=polyval(v,s)

x=

26

例如:

v=[1234];

s=[24];

polyval(v,s)

ans=26112

4,conv-多項式乘法

例:as=[123]

as=

123

>>az=[2421]

az=

2421

>>conv(as,az)

ans=

28161783

conv(az,as)

ans=

28161783

5,deconv-多項式除法

例:deconv(az,as)%返回結果是商式的係數

ans=

20

[awwq,qw]=deconv(az,as)%awwq是商式的係數,qw是餘式的係數

awwq=

20

qw=

00-41

6,polyder微分多項式

polyder(as)

ans=

22

7,polyfit--多項式曲線擬合

格式::polyfit(x,y,n)

説明:polyfit(x,y,n)是找n次多項式p(x)的係數,這些係數滿足在最小二乘法意義下p(x(i))~=y(i).

“人口問題”是我國最大社會問題之一,估計人口數量和發展趨勢是我們制定一系列相關政策的基礎。有人口統計年鑑,可查到我國從1949年至1994年人口數據資料如下:

matlab多項式

如何確定我國人口的發展變化規律呢?

一般地,我們採用下面的分析處理方法:

首先,在直角座標系上作出人口數與年份的散點圖象。觀察隨着年份的增加人口數與年份變化關係,初步估計出他們之間的關係可近似地可看做一條直線。那麼我們如何把這條直線方程確定出來呢?並用他來估計1999年我國的人口數。

方法一:先選擇能反映直線變化的兩個點,如(1949,541.67),(1984,1034.75)二點確定一條直線,方程為N=14.088t–26915.842,代入t=1999,得N»12.46億

方法二:可以多取幾組點對,確定幾條直線方程,將t=1999代入,分別求出人口數,在取其算數平值。

方法三:可採用“最小二乘法”求出直線方程。這就是曲線擬合的問題。

方法一與方法二都具有一定的侷限性,下面我們重點介紹數據的曲線擬合。所謂曲線擬合是指給定平面上的n個點(xi,yi),i=1,2,….,n,找出一條曲線使之與這些點相當吻合,這個過程稱之為曲線擬合。最常見的曲線擬合是使用多項式來作擬合曲線。曲線擬合最常用的方法是最小二乘法。其原理是求f(x),使達到最小。matlab提供了基本的多項式曲線擬合函數命令polyfit

格式::polyfit(x,y,n)

説明:polyfit(x,y,n)是找n次多項式p(x)的係數,這些係數滿足在最小二乘法意義下p(x(i))~=y(i).

已知一組數據,用什麼樣的曲線擬合最好呢?可以根據散點圖進行直觀觀察,在此基礎上,選擇幾種曲線分別擬合,然後比較,觀察那條曲線的最小二乘指標最小。

下面我們給出常用的曲線(下面的為變量,等為參數)

直線:

多項式:(一般情況下,n不宜過高,n=2,3)

雙曲線:y=

指數曲線:

冪函數:

有些曲線的擬合,為了利用數學軟件,在擬合前需作變量替換,化為對未知數的線性函數。

思考:如果根據,曲線是雙曲線或指數曲線及冪函數等,如何利用matlab的多項式擬合函數來作曲線擬合?

例2:在化學反應中,為研究某化合物的濃度隨時間的變化規律。測得一組數據如下表所示:

matlab多項式 第2張

試求濃度y與時間t的函數關係。並推斷第20、40分鐘時的濃度值。

本題是一個可以用數據的曲線擬合來解決的問題。下面是利用matlab編的一段程序。

clear;

%錄入數據

xy=[14

26.4

38.0

48.4

59.28

69.5

79.7

89.86

910

1010.2

1110.32

1210.42

1310.5

1410.55

1510.58

1610.6];

x=xy(:,1);

y=xy(:,2);

plot(x,y,'r*');%畫出散點圖,觀察曲線走勢

holdon;t=0:.3:10;pxdxs=polyfit(x,y,2);

pxd=poly2str(pxdxs,'x')

pxdx=polyval(pxdxs,t);plot(t,pxdx,'-k')

方法2:解下述方程組:(這是超定方程組(方程個數大於未知數個數的方程),這個方程組沒有普遍意義下的解,但可以在最小二乘法意義下求解)

把它寫成矩陣乘法的形式:

y=a*[a,b,c]'

其中,a=[1,1,1;122^2;133^2;144^2;155^2;166^2;177^2;188^2;199^2;11010^2;…

11111^2;11212^2;11313^2;11414^2;11515^2;11616^2];

y=[010.210.3210.4210.510.5510.5810.6]';

於是,abc=ay

標籤: MATLAB 多項式
  • 文章版權屬於文章作者所有,轉載請註明 https://miaozhigu.com/sm/diannao/8mj1gl.html