韩山师范学院 C语言程序设计
实验名称: 实验一:拉格朗日插值法C语言的实现 日期: 2011-9-19
任课教师: 赖国明 专业: 数学与应用数学 学号: 2009111437 姓名: 郑永锋
【实验目的】
1、进一步熟悉拉格朗日插值法。
2、掌握编程语言字符处理程序的设计和调试技术。
【实验内容】
(题目)作出插值点 (-2.00,0.00),(2.00,5.00),(5.00,6.00)的二次Lagrange 插值多项式
L (x),并计算L (-1.2),L (1.2)。
2 2 2
解题思路:
1
()输入已知点的个数;
2 X
()分别输入已知点的 坐标;
3 Y
()分别输入已知点的 坐标;
4 lagrange
()通过调用函数 函数,来求某点所对应的函数值。
拉格朗日插值多项式如下:
n
L (x ) y l (x ) y j 0,1,……n
n j k k j j
k 0
(xx )……(x-x )(x-x )……(x-x)
l (x) 0 k-1 k+1 n k 0,1,……,n
其中 k (x x )……(x-x )(x-x )……(x-x)
k 0 k k-1 k k+1 k n
程序流程图:
开始
↓
输入已知点个数n
↓
输入已知点的X坐标以及输入已知点的Y坐标
↓
调用函数lagrange 函数
↓
输出结果
1 9
第 页 共 页
韩山师范学院 C语言程序设计
源程序:
#include
#include
float lagrange(float *x,float *y,floatxx,intn)
{
int i,j;
float *a,yy 0.0;
for(i 0;i< n-1;i++)
{
a[i] y[i];
for(j 0;j< n-1;j++)
if(j! i) a[i]* (xx-x[j])/(x[i]-x[j]);
yy+ a[i];
}
free(a);
returnyy;
}
intmain()
{
int i;
intn;
floatx[20],y[20],xx,yy;
printf("Inputn:");
scanf("%d",&n);
if(n> 20)
{
printf("Error!Thevalueofn must in (0,20).");getch();return 1;
}
if(n< 0)