針對資料分析和處理,matl ab提供了大量的函式,非常方便和靈活。本章將詳細的介紹利用matlab進行一些基本的資料分析,主要包括多項式及其函式,插值,以及函式的極限。matlab能夠很好的解決多項式運算問題,這些函式用於多項式的建立、多項式求值、多項式乘法和除法、多項式求導、多項式展開和擬合等等。插值函式,主要包括一維插值、二維插值、樣條插值和高維插值等內容。matlab提供了非常強大的函式,非常方便和靈活的求得函式的極限。
matlab提供了一些處理多項式的專用函式,使用者可以很.方便地進行多項式的建立、多項式求值、乘法和除法運算,以及求多項式的導數和微分、多項式的根、多項式的展開和擬合等。
matlab語言中,對於多項式,用多項式的係數按照降冪次序存放在向量中。順序必須是從高到低進行排列。例如,多項式可以用係數向量來表示。多項式就轉換為多項式係數向量問題,次多項式用乙個維的行向量表示,在多項式中缺少的冪次要用「0"來補齊。
1.對於已知多項式係數的表示式:由poly2sym函式是由向量建立多項式,disp函式顯示多項式;
2.對於已知多項式的根:由poly函式構建多項式,poly2sym函式顯示多項式
在matlab中,提供了兩個函式對多項式進行求值,函式polyval( )和polyvalm( )。函式polyval( )以陣列或矩陣中的元素為計算單位,函式polyvalm( )以矩陣為計算單位。
在matlab中,利用roots( )函式用來求多項式的根,其呼叫格式為: x=roots(p), 其中引數p為多項賦係數,輸出引數x為多項式的根。對於n次多項式具有n個根,這些根可能是實根,也可能是共軛復根。在matlab中,如果已經知道多項式的根,可以利用函式poly( )求多項式的係數,其呼叫格式為: y=poly(x),輸入引數x為根,輸出引數y為得到的多項式係數向量。
在matlab中,使用函式conv( )對多項式進行乘法運算。其呼叫格式為c=conv(a, b),a和b為多項式的係數向量,該函式實現向量a和b的卷積,在代數上相當於多項式a乘以多項式b,其中c為相乘所產生的多項式的係數向量。
在matlab中,採用函式polyder( )進行多項式的求導,呼叫方式為:y=polyder(p):對以向量p為係數的多項式求導;y=polyder(a, b):對以a和b為係數的多項式的乘積進行求導;[q,d]=polyder(b, a):返回以b為係數的多項式除以以a為係數的多項式的商的導數,並以q1/d格式表示。
在matlab中,使用函式polyint( )對多項式進行積分運算,其呼叫方式為:polyint(p, k):返回以向量p為係數的多項式的積分,積分的常數項為k;polyint(p): 返回以向量p為係數的多項式的積分,積分的常數項為預設值0。
在matlab中,有理多項式用他們的分子多項式和分母多項式進行表示,函式residue( )可以將多項式之比用部分分式展開,也可以將-乙個部分分式用多項式之比進行表示。[r, p, k]=residue(b, a):求多項式之比b/a的分式展開,函式的返回值r是餘數,p是部分分式的極點,k是常數項。如果多項式a沒有重根,展開的形式如下:
在matlab中,函式polyfit( )採用最小二乘法對給定的資料進行多項式擬合,得到該多項式的係數。該函式的呼叫方式為: p = polyfit(x, y, n),採用n次多項式來擬合資料x和y,得到以p為係數的多項式。該函式使得p(x)與y最小均方誤差最小。
為了方便使用者的使用,在matlab中提供了曲線擬合的圖形使用者介面。它位於matlab圖形視窗的tools選單下面的basic fitting選單。在使用該工具時,首先將需要擬合的資料採用函式plot( )畫圖,其matlab**如下:
>> x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8];
>> y=[1 2 3 5 6 7 6 5 4 1];
>> figure;
>> plot(x,y,'bo');
在figures介面中,進入tools工具欄以後,倒數第二個就是基本擬合
一維插值是進行資料分析的重要方法,在matlab中,一維插值有基於多項式的插值和基於快速傅利葉的插值兩種型別。一維插值就是對一維函式進行插值。
在matlab中,一維多項式插值採用函式interp1( )進行實現。
在matlab中,一維快速傅利葉插值通過函式interpft( )來實現,該函式利用傅利葉變換將輸入資料變換到頻域,然後用更多點的傅利葉逆變換,變換回時域,其結果是對資料進行增取樣。
二維插值主要用於影象處理和資料的視覺化,其基本思想與一維插值相同,對函式進行插值。zi=interp2(x, y, z, xi, yi):通過初始資料x、y和z產生插值函式y= f(x, y),返回值zi是(xi, yi)在函式f(x, y)上的值。zi=interp2(x, y, z, xi, yi, method):其中method為可採用的插值方法。二維插值採用的方法只有4種,分別是'nearest'、'linear'. 'spline' 和'cubic',其中線性插值為預設的插值方法。
在matlab中,三次樣條插值可以採用函式spline(),該函式的呼叫格式為:yi=spline(x, y, xi):通過初始資料產生插值函式,然後對資料xi進行插值,返回值yi=f(xi)。採用這種呼叫方式時,其相當於yi=interp1(x, y, xi, 'spline')。pp=spline(x, y):該函式通過對初始資料x和y產生插值函式,並進行返回。然後利用函式ppval( )對資料xi進行插值計算,其呼叫方式為yi=ppval(pp, xi),其中pp為插值函式。
在matlab中,採用函式interp3( )進行三維插值,該函式的呼叫格式為:vi=interp3(x, y, z, v, xi, yi, zi):該函式通過初始資料產生插值函式,然後對資料進行插值,返回值為vi=interp3(x, y, z, v, xi, yi, zi, method):該函式中method為可以採用的插值方法,共有4種,分別是'nearest'、'linear'、'spline'和'cubic', 其中線性插值為預設的插值方法。此外,在matlab中進行高維插值的函式還有interpn( ),可以進行n維插值。
數列的極限定義為:設是數列,a是常數,若對於任意給定的正數ε (無論它多麼小),總存在正整數n,使得當n>n時,都有
函式的極限包括左極限和右極限。左極限和右極限統稱為單側極限。極限存在且等於a的充分必要條件是左極限與右極限都存在且相等。y=limit(f): 當x趨近於0時,該函式對函式f求極限。y=limit(f, x, a)或y=limit(f, a): 當x趨近於常數a時,對函式f求極限。y=limit(f, x, a, 'left'): 當x從左側趨近於常數a時,對函式f求極限,返回值為求得的左極限。y=limit(f, x,a, 'right'): 當x從右側趨近於常數a時,對函式f求極限,返回值為求得的右極限。
插值多項式例子
給定函式 ex 在區間 1,1 上的資料表如下 x 101 f x 0.3679 1.0000 2.7182f x 0.3679 1.0000 2.7182 給出 hermite 插值多項式,並計算其誤差。mathematica code create by zzw clear f,f1,a her...
lagrange插值多項式
簡潔版 hanshu input 請輸入函式f x s fprintf 請輸入差值區間最小值 n xmin input fprintf 請輸入差值區間最大值 n xmax input fprintf 請輸入等分份數 n n input fprintf 請輸入自變數x n xin input h xm...
Matlab 三次樣條插值多項式表示
原文自 matlab spline pp.coefs 如何運用matlab 三次樣條插值的問題,今天做作業,突然想用matlab搞搞。題目如下 清華大學出版社的 數值分析 第5版 p49,20題。x 0.25 0.3 0.39 0.45 0.53 y 0.5 0.5477 0.6245 0.6708...