计算方法上机报告
姓 名: 学 号: 班 级: 上课班级:
说明:
本次上机实验使用的编程语言是Matlab语言,编译环境为MATLAB 7.11.0,运行平台为Windows 7。
1. 对以下和式计算:
S??0?116n211??4??????8n?18n?48n?58n?6?,要求:
① 若只需保留11个有效数字,该如何进行计算; ② 若要保留30个有效数字,则又将如何进行计算;
(1) 算法思想
1、根据精度要求估计所加的项数,可以使用后验误差估计,通项为: an?1?4211?14??????; ??16n?8n?18n?48n?58n?6?16n8n?12、为了保证计算结果的准确性,写程序时,从后向前计算; 3、使用Matlab时,可以使用以下函数控制位数: digits(位数)或vpa(变量,精度为数)
(2)算法结构
1. s?0;
t?1?4211??????; n16?8n?18n?48n?58n?6?2. for n?0,1,2,???,i if t?10?m
end;
3. for n?i,i?1,i?2,???,0
s?s?t;
(3)Matlab源程序
clear; %清除工作空间变量 clc; %清除命令窗口命令 m=input('请输入有效数字的位数m='); %输入有效数字的位数 s=0; for n=0:50
t=(1/16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6));
if t<=10^(-m) %判断通项与精度的关系 break; end end;
fprintf('需要将n值加到n=%d\\n',n-1); %需要将n值加到的数值 for i=n-1:-1:0
t=(1/16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6));
s=s+t; %求和运算 end
s=vpa(s,m) %控制s的精度
(4)结果与分析
当保留11位有效数字时,需要将n值加到n=7, s =3.1415926536; 当保留30位有效数字时,需要将n值加到n=22, s =3.149323846264338328。
通过上面的实验结果可以看出,通过从后往前计算,这种算法很好的保证了计算结果要求保留的准确数字位数的要求。