数值分析计算方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.源程序: #双精度型#

#includec void main() {

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 void main() {

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)牛顿插值:

优点:如果当前插值方法不稳定,需要增加插值节点个数,只需要计算新家节点所增加的差商即可,之前的计算结果可以被复用,比拉格朗日插值节省计算量,效率高,精度高,更为稳定。

相关文档
最新文档