C语言编写拉格朗日插值函数,题目,代码如下。哪里错了

设y=1/x,节点x0=2,x1=2.5,x2=4,求函数y=1/x的插值多项式L(x)。提示:L(3)=0.325。#include"stdio.h"#include"... 设y=1/x,节点 x0=2, x1=2.5, x2=4,求函数y=1/x的插值多项式L(x)。提示:L(3)=0.325。#include"stdio.h"
#include"math.h"
float Lagrange(float array[],int n,float x)
{
float a=1.0,b=1.0,l[3];
int i,j;
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ if(i==j) continue;
a=a*(x-array[j]);
b=b*(array[i]-array[j]);
}
l[i]=a/b;
return l[i];
}
}
main()
{int k,m;
float t,L=0.0,y[3],l[3],x[3]={2.0,2.5,4.0};
printf("please input t=");
scanf("%f",&t);
for(k=0;k<=2;k++)
{ y[k]=1/x[k];}
m=sizeof(x)/sizeof(x[0]);
for(k=0;k<=2;k++)
{l[k]= Lagrange(x,m,t);
L=L+l[k]*y[k];
}
printf("L=%f\n",L);
}
展开
 我来答
匿名用户
2013-04-21
展开全部
我自己写的,给你个例子:
#include<iostream.h>
void main()
{
char q;
do{
double X;
cout<<"请输入 X=";
cin>>X;
double l=1,L=0;
double x[5]={-3.0,-1.0,1.0,2.0,3.0};
double y[5]={1.0,1.5,2.0,2.0,1.0};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(i==j)continue;
l*=(X-x[j])/(x[i]-x[j]);
}
L+=l*y[i];
l=1;
}
cout<<"x="<<X<<"时函数的近似值 L="<<L<<endl;
cout<<"按任意键继续,按q退出";
cin>>q;
}while(q!='q');
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式