文档介绍:《数值分析》实验报告
实验室一 插值法
1、实验内容:
已知函数在下列各点处的值为
xi
Y(xi)
试用4次牛顿多项式P4(x)对数据进行插值。给出{(xi,yi)|xi=+}
2、分析与实现
按牛顿插值法,要得到牛顿插值多项式关键在于求各阶差商,求出后带入牛顿插值公式即可。
要求某点的插值带入插值多项式即可。
通过分析程序实现如下:
#include<>
//函数功能:求差商,本函数返回一个整型标识:0-失败,不适用此方法;
//1-成功, i阶差商保存在数组y[i]中,也就隐形得出牛顿插值多项式。
//参数说明:
//x 双精度实型一维数组,长度为n ,存放给定n 个结点的值(从小到大)
//y 双精度实型一维数组,长度为n ,存放给定n 个结点上的函数值,函数返回时存放i阶差商(i为数组元素下表)
//n 整型变量,给定结点的个数
int newton(double x[], double y[], int n)
{
if (n <=1) /*结点个数不对,此方法不适用,返回*/
return(0);
else {
for (int i=1;i<n;i++)
{
for (int j=n-1;j>=i;j--)
{
y[j]=(y[j]-y[j-1])/(x[j]-x[j-i]);
}
}
return 1;
}
}
void main()
{
double z,s,t=;//t为插值结点
static double x[5] = {,,,, };
static double y[5] = {,,,,};
int i,flag=1,n=5;
printf("请输入插值点:");
scanf("%lf",&t);//获取待插值结点
flag=newton(x, y, n);//调用求差商的函数,求得牛顿插值多项式中的各阶差商
if (flag==0)
{
printf("牛顿插值法不适用于此题!\n");
}
else
{//求t点处的牛顿插值
z=y[0];
s=1;
for (i=1;i<n;i++)
{
s=s*(t-x[i-1]);//差商前的系数
z+=y[i]*s;
}
}
printf("x=%g,y=%g\n", t, z);//输出结果
}
3、实验结果:
实验二 数值积分
1、实验内容
计算积分,用自适应辛普森积分,。
2、分析与实现
分析辛普森算法,其实现如下,其中simp()实现辛普森算法,fexpression()为被积函数表达式,main()为主函数程序,为了测试。
#include <>
#include ""
//函数功能:自适应辛普生积分,