计算方法课程上机实验报告1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算方法课程上机实验一

姓名 彭鑫 学号 2704302012 得分

实验地点: 科研楼机房 学时: 指导教师: 李浩 时间:

1. 实验目的

熟悉matlab 的基本应用,将课件中的代码输入计算机进行调试练习。同时复习第一章

的误差理论,通过编写程序体会误差的传递。

2. 实验内容

● 将课件中的程序代码输入计算机进行相关调试和验证,掌握matlab 的基本使用方

法;

● 给出一个有效的算法和一个无效的算法计算积分

1041n n x y dx x =+⎰, 0,1,,10n =

● 设2211N

N j S j ==-∑,已知其精确值为1311()221

N N --+。 1. 编制按从大到小的顺序计算SN 的程序;

2. 编制按从小到大的顺序计算SN 的程序;

3. 按2种顺序分别计算S1000,S10000,S30000,并与精确值进行对比;

(计算过程中所有数据均以科学计数法为标准,精确到小数点后两位数字)

3. 算法介绍或方法基础

有效算法

1011()44ln 54n n y y y -=

-= 1,2,,10n =⋅⋅⋅

无效算法 11014111

()211

55n n y y n

y -=-=+ 10,9,1n =⋅⋅⋅ 4. 程序

y0=log(5)/4;

fprintf('y[%d]=%f\n',0,y0)

n=1;

while (1)

y1=1/4*(1/n-y0);

fprintf('y[%d]=%f\n',n,y1) if(n>=10)

break;

end

y0=y1;n=n+1;

end

y0=(1/55+1/11)/2;

fprintf('y[%d]=%f\n',10,y0)

n=10;

while(1)

y1=1/n-4*y0;

fprintf('y[%d]=%f\n',n-1,y1) if(n<=1)

break;

end

y0=y1;n=n-1;

end

求和:

从大到小:

n=1000;

fun=inline('1./(x.^2-1)');

x=2:n;

sum(fun(x))

从小到大:

n=1000;

fun=inline('1./(x.^2-1)');

x=n:-1:2;

sum(fun(x))

最终计算:

format short e;

fun=inline('1./(x.^2-1)');

n=1000

x=2:n;

sum(fun(x))

n=10000

x=2:n;

sum(fun(x))

n=30000

x=2:n;

sum(fun(x))

5.实验结果

(1)有效算法

y[0]=0.402359

y[1]=0.149410

y[2]=0.087647

y[3]=0.061421

y[4]=0.047145

y[5]=0.038214

y[6]=0.032113

y[7]=0.027686

y[8]=0.024329

y[9]=0.021696

y[10]=0.019576 (2)无效算法

y[10]=0.054545

y[9]=-0.118182

y[8]=0.583838

y[7]=-2.210354

y[6]=8.984271

y[5]=-35.770418

y[4]=143.281674 y[3]=-572.876696 y[2]=2291.840115 y[1]=-9166.860462 y[0]=36668.441847 n =

1000

ans =

7.4900e-001

n =

10000

ans =

7.4990e-001

n =

30000

ans =

7.4997e-001

6.结果分析与解释

有效算法每次计算下一个值时误差就会减小到原来的四分之一,故计算结果比较准确,而无效算法每次计算下一个值时误差就会扩大四倍,所以计算结果不准确。所以有效算法更加准确精度更好。

相关文档
最新文档