MATLAB解决数学模型基础
一、矩阵的表示
MATLAB的强大功能在于能够处理向量或矩阵,这项功能是c语言,c++等不能比拟的。比如线性规划问题,多方程组求解问题。如果把方程直接用代码表示出来是十分麻烦的,如果运用线性代数中的思想,用矩阵的方式表示,不论求解速度,还是写代码速度将会大大提升。
1.矩阵的输入
本文列举了三种矩阵的输入,一般简单的矩阵,可直接安航方式输入每个元素;同行中的元素用逗号或空格符分隔,且空格数不限;不同的行的用分号。
T=
T =
11 12 1 2 3 4 5 6 7 8 9
X=%三行三列的矩阵
X =
1 2 3
4 5 6
7 8 9
>> U=[]%空矩阵
U =
[]
2.复数矩阵的输入
注意方法一中矩阵c中可以做数学运算
%方法一
a=1;b=2;
c=
c =
1.0000 + 0.0000i 3.0000 + 2.0000i 2.0000 + 0.0000i
0.5878 + 0.0000i15.0000 + 0.0000i 4.9000 + 0.0000i
%方法二
R=;M=;
>> 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=
m123 =
[ a, b, c]
[ class, yello2, green]
[ 1, 2, 3]
%sym还可以将数值型转化为符号型。
>> digit_ma=;
>> 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/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=;
>> 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=;
>> b=';
>> 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还可以用于简单的数学分析工具,比如线性回归/拟合/绘图等。
页:
[1]