lagrange插值法算法程序(C语言)
作者:somarange 日期:2008-04-03
用C语言实现lagrange插值法,
程序代码如下:
#include<stdio.h>
void main()
{
float x[11],y[11],xx,w1,w2,l;
int i,j,n,k;
printf("lagrange插值:\n请输入要运算的值:x=");
scanf("%f",&xx);
printf("请输入插值的次数(n<11):n=");
scanf("%d",&n);
printf("请输入%d组值:\n",n+1);
for(i=0;i<n+1;i++)
{
printf("x%d=",i);
scanf("%f",&x[i]);
printf("y%d=",i);
scanf("%f",&y[i]);
}
w1=1;l=0;
for(i=0;i<n+1;i++)
w1=w1*(xx-x[i]);
for(k=0;k<n+1;k++)
{
w2=1;
for(j=0;j<n+1;j++)
if(j!=k) w2=w2*(x[k]-x[j]);
w2=w2*(xx-x[k]);
l=l+y[k]*w1/w2;
}
printf("求得的结果为:L(%.4f)=%f\n",xx,l);
}
程序代码如下:
#include<stdio.h>
void main()
{
float x[11],y[11],xx,w1,w2,l;
int i,j,n,k;
printf("lagrange插值:\n请输入要运算的值:x=");
scanf("%f",&xx);
printf("请输入插值的次数(n<11):n=");
scanf("%d",&n);
printf("请输入%d组值:\n",n+1);
for(i=0;i<n+1;i++)
{
printf("x%d=",i);
scanf("%f",&x[i]);
printf("y%d=",i);
scanf("%f",&y[i]);
}
w1=1;l=0;
for(i=0;i<n+1;i++)
w1=w1*(xx-x[i]);
for(k=0;k<n+1;k++)
{
w2=1;
for(j=0;j<n+1;j++)
if(j!=k) w2=w2*(x[k]-x[j]);
w2=w2*(xx-x[k]);
l=l+y[k]*w1/w2;
}
printf("求得的结果为:L(%.4f)=%f\n",xx,l);
}
评论: 0 | 引用: 0 | 查看次数: -
发表评论