当前位置:文档之家› 不等距节点下的牛顿插值公式以及拉格朗日插值公式实验课报告

不等距节点下的牛顿插值公式以及拉格朗日插值公式实验课报告

数值分析实验报告三
插值法(2学时)
一实验目的
1.掌握不等距节点下的牛顿插值公式以及拉格朗日插值公式。

二实验内容
1.已知函数表:
用牛顿插值公式求)
(y的近似值。

102
2. 已知函数表:
用拉格朗日插值公式计算01
x以及所对应的近似值。

=y
.5
4.1=
三实验步骤(算法)与结果
1.不等距节点下的牛顿插值公式
Ⅰ.按差商表计算n阶差商
12111[,,,][,,,]
[,,,]i i i n i i i n i i i n i n i
f x x x f x x x f x x x x x +++++-+++-=
- 其中
Ⅱ.按以下公式,带入x 值
00010120101101()()
()[,]
()()[,,]()()()[,,]
n n f x f x x x f x x x x x x x f x x x x x x x x x f x x -=+-+--++---
Ⅲ.得出结果()f x
程序代码:
#include"stdio.h"
#include"math.h" int main() {
int a,i,j;
printf("输入x 系数的个数:"); scanf("%d",&a); float d,e=0,c; float x[a];
float y[a-1][a];
printf("输入x 的系数:"); for(i=0;i<a;i++) {
scanf("%f",&x[i]); }
printf("输入y 的系数:"); for(i=0;i<a;i++) {
scanf("%f",&y[0][i]); }
for(i=0;i<a;i++) {
printf("%1.6f ",x[i]); }
printf("\n");
for(i=0;i<a;i++)
{
printf("%1.6f ",y[0][i]);
}
for(j=1;j<a;j++)
{
for(i=0;i<a-j;i++)
{
y[j][i]=(y[j-1][i+1]-y[j-1][i])/(x[j+i]-x[i]);
}
}
printf("\n");
for(j=1;j<a;j++)
{
for(i=0;i<a-j;i++)
{
printf("%1.6f ",y[j][i]);
}
printf("\n");
}
printf("输入x的值:");
scanf("%f",&c);
for(j=1;j<a;j++)
{
d=1;
for(i=0;i<j;i++)
{
d=d*(c-x[i]);
}
e=e+d*y[j][0];
}
e=e+y[0][0];
printf("%1.6f",e);
return 0;
}
运算结果:
15.793629
2.拉格朗日插值公式
120010200110110111201()()()
()()
()()()
()()()()()()()()()()()()
()
()()()
()
n n i i n i i i i i i i n n n n n n n x x x x x x f x f x x x x x x x x x x x x x x x f x x x x x x x x x x x x x x x f x x x x x x x R x -+-+-----=
---+----+-------+
---+
0101()()()()[,,,,]n n n R x x x x x x x f x x x x =--- 其中余式
程序代码:
#include"stdio.h" #include"math.h" int main() {
int a,i,j;
printf("输入x系数(y的系数)的个数:");
scanf("%d",&a);
float e,k=1,p=0;
float x[a];
float y[a];
printf("输入x的系数(y的系数):");
for(i=0;i<a;i++)
{
scanf("%f",&x[i]);
}
printf("输入y的系数(x的系数):");
for(i=0;i<a;i++)
{
scanf("%f",&y[i]);
}
printf("输入你要求的值:");
scanf("%f",&e);
for(j=0;j<a;j++)
{
k=1;
for(i=0;i<a;i++)
{
if(i==j)
{
k=k;
}
else
{
k=k*((e-x[i])/(x[j]-x[i]));
}
}
k=k*y[j];
p=p+k;
}
printf("%f",p);
return 0;
}
运算结果:
x=1.4时,y=3.729525
y=5.01时,x=1.246488
四实验收获与教师评语
实验收获:对于一系列的x值和对应的y值,有时其数学解析式是未知的,此时可以应用插值法进行插值计算,这是
一个重要的数学工具。

相关主题