资源描述:
《系统仿真工具MATLAB.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、系统仿真工具MATLAB—在仿真数值求解中的应用东北大学信息学院智能所郝培锋MATLAB基本内容MATLAB语言简介程序设计基础MATLAB数值线性代数计算数值微积分及方程求解系统工具箱(略)一MATLAB语言简介1MATLAB具有交互式的语言环境,同时可以进行正常的程序化设计。2最早的语言主要是为进行数值代数及矩阵计算设计的系统,随着系统计算和绘图功能的完善其在各领域得到极其广泛的应用。3与其他语言有相应的接口,编程简单,函数功能齐全。4各种高级算法、工具箱等,Simulink面向对象的程序设计仿真环境等。二MATLAB程序设计基础1直接点击MATLAB图标可以自动建立交互式语言
2、环境,基本的赋值语句结构赋值变量=赋值表达式例:A=[1,2,3;7,8,0]表示将一个矩阵赋给A函数调用[返回变量列表]=函数名(输入变量列表)例:[x,y]=meshgrid(-3:0.1:3,-2:0.2:2)生成x,y的一个平面分割,横坐标在-3与3,纵坐标在-2与2间步长都为0.1。二MATLAB程序设计基础2简单的矩阵运算矩阵转置B=A’加减法运算(同阶矩阵)C1=A+BC2=A-B乘法运算(可相乘)C=A*B矩阵左除C=AB为AX=B的解矩阵右除C=A/B为XA=B的解矩阵翻转C=fliplr(A),C=flipud(A),C=rot90(A)矩阵乘方C=A^3矩阵
3、点运算C=A.*BC=A.^BC=A./B二MATLAB程序设计基础3MATLAB基本编程方式和程序语句循环结构for循环变量=s1:s2:s3循环体语句组end例:>mysum=0;fori=1:1:100,mysum=mysum+i;end;mysum运行结果:>mysum=5050相应的循环结构:while逻辑变量循环体语句组end二MATLAB程序设计基础3MATLAB基本编程方式和程序语句条件转移结构if逻辑变量条件块语句组end例:mysum=0;form=1:1:1000,if(mysum>10000),break;endmysum=mysum+m;end;[m,my
4、sum]运行结果:>mmysum=14210011二MATLAB程序设计基础4MATLAB函数编写规范函数基本结构Function[返回变量表]=函数名(输入变量表)%注释说明语段输入、返回变量格式检测函数体语句注意:函数中有两个默认的输入输出变量个数检测变量nargin和nargout。(详细例题请参阅相关指导书)三MATLAB数值线性代数计算1特殊矩阵的输入与表示零、幺和单位阵A=zeros(m,n),B=ones(m,n),C=eye(m,n)随机元素阵、对角矩阵A=rand(m,n),B=diag(a1,…,an),或B=diag(V)Vandermonde矩阵例:C=[1
5、,2,3,4,5];V=wander(C)结果:11111168421……………6251252551三MATLAB数值线性代数计算2特殊矩阵特征参数运算矩阵行列式A=[2,4,0;-3,1,-12;0,-1,1],B=det(A)矩阵迹与秩B=tr(A)C=rank(A)矩阵范数N=norm(A,选项n),选项n对于范数的定义n=1表示矩阵的1-范数,即‖A‖=maxn=2矩阵的2-范数,即‖A‖=而表示A的最大奇异值的平方。三MATLAB数值线性代数计算3矩阵的特征多项式、特征方程与特征根特征多项式:构造sI-A并求其行列式C(s)=det(sI-A)=sn+c1sn-1+…+c
6、n-1s+cn特征多项式函数C=poly(A)如>A=[123;456;780];B=poly(A)B=1.000-6.000-72.000-27.000特征值与特征向量:>[v,d]=eig(A)v=0.7471–0.2998–0.2763-0.6582–0.7075–0.38840.0931–0.64000.8791d=-0.388400012.1229000-5.7345三MATLAB数值线性代数计算4矩阵的逆非奇异矩阵求逆:B=inv(A)矩阵广义逆:任何矩阵A都有B=Pinv(A)5矩阵的非线性运算面向矩阵元素的运算对象是矩阵的每一个元素。常用的一些面向元素的非线性函数有
7、:abs()asin()acos()aqrt()log()log10()exp()real()imag()conj()sin()cos()round()floor()ceil()三MATLAB数值线性代数计算面向矩阵元素的运算例:>>A=[1,2,3;4,5,6;7,8,0];exp(A)ans=1.0e+003*0.00270.00740.02010.05460.14840.40341.09662.98100.0010>>log(A)warning:logofzer