习题一 T1
给出求下三角矩阵的逆矩阵的详细算法.
利用类似 Gauss 消元法的想法即可,这里为方便起见不选主元(仅仅在每次循环时多一步检查列绝对值最大元的操作),处理第 列时,先消去严格下三角部分的数值:
然后乘数值使得 位为 .
% Input: 矩阵 A
% Output: A 的逆矩阵,就地操作
for j = 1:n
% 计算对角线元素
A(j,j) = 1 / A(j,j);
% 计算当前列的下方非对角元素
for i = j+1:n
A(i,j) = (-A(i, j:i-1) * A(j:i-1, j)) / A(i,i);
end
end
经过 MATLAB 验证准确.
习题一 T7
设 对称且 ,并假定经过一步 Gauss 消去之后, 具有如下形式
证明 仍然是对称阵.
证明与解:设题中经过一步之后的矩阵 为 .考虑经过一次 Gauss 消去之后 当中的元素. 其中 整体第 行 列(其中 以及 )的元素为:
而根据 是对称阵,容易得到
这说明 是对称阵.
习题一 T9
设 有三角分解,指出当把 Gauss 消去法应用于 矩阵 时,怎样才能不必存储 而解出 ?需要多少次乘法运算.
证明与解:首先对 ,先作行变换使得其中的 变为上三角,也就是说先对整体做一次类似前代法的操作:
% 记 B = [A,b]
for j = 1:n-1
% 按列
for k = j+1:n
% 逐行操作
B(k,1:n+1) = B(k,1:n+1) - B(k,j) * B(j,1:n+1)/B(j,j)
end
end
其中乘法次数应该为
然后对于上三角矩阵,再通过行变换将其变为对角阵:
for j = n:-1:2
for k=1:j-1
B(k,1:n+1) = B(k,1:n+1) - B(k,j) * B(j,1:n+1)/B(j,j)
end
end
这里和先前的操作是对称的,同样需要 次乘法操作.
最后还需要把对角线元素都化为 ,共 次乘法操作,综上加起来共有 次乘法操作.
习题一 T11
设
并且 为 阶非奇异阵,矩阵
称为 在 中的 Schur 余阵,证明:如果 有三角分解,那么经过 步 Gauss 消去以后, 正好等于 的矩阵 .
证明: 不难发现
左侧的矩阵实际上就是 Gauss 变换矩阵 ,计算过程就是消元过程,根据消元计算过程的唯一性, .
习题一 T16
形如 的矩阵称作 Gauss-Jordan 变换,其中 . (1) 假定 非奇异,试给出计算其逆元的方式;
(2) 向量 满足何种条件才能保证存在 ,使得
(3) 给出一种利用 Gauss-Jordan 变换求 的逆矩阵 的算法,并且说明 满足何种条件才能保证你的算法能够进行到底.
证明与解:
(1) 考虑分块矩阵:
可作初等变换使得
因此考虑 的左上角部分即可,同样利用另一种方式的初等变换,即直接消元:
因此
(2) 先变换为
因此仅需保证 的第 个分量不为 即可.
(3) 根据 (1) 和 (2) ,将 表示为列向量集合
我们要求
因此,利用 Gauss-Jordan 变换求
共 个线性方程组即可,利用 Gauss 消元法时,每一步的 Gauss 变换矩阵形如 Gauss-Jordan 阵.
根据 (2) ,算法能进行到底的条件就是对于每个 ,其第 个分量不为 .