MATLAB常用矩阵函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 矩阵的构造与操作
zeros 生成元素全为0的矩阵
ones 生成元素全为1的矩阵
eye 生成单位矩阵
rand 生成随机矩阵
randn 生成正态分布随机矩阵
sparse 生成稀疏矩阵
full 将稀疏矩阵化为普通矩阵
diag 对角矩阵
tril 矩阵的下三角部分
triu 矩阵的上三角部分
flipud 矩阵上下翻转
fliplr 矩阵左右翻转
MATLAB还能够构造一些常用的特殊矩阵
2. 矩阵运算函数
norm 矩阵或向量范数
normest 稀疏矩阵(或大规模矩阵)的2-范数估计
rank 矩阵的秩
det 方阵的行列式
trace 方阵的迹
null 求基础解系(矩阵的零空间)
orth 正交规范化
rref 矩阵的行最简形(初等行变换求解线性方程组)subspace 计算两个子空间的夹角
3. 与线性方程有关的矩阵运算函数
inv 方阵的逆
cond 方阵的条件数
condest 稀疏矩阵1-范数的条件数估计
chol 矩阵的Cholesky分解(矩阵的平方根分解)cholinc 稀疏矩阵的不完全Cholesky分解
linsolve 矩阵方程组的求解
lu 矩阵的LU分解
ilu 稀疏矩阵的不完全LU分解
luinc 稀疏矩阵的不完全LU分解
qr 矩阵的正交三角分解
pinv 矩阵的广义逆
4. 与特征值或奇异值有关的矩阵函数
eig 方阵的特征值与特征向量
svd 矩阵的奇异值分解
eigs 稀疏矩阵的一些(默认6个)最大特征值与特征向量svds 矩阵的一些(默认6个)最大奇异值与向量
hess 方阵的Hessenberg形式分解
schur 方阵的Schur分解
a =
0.5000 0.8080 0.1660 0.8180 0.4440 0.1000
0.5810 1.3580 0.1870 0.7280 0.5450 0.1680
0.9960 2.0500 0.2250 1.7860 0.6320 0.2020
这有个我们以前的MATLAB幂法求特征值和特征响量的程序:[maxnorm.m]
function t=maxnorm(a)
%求数列中按模最大的分量
n=length(a);
t=0;
for i=1:n
if abs(a(i)/max(abs(a)))>=1
t=a(i);
end
end
function [mt,my]=maxtr(a,eps)
%用幂法求矩阵的主特征值和对应的特征向量
n=length(a);
x0=diag(ones(n));
k=1
x=a*x0
while norm(x-x0)>eps
k=k+1
q=x;
y=x/maxnorm(x)
x=a*y;
x0=q;
end
mt=maxnorm(x)
my=y
[main1.m]
a=[3 2;4 5]
maxtr(a,0.0001)
[invmaxtr.m]
function [mx,mt,my]=invmaxtr(a,eps)
%求矩阵按模最小的特征值和对应的特征向量
n=length(a);
x0=diag(ones(n));
x=inv(a)*x0;
k=0
while norm(x-x0)>eps
k=k+1
q=x;
y=x/maxnorm(x)
x=inv(a)*y;
x0=q;
end
mt=1/maxnorm(x)
my=y
[main.m]
a=[3 2;4 5]
invmaxtr(a)
用matlab求矩阵的最大特征值和特征向量
[ 2008-03-21 21:23:23 | 作者: dklkt ] 字号: 大 | 中 | 小
最近辅修数学建模,学习层次分析法的时候发现算矩阵的最大特征值和特征向量有点麻烦。于是找同学要了matlab。因为我连初学者也算不上,所以临阵磨枪,小学了下matlab 的语法,花了2个小时查资料,才写出了这个小程序。用于解决层次分析法中的求解问题。注意本程序给出的特征向量都是经过标准化的,可以直接拿来用。
保存成m文件在matlab中运行。
view plaincopy to clipboardprint?
01.%输出格式
02.format short;
03.%输入待求的矩阵A
04.A=[1 2
05. 1/2 1];
06.
07.[v,d]=eigs(A);
08.%最大特征值
09.tbmax=max(d(:));
10.%得到行数和列数
11.[m,n]=size(v);
12.
13.%将特征向量标准化
14.sum = 0;
15.for i=1:m
16. sum = sum + v(i,1);
17.end
18.tbvector = v(:,1);
19.for i=1:m
20. tbvector(i,1)= v(i,1)/sum;
21.end
22.
23.disp('========================================');
24.disp('输入的矩阵为:');
25.A
26.disp('所有的特征向量和特征值为:');
27.v
28.d
29.disp('最大的特征值为:');
30.tbmax
31.disp('最大的特征值对应的特征向量为(标准化后的):');
32.tbvector
%输出格式
format short;
%输入待求的矩阵A