2013
级工科硕士研究生
《矩阵与数值分析》课程数值实验题?/p>
一、设
6
2
2
10
1
N
N
j
S
j
?/p>
?
?/p>
?
,分别编制从小到大和从大到小的顺序程序分别计?/p>
10000
1000000
,
S
S
并指出两种方法计算结果的有效位数?/p>
Matlab
程序如下?/p>
function [si,sd]=S(N)
format long;
si=0;sd=0;
for j=N:-1:2
si=1.0e6/(j^2-1)+si;
end
for j=2:N
sd=1.0e6/(j^2-1)+sd;
end
end
?/p>
matlab
命令窗口中输入:
[si,sd]=S(10000)
运行结果?/p>
si =7.499000049995000e+005
sd =7.499000049994994e+005
?/p>
matlab
命令窗口中输入:
[si,sd]=S(1000000)
运行结果?/p>
si =7.499990000005000e+005
sd =7.499990000005200e+0051
结果分析?/p>
si
为从大到小的顺序求和的值,
sd
为从小到大的顺序求和的值?/p>
?/p>
N
分别?/p>
10000
?/p>
1000000
时,
si
分别?/p>
7.499000049995000e+005
?/p>
7.499990000005000e+005
,可以看?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
13
?/p>
?/p>
?/p>
sd
?/p>
?/p>
?/p>
7.499000049994994e+005
?/p>
7.499990000005200e+005
,这两个数的有效值均?/p>
16
位。这就出现了我们在矩阵理论课?/p>
所学的
“大数吃小数”的问题?/p>
为了使结果更为精确我们必须避免在四则运算中出现“大?/p>
吃小数”的情况,应该按从小到大的顺序进行求和?/p>
二、解线性方程组
1
?/p>
分别利用
Jacobi
迭代?/p>
?/p>
Gauss-Seidel
迭代?/p>
求解线性方程组
Ax
b
?/p>
?/p>
其中常向
量为
?/p>
?/p>
2
1
n
?/p>
维随机生成的列向量,系数矩阵
A
具有如下形式