但是如果 就会接近.pdf
文本预览下载声明
1.2.3 旋转技术应用于高斯消除法
我们从最初的矩阵增广阵开始,首先讨论矩阵的第一行。
进行行变换,
为了能在(2,1)位置得到零,我们定义λ 21 为
但是如果a11 =0,那么λ 21 就会接近± ∞ ,这时怎么办呢?
部分旋转技术方法就是为了避免这种情况,同时使得高斯消除方法更加完善。
首先讨论矩阵A 的第一列,
考察矩阵中所有的元素,找到包含最大元素数值的一列,比如说第j 列,此时,对
于所有的k= 1,2,…,N
或者说,
由于等式的顺序对于结果没有什么影响,我们可以将矩阵的第一列和第j 列交换位
置。
只要矩阵A 中任意一个元素不为零,aj 1 就不为零,我们就可以放心的进行消除化
简。
如果第一列中所有的元素均为零,我们就会发现这个方程组中的没有方程是关于 x
的,此时方程组没有特定的解,此时我们可以放弃化简过程。
在(1.2.3-1), (1.2.3-6), (1.2.3-7)中的交换行的变换叫做局部绕轴旋转操作。
对于每一个进行高斯消除的列来说,我们首先要进行的第一个工作,即进行局部
绕轴旋转的目的就是保证在对角元素中有一个不为零的元素
高斯消除包含局部绕轴变换步骤的运算法则如下
即使在每一列进行行交换,用于绕轴旋转操作的计算量很小,可以得到很好的结果。
为了示范高斯消除是怎样进行的,我们首先考虑增广矩阵,
观察此矩阵,我们发现在第一列中,最大的数值在第三行。因此我们将第一行和第
三行的位置互换。
接下来进行行变换,将(2 ,1)的元素化为零。
再进行一次行变换,将(3,1)元素化为零。
接下来我们再来看第二列,注意在此列中,最大数值出现在第三行上,因此我们将
第二行和第三行互换位置。
接下来进行行变换使得(3,2 )化为零。
使用了消除方法之后,我们得到了一个易于进行回代方法的上三角形。
与矩阵相应的等式为
首先,可以解得 x3 = − 8 (1.2.3-18)
接下来,由第二个等式可得
最后,由第一个等式得
因此,结果为
注意在部分饶轴旋转操作,我们交换行以保证发现在对角线或以下每列数字在对角
线位置很大。即使对角线上数字非零,我们亦如此操作。
这看起来象无用功,但有很好的理由这么做。它可以在最后答案中减少系统误差。
为寻找原因,我们必须确定多少数存储于计算机内存。
如果我们查看存储于计算机内存的记忆,我们可以发现用0 和1 表达的数字串。
为存储实际数字,用浮点形式表达数字。
比如f是要存储的实际数字,我们用如下数值表达:
写作:
对于每一个 d=0,1,也在记忆中用一个字节表达,e是整数
e也存为二进制数,比如一个8字节数可以存储为
最大的数在下式中得到
对于
一般情况下,
k 依据存储于e的字节数。(1.2.3-27)
对于存储于M的大数,
其中
所以
通常,对于机器精度t和=2k
我们用一个等比级数来表示,
我们看到对于给定的t 和 k ,存在其能表示的最小值和最大值。
比如说,对于t=8,不同的k值,U = 2k 其最大和最小值如下,
对于一个典型的32 字节机器,它的表示范围是
需要注意的是,当我们想要储存一个数的时候,通常并不能精确的表示,比如说
1/3,e,π 等。这时,我们表示成一个尽可能与之接近的数。
这时,这个值与真实值的差就叫做循环误差。
对于二进制数
从(1.2.3-22) 中可知循环误差是
我们将机器精度定义为
e
我们定义rd(f) = rf(eps)x2 (1.2.3-44)
其中 rf 是 O(1) (比如说级数为 1)的某个数。
我们写成
其中,mf=f 的尾数。那么,
其中
因此,当我们最初将一个值赋给纪录时,循环误差可能很小。我们想要确定这个最
初很小的误差,在随后的运算中,不会增大。
比如说,我们假定两个数值很大但是相差很小的数,
f-g = 0.01
因此,
如果,
所以,
我们设rd(f) = rf(eps)x
显示全部