做了一個測試,希望有所幫助。程式碼:% 用matlab編寫拉格朗日插值演算法的程式,並以下面給出的函式表為資料基礎,% 在整個插值區間上採用拉格朗日插值法計算f(0.6),寫出程式原始碼,輸出計算結果% x -2.15 -1.00 0.01 1.02 2.03 3.25% y 17.03 7.24 1.05 2.03 17.06 23.05function main()clc;x = [-2.15 -1.00 0.01 1.02 2.03 3.25];y = [17.03 7.24 1.05 2.03 17.06 23.05 ];x0 = 0.6;f = Language(x,y,x0)function f = Language(x,y,x0)%求已知資料點的拉格朗日插值多項式%已知資料點的x座標向量: x%已知資料點的y座標向量: y%插值點的x座標: x0%求得的拉格朗日插值多項式或在x0處的插值: fsyms t l;if(length(x) == length(y)) n = length(x);else disp("x和y的維數不相等!"); return; %檢錯endh=sym(0);for (i=1:n) l=sym(y(i)); for(j=1:i-1) l=l*(t-x(j))/(x(i)-x(j)); end; for(j=i+1:n) l=l*(t-x(j))/(x(i)-x(j)); end; h=h+l;endsimplify(h);if(nargin == 3) f = subs (h,"t",x0); %計算插值點的函式值else f=collect(h); f = vpa(f,6); %將插值多項式的係數化成6位精度的小數end結果:f = 0.0201>>
做了一個測試,希望有所幫助。程式碼:% 用matlab編寫拉格朗日插值演算法的程式,並以下面給出的函式表為資料基礎,% 在整個插值區間上採用拉格朗日插值法計算f(0.6),寫出程式原始碼,輸出計算結果% x -2.15 -1.00 0.01 1.02 2.03 3.25% y 17.03 7.24 1.05 2.03 17.06 23.05function main()clc;x = [-2.15 -1.00 0.01 1.02 2.03 3.25];y = [17.03 7.24 1.05 2.03 17.06 23.05 ];x0 = 0.6;f = Language(x,y,x0)function f = Language(x,y,x0)%求已知資料點的拉格朗日插值多項式%已知資料點的x座標向量: x%已知資料點的y座標向量: y%插值點的x座標: x0%求得的拉格朗日插值多項式或在x0處的插值: fsyms t l;if(length(x) == length(y)) n = length(x);else disp("x和y的維數不相等!"); return; %檢錯endh=sym(0);for (i=1:n) l=sym(y(i)); for(j=1:i-1) l=l*(t-x(j))/(x(i)-x(j)); end; for(j=i+1:n) l=l*(t-x(j))/(x(i)-x(j)); end; h=h+l;endsimplify(h);if(nargin == 3) f = subs (h,"t",x0); %計算插值點的函式值else f=collect(h); f = vpa(f,6); %將插值多項式的係數化成6位精度的小數end結果:f = 0.0201>>