计算方法上机作业 下载本文

内容发布更新时间 : 2024/9/19 16:37:42星期一 下面是文章的全部内容请认真阅读。

计算方法上机报告

姓 名: 学 号: 班 级: 上课班级:

说明:

本次上机实验使用的编程语言是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。

通过上面的实验结果可以看出,通过从后往前计算,这种算法很好的保证了计算结果要求保留的准确数字位数的要求。