目录
前言
一、排列矩阵是什么?
二、三角形矩阵
总结
前言
上一篇文章讲了线性方程组的高斯消元法 。本文是一个辅助概念,讲解上文得到的P矩阵和L与U矩阵所代表的排列矩阵和上三角矩阵。
一、排列矩阵是什么?
排列矩阵(permutation matrix)是单位矩阵经过行列交换而得到的新矩阵。它在每行或每列上有且仅有一个1,其他元素都为0.例如:
如上一篇文章所说,对任意矩阵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中讲矩阵进行排列。更接近传统数学表达方式,而则会占用更少的内存,且运算速度更快。
二、三角形矩阵
三角形矩阵就是所有非零元素集中在主对角线之上或之下。如果所有非零元素在主对角线之上,叫上三角矩阵(upper triangular)如果所有非零元素在主对角线之下,叫下三角矩阵。
特别地,如果主对角线上的元素都为1,则可以叫做单位三角矩阵。
如上一节的例子:
就是一个单位下三角矩阵(unit lower triangualr)。
如果系数矩阵为三角矩阵,则对于方程,其中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是一个排列矩阵。文章来源:https://www.toymoban.com/news/detail-726040.html
至此,准备工作结束,下一节开始讲解矩阵的LU分解。文章来源地址https://www.toymoban.com/news/detail-726040.html
到了这里,关于排列矩阵和三角矩阵——Matlab解线性方程组(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!