|
一、矩阵的表示
MATLAB的强大功能在于能够处理向量或矩阵,这项功能是c语言,c++等不能比拟的。比如线性规划问题,多方程组求解问题。如果把方程直接用代码表示出来是十分麻烦的,如果运用线性代数中的思想,用矩阵的方式表示,不论求解速度,还是写代码速度将会大大提升。
1.矩阵的输入
本文列举了三种矩阵的输入,一般简单的矩阵,可直接安航方式输入每个元素;同行中的元素用逗号或空格符分隔,且空格数不限;不同的行的用分号。
- T=[11 12 1 2 3 4 5 6 7 8 9]
- T =
- 11 12 1 2 3 4 5 6 7 8 9
- X=[1,2,3;4,5,6;7,8,9]%三行三列的矩阵
- X =
- 1 2 3
- 4 5 6
- 7 8 9
- >> U=[]%空矩阵
- U =
- []
复制代码
2.复数矩阵的输入
注意方法一中矩阵c中可以做数学运算
- %方法一
- a=1;b=2;
- c=[1,3*a+i*b,b*sqrt(a);sin(pi/5),a+7*b,3.9+1]
- c =
- 1.0000 + 0.0000i 3.0000 + 2.0000i 2.0000 + 0.0000i
- 0.5878 + 0.0000i 15.0000 + 0.0000i 4.9000 + 0.0000i
- %方法二
- R=[1 2 3;4 5 6];M=[7 8 9;10 11 12];
- >> RM=R+i*M
- RM =
- 1.0000 + 7.0000i 2.0000 + 8.0000i 3.0000 + 9.0000i
- 4.0000 +10.0000i 5.0000 +11.0000i 6.0000 +12.0000i
复制代码
3.字符矩阵的输入
sym:符号矩阵定义函数,定义一个符号或者表达式,长度没有限制,使用方法如下所示。
syms:符号定义函数,适用范围没有sym广
输入字符矩阵限定一些字符变量,再像定义普通矩阵一样输入字符矩阵。
- >> m1=sym('class');
- >> m2=sym('yello2');
- >> m3=sym('green');
- >> m123=[a,b,c;m1,m2,m3;1,2,3]
- m123 =
- [ a, b, c]
- [ class, yello2, green]
- [ 1, 2, 3]
- %sym还可以将数值型转化为符号型。
- >> digit_ma=[0.3 sqrt(3) 3.1;exp(0.3) log(10) 23^.5];
- >> syms_ma=sym(digit_ma)
- syms_ma =
- [ 3/10, 3^(1/2), 31/10]
- [ 3039611811401035/2251799813685248, 2592480341699211/1125899906842624, 23^(1/2)]
- >> digit_ma
- digit_ma =
- 0.3000 1.7321 3.1000
- 1.3499 2.3026 4.7958
复制代码
4.特殊矩阵的使用
有些特殊矩阵,可用matlab中的函数生成,例如:
全零阵函数zeros
- a=zeros(3)
- a =
- 0 0 0
- 0 0 0
- 0 0 0
- >> zeros(3,4)
- ans =
- 0 0 0 0
- 0 0 0 0
- 0 0 0 0
复制代码
还有单位矩阵函数eye,全1阵函数ones,均匀分布随即矩阵函数rand,正态分布随机矩阵函数randn,产生随即排列函数randperm,计算矩阵中元素个数numel等等,其用法大同小异,需要用时网上都有。
二、复杂数学函数的求解
1.函数求导
- syms H C K x
- T=(H/C)*((1/cos(x))+[1+(K-tan(x))^2]^(1/2));
- dfdx=diff(T,x)
- dfdx =
- (H*(sin(x)/cos(x)^2 - ((tan(x)^2 + 1)*(K - tan(x)))/((K - tan(x))^2 + 1)^(1/2)))/C
复制代码
其中T函数为所需求导的函数,diff函数用于求解函数导数和矩阵差分的。
matlab在求解复杂数学函数方面功能是非常强大的,不论求导还是积分,还是更复杂的函数,均可用matlab中已经封装好的函数求解,在此,本文不再详细叙述,日常用到时可以网上搜集方法。
三、线性方程组的求解
1.齐次方程组通解
- >> A=[1 2 2 1;2 1 -2 -2;1 -1 -4 -3];
- >> format rat %指定有理式格式
- >> B=null(A,'r')%求解空间的有理基
- B =
- 2 5/3
- -2 -4/3
- 1 0
- 0 1
- >> b=rref(A)%通过最简行得到基
- b =
- 1 0 -2 -5/3
- 0 1 2 4/3
- 0 0 0 0
复制代码
2、非齐次方程组通解
matlab中求解该方程组的方法有很多,本文只列举了一种最简便地方法。
- >> A=[1 1 -3 -1; 3 -1 -3 4;1 5 -9 -8];
- >> b=[1 4 0]';
- >> B=[A b];
- >> C=rref(B)
- C =
- 1 0 -3/2 3/4 5/4
- 0 1 -3/2 -7/4 -1/4
- 0 0 0 0 0
复制代码
四·、简单的分析
matlab还可以用于简单的数学分析工具,比如线性回归/拟合/绘图等。 |
|