黑暗过总有光明 发表于 2019-10-17 15:31:16

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]
查看完整版本: MATLAB解决数学模型基础