计算方法课程上机实验报告1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.结果分析与解释
有效算法每次计算下一个值时误差就会减小到原来的四分之一,故计算结果比较准确,而无效算法每次计算下一个值时误差就会扩大四倍,所以计算结果不准确。所以有效算法更加准确精度更好。