基於 MATLAB 的函式的插值方法

2022-09-16 00:33:06 字數 4728 閱讀 2981

6.1 插值問題及其誤差

6.1.2 與插值有關的matlab 函式

(一) poly2sym 函式

呼叫格式一:poly2sym (c)

呼叫格式二:f1=poly2sym(c,'v') 或 f2=poly2sym(c, sym ('v') ),

(二) polyval 函式

呼叫格式:y = polyval(p,x)

(三) poly 函式

呼叫格式:y = poly (v)

(四) conv 函式

呼叫格式:c =conv (a, b)

例 6.1.2 求三個一次多項式、和的積.它們的零點分別依次為0.4,0.8,1.2.

解我們可以用兩種matlab程式求之.

方法1 如輸入matlab程式

>> x1=[0.4,0.8,1.2]; l1=poly(x1), l1=poly2sym (l1)

執行後輸出結果為

l1 =

1.0000 -2.4000 1.7600 -0.3840

l1 =

x^3-12/5*x^2+44/25*x-48/125

方法2 如輸入matlab程式

>> p1=poly(0.4);p2=poly(0.8);p3=poly(1.2);

c =conv (conv (p1, p2), p3) , l1=poly2sym (c)

執行後輸出的結果與方法1相同.

(五) deconv 函式

呼叫格式:[q,r] =deconv (b,a)

(六) roots(poly(1:n))命令

呼叫格式:roots(poly(1:n))

(七) det(a*eye(size (a)) - a)命令

呼叫格式:b=det(a*eye(size (a)) - a)

6.2 拉格朗日(lagrange)插值及其matlab程式

6.2.1 線性插值及其matlab程式

例6.2.1 已知函式在上具有二階連續導數,,且滿足條件.求線性插值多項式和函式值,並估計其誤差.

解輸入程式

>> x=[1,3];y=[1,2]; l01= poly(x(2))/( x(1)- x(2)), l11= poly(x(1))/( x(2)- x(1)), l0=poly2sym (l01),l1=poly2sym (l11), p = l01* y(1)+ l11* y(2),

l=poly2sym (p),x=1.5; y = polyval(p,x)

執行後輸出基函式l0和l1及其插值多項式的係數向量p(略)、插值多項式l和插值y為

l0l1ly =

-1/2*x+3/2 1/2*x-1/2 1/2*x+1/2 1.2500

輸入程式

>> m=5;r1=m*abs((x-x(1))* (x-x(2)))/2

執行後輸出誤差限為

r1 =

1.8750

例6.2.2 求函式e在上線性插值多項式,並估計其誤差.

解輸入程式

>> x=[0,1]; y =exp(-x) ,

l01= poly(x(2))/( x(1)- x(2)),

l11= poly(x(1))/( x(2)- x(1)), l0=poly2sym (l01),

l1=poly2sym (l11), p = l01* y(1)+ l11* y(2), l=poly2sym (p),

執行後輸出基函式l0和l1及其插值多項式的係數向量p和插值多項式l為

l0l1p =

-x+1 x0.6321 1.0000

l =-1423408956596761/2251799813685248*x+1

輸入程式

>> m=1;x=0:0.001:1; r1=m*max(abs((x-x(1)).*(x-x(2))))./2

執行後輸出誤差限為

r1 =

0.1250.

6.2.2 拋物線插值及其matlab程式

例6.2.3 求將區間 [0, π/2] 分成等份,用產生個節點,然後根據(6.

9)和(6.13)式分別作線性插值函式和拋物線插值函式.用它們分別計算cos (π/6) (取四位有效數字),並估計其誤差.

解輸入程式

>> x=[0,pi/2]; y =cos(x) ,

l01= poly(x(2))/( x(1)- x(2)),

l11= poly(x(1))/( x(2)- x(1)), l0=poly2sym (l01),

l1=poly2sym (l11),

p = l01* y(1)+ l11* y(2), l=poly2sym (p),x=pi/6;

y = polyval(p,x)

執行後輸出基函式l0和l1及其插值多項式的係數向量p、插值多項式和插值為

l0 =

-5734161139222659/9007199254740992*x+1

l1 =

5734161139222659/9007199254740992*x

p =-0.6366 1.0000

l =-5734161139222659/9007199254740992*x+1

y =0.6667

輸入程式

>> m=1;x=pi/6; r1=m*abs((x-x(1))*(x-x(2)))/2

執行後輸出誤差限為

r1 =

0.2742.

(2) 輸入程式

>> x=0:pi/4:pi/2; y =cos(x) ,

l01= conv (poly(x(2)),

poly(x(3)))/(( x(1)- x(2))* ( x(1)- x(3))),

l11= conv (poly(x(1)),

poly(x(3)))/(( x(2)- x(1))* ( x(2)- x(3))),

l21= conv (poly(x(1)),

poly(x(2)))/(( x(3)- x(1))* ( x(3)- x(2))),

l0=poly2sym (l01),l1=poly2sym (l11),l2=poly2sym (l21),

p = l01* y(1)+ l11* y(2) + l21* y(3), l=poly2sym (p),x=pi/6; y = polyval(p,x)

執行後輸出基函式l01、l11和l21及其插值多項式的係數向量p、插值多項式l和插值y為

l0 =

l1 =

l2 =

p =-0.3357 -0.1092 1.0000

y = 0.8508

輸入程式

>> m=1;x=pi/6; r2=m*abs((x-x(1))*(x-x(2)) *(x-x(3)))/6

執行後輸出誤差限為

r2 =

0.0239.

6.2.3 次拉格朗日(lagrange)插值及其matlab程式

例6.2.4 給出節點資料,,,,作三次拉格朗日插值多項式計算,並估計其誤差.

解輸入程式

>> x=[-2,0,1,2]; y =[17,1,2,17];

p1=poly(x(1)); p2=poly(x(2));

p3=poly(x(3)); p4=poly(x(4));

l01= conv ( conv (p2, p3), p4)/(( x(1)- x(2))* ( x(1)- x(3)) * ( x(1)- x(4))),

l11= conv ( conv (p1, p3), p4)/(( x(2)- x(1))* ( x(2)- x(3)) * ( x(2)- x(4))),

l21= conv ( conv (p1, p2), p4)/(( x(3)- x(1))* ( x(3)- x(2)) * ( x(3)- x(4))),

l31= conv ( conv (p1, p2), p3)/(( x(4)- x(1))* ( x(4)- x(2)) * ( x(4)- x(3))),

l0=poly2sym (l01),

l1=poly2sym (l11),l2=poly2sym (l21), l3=poly2sym (l31),

p = l01* y(1)+ l11* y(2) + l21* y(3) + l31* y(4),

執行後輸出基函式l0,l1,l2和l3及其插值多項式的係數向量p(略)為

l0 =

-1/24*x^3+1/8*x^2-1/12*x,l1 =1/4*x^3-1/4*x^2-x+1

l2 =

-1/3*x^3+4/3*x,l3 =1/8*x^3+1/8*x^2-1/4*x

輸入程式

>> l=poly2sym (p),x=0.6; y = polyval(p,x)

執行後輸出插值多項式和插值為

ly =

x^3+4*x^2-4*x+10.2560.

輸入程式

>> syms m; x=0.6;

r3=m*abs((x-x(1))*(x-x(2)) *(x-x(3)) *(x-x(4)))/24

執行後輸出誤差限為

r3 =

91/2500*m

即r3, .

6.2.5 拉格朗日多項式和基函式的matlab程式

求拉格朗日插值多項式和基函式的matlab主程式

function [c, l,l1,l]=lagran1(x,y)

插值演算法系列的優缺點

插值演算法系列 1 三種基本插值演算法及優缺點 1最近鄰演算法 基本思想 目的畫素的值,通過座標反向變換得到的浮點座標為 i u,j v 其中i j均為浮點座標的整數部分,u v為浮點座標的小數部分,用源影象中里該浮點座標最近的畫素值表示,即用最鄰近的點的畫素值賦予目的畫素值。特點 速度最快,縮放質...

論述一維搜尋的插值方法

班級 機制0902 姓名 王忠學號 0412090229 假定要在某一區間內尋找函式的極小點的位置,雖然沒有函式表示式,但能夠給出若干試驗點處的函式值我們可以根據這些點處的函式值,利用插值的方法建立函式的近似表示式,進而求處函式的極小點,作為原來函式的極小點的近似值。這種方法稱作插值法,插值方法是利...

基於MATLAB的SVR回歸模型的設計與實現翻譯

插值與擬合 我們能夠運用這個公式直接得到給定函式f x 的近似多項式估計,沒有必要採取拉格朗日或牛頓多項式。給定乙個函式 多項式次數以及區間的左右邊界點,上面提到的matlab程式 cheby 可以利用這個公式得到切比雪夫近似多項式。以下的例子闡述了利用這個公式得到的相同的近似多項式,也可以利用切比...