数值分析计算方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算方法》实验内容
一.实验一:用两种不同的顺序计算
644834.110000
1
2
≈∑=-n n
,分析其误差的变化。
1.实验目的:通过正序反序两种不同的顺序求和,比较不同算法的误差;了解在计算机中大数吃小数的现象,以后尽量避免;体会单精度和双精度数据的差别。
2.算法描述:累加和s=0; 正序求和:
对于n=1,2,3,......,10000 s+=1.0/(n*n); 反序求和:
对于n=10000,9999,9998,.....,1 s+=1.0/(n*n); 3.源程序: #双精度型#
#include
double s=0; int n;
for(n=1;n<=10000;n++) s+=1.0/(n*n);
printf("正序求和结果是:%lf\n",s); s=0;
for(n=10000;n>=1;n--) s+=1.0/(n*n);
printf("反序求和结果是:%lf\n",s); }
#单精度型#
#include
float s=0; int n;
for(n=1;n<=10000;n++) s+=1.0/(n*n);
printf("正序求和结果是:%f\n",s); s=0;
for(n=10000;n>=1;n--) s+=1.0/(n*n);
printf("反序求和结果是:%f\n",s); }
4.运行结果:
双精度型运行结果:
单精度型运行结果:
5.对算法的理解与分析:舍入误差在计算机中会引起熟知的不稳定,算法不同,肯结果也会不同,因此选取稳定的算法很重要。选取双精度型数据正反序求和时结果一致,但选用单精度型数据时,求和结果不一致,明显正序求和结果有误差,所以第一个算法较为稳定可靠。
二.实验二:
1、拉格朗日插值
按下列数据
x
i
-3.0 -1.0 1.0 2.0 3.0
y
i
1.0 1.5
2.0 2.0 1.0
作二次插值,并求x
1=-2,x
2
=0,x
3
=2.75时的函数近似值
2牛顿插值
按下列数据
x
i
0.30 0.42 0.50 0.58 0.66 0.72
y
i 1.0440
3
1.0846
2
1.1180
3
1.1560
3
1.19817 1.23223
作五次插值,并求x
1=0.46,x
2
=0.55,x
3
=0.60时的函数近似值.
1.实验目的:通过拉格朗日插值和牛顿插值的实例,了解两种求解方法,并分析各自的优缺点。
2.算法描述:
3.源程序:
拉格朗日插值:
#include
#define k 2
void main()
double L,Y,a;
double x[3];
double y[3];
for(int p=0;p<=2;p++)
scanf("%lf%lf",&x[p],&y[p]);
for(int q=0;q<=2;q++)
{
Y=0;
scanf("%lf",&a);
for(int j=0;j<=k;j++)
{
L=1;
for(int i=0;i<=k;i++)
if(i!=j)
L*=(a-x[i])/(x[j]-x[i]);
Y+=L*y[j];
}
printf("x=%lf的函数值是:%lf\n",a,Y);
}
}
牛顿插值:
#include
void main()
{
int i,j;
double a[6][6],y,s,x;
for(j=0;j<=1;j++)
for(i=0;i<6;i++)
scanf("%lf",&a[i][j]);
for(j=2;j<=5;j++)
for(i=j-1;i<=5;i++)
a[i][j]=(a[i][j-1]-a[i-1][j-1])/(a[i][0]-a[i-j+1][0]); for(int k=0;k<3;k++)
{
scanf("%lf",&x);
y=0;
for(i=0;i<5;i++)
{
s=a[i][i+1];
for(j=i-1;j>=0;j--)
s*=x-a[j][0];
y+=s;
}
printf("结果是:%lf\n",y);
}
4.运行结果:
拉格朗日运行结果:
牛顿插值运行结果:
5.对算法的理解与分析:
(1)拉格朗日插值:
该公式是对一系列点加权求和。内插通常优于外推。选择的区间包括x,插值效果越好,高次插值通常优于低次插值,但并不是意味着插值次数越高越好。
优点:编程容易实现。
缺点:如果发现当前的插值方法不够精确,就要增加插值节点的个数。拉格朗日基函数每一个都要重新计算,效率低。
(2)牛顿插值:
优点:如果当前插值方法不稳定,需要增加插值节点个数,只需要计算新家节点所增加的差商即可,之前的计算结果可以被复用,比拉格朗日插值节省计算量,效率高,精度高,更为稳定。