- 多項式及函數(shù)
1.多項式的表示
MATLAB用一維向量來表示多項式,如多項式
表示為,缺少的冪次系數(shù)用‘0’補充
2.多項式求根
求多項式的根即求使多項式為0的值,也即數(shù)學(xué)中的零點問題,MATLAB提供了 roots函數(shù)求根 ,用法如下:
>> P=[1 2 1];%x^2+2x+1=0
>> roots(P)
ans =
-1
-1
根據(jù)多項式的根反求多項式則用 poly函數(shù) ,一般多項式是行向量,根是列向量,例如:
> > r=[-1;-1];
> > poly(r)
ans =
1 2 1
3.多項式四則運算
加法:如果兩個多項式大小相同時,則多項式相加與標(biāo)準(zhǔn)的數(shù)組加法相同
乘法:使用conv函數(shù)
除法:使用 deconv函數(shù) ,[a,r]=deconv(b,c)其中a為b除c的商,r為余數(shù)
>> a=[1 1];b=[1 -1];%(x+1)*(x-1)
>> c=conv(a,b)
c =
1 0 -1
>> a=[1 3 1];b=[1 1];%x^2+3x+1除x+1
>> [c,d]=deconv(a,b)
c =
1 2
d =
0 0 -1
4.多項式的導(dǎo)數(shù)、積分及其計算
導(dǎo)數(shù):函數(shù)polyder可以實現(xiàn)多項式的求導(dǎo)
積分:函數(shù) polyint(P,k) 返回多項式P的積分,積分常數(shù)項為k,默認(rèn)值為0
計算:函數(shù) polyval(P,x) 返回多項式在x處的值,x可為標(biāo)量也可為向量
>> a=[1 2 1];polyder(a)
ans =
2 2
>> a=[1 2 1];b=polyder(a)
b =
2 2
>> polyint(b,3)
ans =
1 2 3
>> polyval(a,1)
ans =
4
5.有理多項式
函數(shù) [r,p,k]=residue(num,den) 可執(zhí)行部分分式展開的的運算,等式兩邊互換可實現(xiàn)逆運算
> > num=[2 -19 29 40];
> > den=[1 -15 68 -96];
> > [r p k]=residue(num,den)
r =
4.0000
5.0000
2.0000
p =
8.0000
4.0000
3.0000
k =
2
本例結(jié)果可表示為:
- 數(shù)據(jù)插值
數(shù)據(jù)插值是指數(shù)據(jù)缺失時所進(jìn)行的一種處理,在數(shù)據(jù)分析、圖像處理等很多領(lǐng)域經(jīng)常用到,參加過數(shù)學(xué)建模比賽的小伙伴可能也用過,有多項式插值、分段插值、三角函數(shù)插值等。
- 一維函數(shù)插值
當(dāng)插值函數(shù)y=f(x)一元函數(shù)時為一維插值,使用interp1函數(shù),語法格式為 **Vq=interp1(X,V,Xq,str)** :X為自變量取值范圍,V為函數(shù)值或一向量,長度與X一致,Xq為插值點向量,str為字符串變量,設(shè)定插值方法。
str='nearest': 鄰近點插值 。插值點的值為與該插值點最近的數(shù)據(jù)點函數(shù)值。速度快但平滑性差。
str='linear': 線性插值法 。根據(jù)相鄰數(shù)據(jù)點的線性函數(shù)估計插值點的值。占用的 內(nèi)存比鄰近點多,運算時間長 ,但其結(jié)果是連續(xù)的,頂點處斜率會改變。
str='spline': 三次樣條插值 。在相鄰數(shù)據(jù)點建立三次多項式函數(shù)確定插值。運算時間最長,但平滑性最好。此外還有'pchip','cubic','v5cubic'等。
y=interpft(x,n) 為一維快速傅里葉插值。當(dāng)數(shù)據(jù)點呈現(xiàn)周期分布時,用傅里葉變換把輸入數(shù)據(jù)x變換到頻域,然后用更多點n的傅里葉逆變換變回時域,其結(jié)果是對數(shù)據(jù)進(jìn)行增采樣。
x=0:10;
y=sin(x);
z=interpft(y,20);
xx=linspace(0,10,20);%生成0到10之間20個線性等分點
plot(x,y,'-o',xx,z,':o')
legend('原始數(shù)據(jù)','插值結(jié)果','Location','North')
2.二維數(shù)據(jù)插值
當(dāng)插值函數(shù)y=f(x)為二元函數(shù)時為二維插值,語法格式為 **Vq=interp2(X,Y,V,Xq,Yq,str)** 其中X,Y,V是具有相同大小的矩陣,V(i,j)是數(shù)據(jù)點[X(i,j),Y(i,j)]上的函數(shù)值;Xq,Yq為待插值數(shù)據(jù)網(wǎng)格,str為字符串變量表示不同的插值方法,和一維的相似,例如
[X,Y]=meshgrid(-10:0.25:10);%產(chǎn)生數(shù)據(jù)柵格點
Z=peaks(X,Y); %計算已知點的函數(shù)值
[x,y]=meshgrid(-10:0.05:10); %產(chǎn)生更精密的插值點
z=interp2(X,Y,Z,x,y);
mesh(X,Y,Z),hold on;
mesh(x,y,z+20),hold off;
axis([-3 3 -3.5 3.5 -6 30])
- 函數(shù)極限
極限概念很簡單,在中學(xué)時就有所接觸,這里只簡單介紹一些使用極限的函數(shù)
limit(fun,x,a) :當(dāng)x趨于a時,返回函數(shù)fun的極限值。
limit(fun):默認(rèn)當(dāng)x趨于0時求極限
limit(fun,x,a,'left') :求左極限,還有右極限'right'
- 函數(shù)積分
MATLAB支持三重及以下的積分運算
- 一重積分
一元函數(shù)的數(shù)值積分有三個函數(shù)quad, quadl, quadv用法相同
[Q,num]=quad(fun,a,b,tol,str) fun為被積函數(shù)句柄,a,b為積分上限和積分下限,tol用于控制誤差,增大tol可加快計算速度但精度下降,str非0時輸出計算過程中的[num a b-a Q],num為函數(shù)計算的次數(shù)。此函數(shù)適用于精度低、被積函數(shù)平滑性較差的數(shù)值積分。num,tol,str為可選參數(shù)
quadl適用于精度高被積函數(shù)較平滑的數(shù)值積分
quadv用于被積函數(shù)是一些列函數(shù)的積分
2.二重積分
Q= dbquad (fun,xmin,xmax,ymin,ymax,tol,@quad)
Q=dbquad(fun,xmin,xmax,ymin,ymax,tol,myfun)
MATLAB默認(rèn)采用quad函數(shù)計算一維積分;@quad表示用戶指定采用quadl函數(shù)來計算一維積分;myfun表示用自己編寫的一維積分函數(shù)
3.三重積分
Q= triplequad (fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,@quad)后面兩個參數(shù)為可選項
-
積分器
+關(guān)注
關(guān)注
4文章
100瀏覽量
28471 -
MATLAB仿真
+關(guān)注
關(guān)注
4文章
176瀏覽量
19943 -
傅里葉變換
+關(guān)注
關(guān)注
6文章
442瀏覽量
42631
發(fā)布評論請先 登錄
相關(guān)推薦
評論