MATLAB-S3数值运算


MATLAB的两种基本数值运算方式:矩阵和多项式
【本章要点】

  • 向量的创建、引用和基本运算
  • 矩阵的创建、引用和基本运算
  • 多项式的创建和基本运算
  • 应用问题求解

3 向量和矩阵

3.1 向量

向量就是等价于一维数组。

3.1.1 向量的创建和引用

  • 直接输入法;
  • 冒号输入法:利用:
  • linspace法
  • logspace法
    【例子】
>>m1=[1 2 3 4 5 6]
>>m1 =[1;2;3]
>>m2 =[1:6]
>>m3 = linspace(1,6,6)
>>m4 = logsapce(1,2,5)

3.1.2 向量的运算

  1. 向量的基本运算
    向量可以与常数,与向量做加减乘除。对维度有要求
  2. 向量的点积运算–dot
    dot(m1,m2) % 用来求点积
  3. 向量的叉积运算—cros函数进行叉积运算
    维度至少有一个为3
  4. 向量的混合积运算
    混合积的运算通过dot和cross函数一起来完成。
    dot(m1,cross(m2,m3))

3.2 矩阵

矩阵时线性代数的基本运算单元。通常是含有M行和N列的矩形结构。

3.2.1 矩阵的创建

矩阵主要分为三类:数值矩阵(数值矩阵和复数矩阵)、符号矩阵和特殊矩阵。

  • 直接输入法
  • M脚本文件生成法
  • TXT文本生成法–load加载:类似也可以从excel–xlsread和xlswrite函数完成。
  • 特殊矩阵的创建
    eyes():生成单位举证;ones():生成全1矩阵;zeros():全零矩阵;rand():随机矩阵;

3.2.2 矩阵的操作函数

  • 矩阵元素的扩充
  • 矩阵元素的删除
  • 矩阵元素的修改
  • 矩阵元素的数据更换

3.2.3 矩阵元素的引用

matrixName(m.n) % 引用矩阵里的某一元素

3.2.4 矩阵的基本运算

  • 矩阵的加减
  • 矩阵乘法运算:矩阵相乘运算、矩阵的数乘运算、矩阵的点乘、矩阵的内积、矩阵的叉积、
  • 矩阵的卷积和反反卷积运算
  • 矩阵的除法运算:矩阵左除和右除、矩阵的点除、
  • 矩阵的乘法运算:矩阵的乘方、矩阵的点乘方

3.2.5 矩阵的操作函数

  1. 矩阵的转置:行变成列;
    【例子】
M = magic(3);
M;
M'   	% 求转置
  1. 矩阵的逆:相乘为单位矩阵
    函数命令:inv;不是所有的矩阵都能求出逆矩阵。矩阵必须是方阵
M=[1 2 0; 2 5 -1 ;4 10 -1]
G=inv(M)	% 求解矩阵的逆矩阵

  1. 矩阵的行列式
    函数命令:det; 调用格式:det(M)
M=magic(3)
det(M)
  1. 矩阵的秩:求到底几个是基本的
    函数命令:rank 调用格式:rank(M)
M=magic(3)
rank(M)
  1. 矩阵的特征值分解
    函数命令:eig 调用格式:eig(M):返回矩阵的特征值,并以向量形式存放

3.2.5 求解线性方程组

  • 线性方程组的一般形式表示如下:AX=B;其中A为线性方程组等式左边各方程式的系数项,X为欲求解的位置项,B为代表线性方程组等式右边的已知项。
  • 线性方程组的求解可以分为两类:一类是求方程组的唯一解(即特解),另一类是求方程组的无穷解(即通解)。通过方程组系数矩阵的秩来判断。
    若系数项矩阵的秩r=n(n为方程组中未知变量的个数),则有唯一解
    若系数矩阵的秩r<n,则可能有无穷解
    线性方程组的无穷解=对应齐次方程组的通解+非齐次方程组的一个特解。
  1. 线性方程组唯一解或特解的解法
    运算规则:X是方程组AX=B的解,其中,A为系数矩阵,B为已知项矩阵的转置。
    两种方法:X = A\B X =inv(A) * B
    【例子】
% 左除法
>>A=[1,-3;1,-1]; B=[1;19];
>>X=A\B
X = 
	28
	9
% 求逆法
>>X = inv(A)*B
X =
	28
	9
  1. 齐次线性方程组通解的解法
    函数命令:null 调用格式:null(M),null(M,‘r’)
    函数功能:函数null用来求解零空间,即满足AX=0的解空间,实际上是求出解空间的基础解系,用于获得齐次线性方程组的通解。
  • null(M)返回的列向量为方程组正交规范基
  • null(M,‘r’) 返回的列向量是方程AX=0的有理基
    【例子】
>>A=[1,-3,-1;1,-1,-19]
A=
	1  -3  -1
	1  -1  -19
>>Z=null(A)
Z= 
	0.9515
	0.3058
	0.0340
>>Z=null(A,'r')
Z=
	28
	9
	1
  1. 非齐次线性方程组通解的解法
  • 一般解法:【解题步骤】
    判断AX=B是否有解,若有解,进行下一步;是否有唯一解
    求AX=B的一个特解
    求AX=0的通解
    AX=B的通解为:AX=0的通解 + AX=B的一个特解。
    【例子】
    【法一】
% 求解非齐次线性方程通解
>>A=[1 1 -3 -1; 3 -1 -3 4;1 5 -9 -8]
>>B = [1 4 0]'
>>D = [A B]
>>n=4;
>>RA = rank(A)
RA
>>RD=rank(D)
RD
>>fromat rat 	% 这哥语句是什么意思?没有看懂
>>if RA==RD & RA==n 		% 判断是否有唯一解
		X=A\B
	elseif RA==RD & RA<n	%判断是否无穷解
		X0=A\B				% 求特解
		C=null(A,'r')			% 求方程组的基础解系 
	else 					% 方程组无解
		X = 'NO SLOVE'
	end

【法二】rref解法
函数命令:rref 调用格式rref([A B])

>>A = [4 8 -6 2; 1 3 9 5; 5 11 3 7; 3 5 -15 -31]	%创建线性方程组
A
>>B = [1 2 3 -1]'
b
>>D=[A B]
D
>>M=rref(D)	%使用rref方法求解
M

怎么解释M的值的意义,这方面是线性代数的应用

3.3 多项式

在MATLAB中,多项式用行向量表示:P=[a0 a1 a2 a3 … an],约定多项式以降幂的形式出现。
【示例】

% 从第三章的多项式开始进入代码实践阶段
%% 3.3 多项式
% 多项式的构造
A=[1 2 -3 -4];
PA=poly(A);
PA
PS=poly2sym(PA)

%% 多项式的运算
% 1 多项式的加减运算,用行向量表示
PX=[1 4 -7 -22 24];
PY=[1 -1];
PZ=PX + [0 0 0 PY];
PZ
poly2sym(PZ)
PS=PX-[0 0 0 PY]
poly2sym(PS)

% 2 多项式的乘法 函数命令conv  调用格式conv(px,py)
% 函数功能得到多项式PX和PY的乘积
PX=[1 4 -7 -22 24];
PY=[1 -1];
PS=conv(PX,PY);
PS

% 多项式的除法  函数命令:deconv   调用格式:deconv(PX,PY)
% 结果包括多项式div和余数多项式rest
PX=[1 4 -7 -22 24];
PY=[1 -1];
PZ=deconv(PX,PY)
poly2sym(PZ)

% 多项式微分     函数命令:polyder  调用格式:polyder(PX)
PX=[1 4 -7 -22 24];
poly2sym(PX)
polyder(PX)

% 多项式求根  函数命令:roots  调用格式:roots(px)
PX=[1 4 -7 -22 24]
roots(PX)

% 多项式求值  函数命令:polyval,polyvalm  调用格式:polyval(px,a),polyvalm(px,m)
% 函数功能是:求出当多项式中的变量为某个指定值a时该 多项式的值;而m是指定某个矩阵M时的值
PX=[1 4 -7 -22 24]
polyval(PX,2)

3.4 复数和复数运算

复变函数:复数以及在其基础上发展起来的复变函数分支,解决了许多实数运算无法解决的问题。
复变函数是控制工程的数学基础,MATLAB支持在运算和函数中使用复数或复数矩阵,还支持复变函数运算。

%% 3.4 复数和复数运算
% matlab使用i或者j来代表虚部复数运算,一个复数可以表示为:x=a+bj,其中a称为实部,b称为虚部。
% 1. 构造复数和复数矩阵
x=1+2i;
x
M=[1+2i 3-4i;2-3i 1-i];
M

%% 2. 复数相关运算函数
% 对于复数x=a+bi,Matlab提供了非常丰富的函数来了解负数的实部、虚部、模和辐角等
% 复数的基本运算包括加、减、乘、除可以参考实数的运算函数或运算符号
% 复数相关函数的用法:real:求复数的实部 imag:求复数的虚部  conj:求复数的共轭
% abs:求复数或复数矩阵的模  angle:求复数或复数矩阵的相位角,单位为弧度
x=1-2i;
y=1+3i;
x+y
x-y
x*y
x/y
x\y
real(x)
imag(x)
conj(x)
abs(x)
angle(x)
angle(x)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值