.
交通大学
计算方法 B
上机编程报告
学号: XXX
姓名: XXX
专业:工程热物理
班级:硕 XXXX
date
2015/12/10
Word 资料
注:本上机报告使用的程序语言均为 Matlab 语言,为本人独立完成!
1 4 2 1 1
1. 计算以下和式: S n ,要求:
n 0 16 8n 1 8n 4 8n 5 8n 6
(1)若保留 11 个有效数字,给出计算结果,并评价计算的算法;
(2)若要保留 30 个有效数字,则又将如何进行计算。
a) 解题思想
(1) 先根据精度要求估计所需累加的项数 n ,使用后验误差估计方法,条
1 4 2 1 1 -m
件为: S n 10 (m 为有效数
n 0 16 8n 1 8n 4 8n 5 8n 6
字位数 ) 。
(2 ) 在该题中 S 的和式存在两个相近的数相减的问题, 为了避免有效数字
损失,在计算中改变了运算顺序,分别将正数和负数分别相加,然后
再将其和相加。
(3 ) 为了避免大数吃小数的问题, 本题先计算出保留目标有效数字所需要
的迭代次数,然后采用倒序相加的方法提高计算精度。
b) 算法实现的结构
1. S1=s2=0 ;
1 4 2 1 1
an n ( ) ;
16 8n 1 8n 4 8n 5 8n 6
2. for n=0,1,2, …,i
If a 10 m
n
end
3. for n=i,i-1,i-2, …,0
1
a1=4/(16^n*(8*n+1));
a2=2/(16^n*(8*n+4));
a3=1/(16^n*(8*n+5));
a4=1/(16^n*(8*n+6));
s1=a1+s1;
s2=a4+a3+a2+s2;
end
S=s1-s2;
c) 计算源程序
clear;
本报告通过Matlab语言解决了一个复杂的数学求和问题。通过改变运算顺序及采用倒序相加等方法,有效避免了数值计算中常见的有效数字损失及大数吃小数等问题,实现了高精度计算。

被折叠的 条评论
为什么被折叠?



