做了一個(gè)測(cè)試,希望有所幫助。代碼:% 用matlab編寫拉格朗日插值算法的程序,并以下面給出的函數(shù)表為數(shù)據(jù)基礎(chǔ),
井陘礦網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
% 在整個(gè)插值區(qū)間上采用拉格朗日插值法計(jì)算f(0.6),寫出程序源代碼,輸出計(jì)算結(jié)果
% 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
function 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)
%求已知數(shù)據(jù)點(diǎn)的拉格朗日插值多項(xiàng)式
%已知數(shù)據(jù)點(diǎn)的x坐標(biāo)向量: x
%已知數(shù)據(jù)點(diǎn)的y坐標(biāo)向量: y
%插值點(diǎn)的x坐標(biāo): x0
%求得的拉格朗日插值多項(xiàng)式或在x0處的插值: fsyms t l;
if(length(x) == length(y))
n = length(x);
else
disp('x和y的維數(shù)不相等!');
return; %檢錯(cuò)
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;
end
simplify(h);if(nargin == 3)
f = subs (h,'t',x0); %計(jì)算插值點(diǎn)的函數(shù)值
else
f=collect(h);
f = vpa(f,6); %將插值多項(xiàng)式的系數(shù)化成6位精度的小數(shù)
end結(jié)果:
f = 0.0201
全區(qū)間拉格朗日插值
功用
本程序用拉格朗日插值公式對(duì)一元不等距觀測(cè)數(shù)據(jù)進(jìn)行程組插值 。
方法概要
對(duì)給定的n個(gè)插值節(jié)點(diǎn)x1,x2,…,xn及對(duì)應(yīng)的函數(shù)值y1,y2,…,yn,計(jì)算給定點(diǎn)x的函數(shù)值y(x)。
本程序可以在插值區(qū)間內(nèi)對(duì)給定的NJ個(gè)插值點(diǎn)進(jìn)行插值。
程序說明
(1)、程序名
LGRCZ1.FOR (此文件為免費(fèi)軟件,你可以從本站點(diǎn) 下載。)
(2)、子程序語(yǔ)句
SUBROUTINE LGRCZ1(Z,N,CZ,NJ)
(3)、形參說明
Z 輸入?yún)?shù),兩維實(shí)數(shù)組,容量為N×2,存放給定的插值節(jié)點(diǎn)數(shù)列及對(duì)應(yīng)的觀測(cè)值。
N輸入?yún)?shù),整變量,插值節(jié)點(diǎn)數(shù)。
NJ 輸入?yún)?shù),整變量,插值節(jié)點(diǎn)數(shù)。
CZ 輸入輸出參數(shù),二維實(shí)數(shù)組,容量NJ×2,第一列輸入插值點(diǎn)數(shù)列,第二列輸出插值
結(jié)果。
計(jì)算實(shí)例
(1)、例題
設(shè)已知下表觀測(cè)數(shù)據(jù)
x
1
2
3
4
5
6
7
Y1
1
4
9
16
25
36
49
要在給出2,2.5,3,3.5,4,4.5,5,5.5,6,6.5上進(jìn)行插值。這里N=7,NJ=10。
(2)、主程序設(shè)計(jì)
N、NJ用參數(shù)說明語(yǔ)句定義,觀測(cè)數(shù)據(jù)及插值點(diǎn)數(shù)用DATA語(yǔ)句輸入,屏幕顯示插值結(jié)果。
(3)、計(jì)算結(jié)果
程序清單
代碼問題,改一句就好了:
#includeiostream
#define?N?3?//插值節(jié)點(diǎn)數(shù)目
using?namespace?std;
void?main()
{
float?x[N];?????????//差值節(jié)點(diǎn)橫坐標(biāo)
float?y[N];?????????//差值節(jié)點(diǎn)縱坐標(biāo)
float?a;????????????//所求點(diǎn)橫坐標(biāo)
float??fx=0,tmp=1;
int?i,j;
cout"輸入插值點(diǎn)的坐標(biāo):"endl;
for(i=0;iN;i++)
{
cinx[i];
ciny[i];
}
cout"輸入所求點(diǎn)的橫坐標(biāo):"endl;
cina;
for(i=0;iN;i++)
{
tmp?=?1;//加上這句,開始前還原tmp
{
for(j=0;jN;j++)
if(i!=j)
tmp=tmp*(a-x[j])/(x[i]-x[j]);
}
fx=fx+tmp*y[i];
}
cout"所求值為:"endl;
coutfxendl;
}