matlab 向量 差分,MATLAB学习笔记(三)——数值计算

数值计算

主要内容包括:

矩阵的多种运算方法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次方。

%}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值