主要内容包括:
矩阵的多种运算方法MATLAB实现
计算矩阵的秩、特征值及其对应的特征向量
利用矩阵操作求解线性方程组
数值微积分
1、矩阵的结构变换
转置: A' A.'(非共轭转置)
对称变换:利用指令flipud()和fliplr()
A=flipud(B) %上下方向翻转矩阵。如果是列向量,返回相反顺序的向量;如果是行向量,则返回原向量
A=fliplr(B) %水平方向翻转矩阵。如果是行向量,返回相反顺序的向量;如果是列向量,则返回列向量
A=flipdim(A,dim) %返回指定维翻转矩阵。若dim=1,则以行方向翻转;dim=2,则:以列方向翻转
rot90(A,k) %让矩阵A逆时针旋转90度。注意:该函数仅对下一次变换成立
triu(A,k) %当K=0/不写时(K缺省时默认为0), 提取主对角线及其上方的元素。当K>0时,提取矩阵A主对角线上方的第K条对角线以上的元素。K<0时,提取矩阵A的主对角线下方第-K条对角线以上的元素。
tril(A,k) %当K=0/不写时(K缺省时默认为0),提取主对角线及其以下的元素。其中K>0时,提取矩阵A主对角线上方的第K条对角线以下的元素。K>0时,提取矩阵A的主对角线下方第-K条对角线以下的元素。
例如:
% example 1
>> b=[1,2,3;4,5,6;7,8,9;10,11,12];
>> triu(b)
ans =
1 2 3
0 5 6
0 0 9
0 0 0
% example 2
>> a=[1,2,3;4,5,6;7,8,9];
>> tril(a)
ans =
1 0 0
4 5 0
7 8 9
2、矩阵分析(包括求矩阵的秩、矩阵对应的行列式和矩阵的逆等运算)
rank(A) %求矩阵A的秩
rref(A) %求矩阵A的行阶梯矩阵
det(A) %计算方阵A的行列式
inv(A) %求方阵A的逆矩阵
%{
如果矩阵A不是方阵或是奇异矩阵时,
该矩阵存在与A的转置矩阵同型的矩阵B,
使得AxBxA=A,BxAxB=B成立,
则B称为A的逆,即伪逆矩阵,
%}
%求伪逆矩阵的函数为pinv()
3、矩阵的特征值分析
[V,D]=eig(A) % D是A的特征值,V是对应于D的特征向量,若函数只有一个输出宗量,则只给出特征值
4、线性方程组求解
% 方程组 Ax=b,其解为:
x=(A的逆)xb 即x=inv(A)*b / x=A\b
5、解方程组
% MATLAB还提供了函数null()用来求解齐次线性方程组解空间的一组基(即基础解系),格式如下:
X=null(A,'r')
%{
求系数矩阵A的齐次线性方程组一组基础解系(即一组基)。r是可选参数:
当有r时,输出有理基;当没有r时,输出正交规范基
%}
当已知函数的表达式时,理论上可以通过公式进行微积分计算。但在实际应用中,往往需要处理的对象
并不能通过公式来进行计算。因此,有必要介绍这些函数的微分和积分的数值算法。
1、差分与偏导
% 差分=f(x+h)-f(x),若h>0,则称为向前差分;若h<0,则称为向后差分。
% 在MATLAB中,计算差分的指令是diff(),调用格式为:
% DX=diff(A,n,dim) %计算矩阵A的n阶差分。dim=1时,按列计算差分;dim=2时,按行计算差分
例如:
clear
clc
dh=pi/10;
h=0:dh:pi;
x=cos(h).*exp(h); % 对应每个元素做相应的运算。如果不加上点,则是矩阵的运算
dxdt_diff=diff(x)/dh % way one
dxdt_grad=gradient(x,dh) % way two
% 结果为:
dxdt_diff =
1 至 8 列
0.9616 0.6824 -0.0255 -1.3455 -3.4561 -6.4783 -10.3924 -14.9207
9 至 10 列
-19.3763 -22.4915
dxdt_grad =
1 至 8 列
0.9616 0.8220 0.3284 -0.6855 -2.4008 -4.9672 -8.4353 -12.6565
9 至 11 列
-17.1485 -20.9339 -22.4915
2、数值积分
1、一重积分
[l,n]=quad(fun,a,b,tol)
%{
quad()函数是基于遍步长辛普生法的求定积分函数,计算被积函数fun在区间[a,b]上的定积分。
输出宗量l为定积分的结果,n为调用被积函数的次数。tol是定积分结果的精度
如果只有一个输出宗量,即为定积分结果。tol缺省时为10的-6次方。
%}
它
[l,n]=quadl(fun,a,b,tol)
%{
quadl()函数是基于洛巴托法求定积分函数。功能同函数quad()函数。该函数能够精确地求出定积分的值,
且一般情况下quadl()函数调用的步数远远小于quad()函数。
%}
St=trapz(x,y)
%{
以表格形式定义的函数,采用梯形法求函数y关于自变量x的积分
注意:运用该函数无法控制结果的精度。
%}
2、二重积分
S=dblquad(fun,xmin,xmax,ymin,ymax.tol)
S=triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)
%{
采用递推自适应辛普森计算二重积分的函数为dblquad(),
计算三重积分的函数为triplequad(),
tol是积分结果的精度,缺省时默认为10的-6次方。
%}