有关线性代数的Matlab代码笔记(1)——置换和列空间

来源:互联网 发布:自动打验证码软件 编辑:程序博客网 时间:2024/04/27 18:28

大一的时候线代确实学得不够好。隔了两年半,按自己的方式复习整理一遍。有很多全新的认识,特别是对各种子空间的理解。这可以说是我们的教育缺失的地方:相比起为什么,更重视怎么做。知道怎么做当然比知道为什么好考核得多。我们终究是在一个以考核为目的的教育环境里。废话不多说,我不过是想找个方式一个地方仔细分析一下那些关于线性代数各个知识点的代码,给自己一个巩固思考地机会。当然也很高兴分享给大家,不管是将要学习线性代数,还是和我一样自觉学得不好,或者纯粹是对Matlab感兴趣,希望能对你们有一些帮助。

我想我会这样做:

1.简单说明代码在线性代数里的背景知识

2.先调试成功后再把代码粘贴到这里(虽然基本都是M文件,但是其实大家复制去自己创建一个更方便),嗯,会加上一些注释

3.有空陆续更新,尽量按知识点的连续性

好的,今天就从简单的开始:

%%%%%%%%%%%%%%%%%%%%%说明 %%%%%%%%%%%%%%%%%%%

置换矩阵:能够实现基本行/列变换的矩阵,本身是单位矩阵通过基本行/列变换得到的

下面的代码演示了置换的可能性(单独针对行或者列)

%%%%%%%%%%%%%%%%%%%%%CODE %%%%%%%%%%%%%%%%%%

function p = randperm(n)


% randperm 随机置换.
%
% p = randperm(n) 返回1:n的随机置换.


[ignore, p] = sort(rand(1, n));


%其实这个代码本身和线性代数的关系并不大,不过是
%生成了n个0:1的随机数然后只显示他们的大小排序而已。


%%%%%%%%%%%%%%%%%%%%%说明 %%%%%%%%%%%%%%%%%%%

矩阵的列空间:在矩阵的四个基本子空间里一般是首先考虑的一个,由矩阵的列向量构成

%%%%%%%%%%%%%%%%%%%%%CODE %%%%%%%%%%%%%%%%%%


function C = colbasis(A)


% colbasis  列空间的基. 
%
% C = colbasis(A) 返回 A的列的主元所在列
% 构成了A的列空间的一组基.
%


[R, pivcol] = rref(A);%R代表行简化阶梯矩阵,pivcol是主元所在列
C = A(:, pivcol);
0 0