排列矩阵和三角矩阵——Matlab解线性方程组(2)

目录

前言

一、排列矩阵是什么?

二、三角形矩阵

总结


前言

        上一篇文章讲了线性方程组的高斯消元法 。本文是一个辅助概念,讲解上文得到的P矩阵和L与U矩阵所代表的排列矩阵和上三角矩阵。


一、排列矩阵是什么?

        排列矩阵(permutation matrix)是单位矩阵经过行列交换而得到的新矩阵。它在每行或每列上有且仅有一个1,其他元素都为0.例如:

P=\begin{pmatrix} 1 & 0 &0\\ 0 & 0& 1\\ 0& 1& 0 \end{pmatrix}

        如上一篇文章所说,对任意矩阵A左乘一个排列矩阵P,就是对矩阵A的行进行排列。如果对任意矩阵A右乘一个排列矩阵P,就是对矩阵A的列进行排列。

        Matlab中提供了一种快速建立排列矩阵的方法:

即用一个排列向量(permutation vector)作为行或者列的索引,对于上面那个排列矩阵P,设p为排列向量,则有:

p = [1,3,2];

即,第一行的第一列是1,第二行的第三列是1,第三行的第2列是1.

此时,P*A 和A(p,:)都表示对A进行行排列;而A*P和A(:,p)都表示对A进行列排列。

clear,clc
p=[1 3 2];
P=[1 0 0;0 0 1;0 1 0];
A=[10 -7 0;-3 2 6;5 -1 5];
P*A
A(p,:)
A*P
A(:,p)

输出如下:

输出结果确实符合所需排列要求。 

这两种方式都可以在Matlab中讲矩阵进行排列。P*A更接近传统数学表达方式,而A(:,p)则会占用更少的内存,且运算速度更快

二、三角形矩阵

        三角形矩阵就是所有非零元素集中在主对角线之上或之下。如果所有非零元素在主对角线之,叫上三角矩阵(upper triangular)如果所有非零元素在主对角线之,叫下三角矩阵

        特别地,如果主对角线上的元素都为1,则可以叫做单位三角矩阵。

如上一节的例子:

L=\begin{bmatrix} 1 & 0 & 0\\ 0.5 &1 &0 \\ -0.3& -0.04& 1 \end{bmatrix}

就是一个单位下三角矩阵(unit lower triangualr)。

 如果系数矩阵为三角矩阵,则对于方程Ux=b,其中U为n阶方阵,b为列向量。则求其解x可以如下有两种算法。

%% 从b向量中逐个减去矩阵U列的倍数
x=zeros(n,1);
for k=n:-1:1
    x(k)=b(k)/U(k,k);
    i=(1:k-1)';
    b(i)=b(i)-x(k)*U(i,k);
end

%% 使用U矩阵的行和解出的部分x作内积
x=zeros(n,1);
for k=n:-1:1
	j=k+1:n;
    x(k)=(b(k)-U(k,j)*x(j))/U(k,k);
end

总结

        本文讲解了两种特殊矩阵。分别是排列矩阵P和三角矩阵U。这两种特殊矩阵在求解方程组的时候经常用到。上一节留下了一个公式:LU=PA,结合本讲可以知道。L是消元过程的乘子,是一个单位下三角矩阵;U是消元后最后得到的系数矩阵,它是一个上三角矩阵;P是一个排列矩阵。

        至此,准备工作结束,下一节开始讲解矩阵的LU分解。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值