Re:拉格朗日插值算法怎样用matlab描述
%lagrange.mfunction y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end
参考王沫然的MATLAB与科学计算
Re:拉格朗日插值算法怎样用matlab描述
//Lagrange插值的C++代码//对给定的每个插值点,用Lagrange插值的方法求出每个自变量输入的输出值
#include<iostream>
//#include<vector>
using namespace std;
float Lagrange(float x,int n,float *x_i,float *y_i)
{
int k,j;
float y=0.0,t;
for(k=0;k<n;k++)
{ t=1;
for(j=0;j<n;j++)
{
if(j==k) continue;
else t=t*(x-x_i)/(x_i-x_i);
}
y=y+t*y_i;
}
return y;
}
void main(void)
{
float x=0.6,x_i[]={0.40,0.50,0.70,0.80},y_i[]={-0.916291,-0.693147,-0.356675,-0.223144};
double y;
int n=4;
y=Lagrange(x,n,x_i,y_i);
cout<<"在"<<x<<"处的拉个朗日插值的结果是:"<<y<<"\n";
} 有二维的程序吗? 讲数值分析的教程一般都有啊!
自己多动动手就不用麻烦他人了,自己也进步了,岂不是两全其美!
页:
[1]