matlab第八章
- 格式:doc
- 大小:274.50 KB
- 文档页数:9
第8章MATLAB高级应用8.1 MATLAB应用接口MATLAB是一个看似封闭的系统,但具有多种接口功能,有外部数据接口和应用程序接口,用户可以十分方便地与其它应用程序交换数据和信息。
比如,MATLAB可以与C和FORTRAN程序相互调用,从而充分发挥MATLAB数值计算的长处,而避开其运行速度慢的短处。
8.1.1 MEX文件MEX就是MATLAB Executable的缩写,即MATLAB可执行程序。
MEX文件是由C 或FORTRAN程序编译生成的,也可以由M文件经由C源代码生成。
MEX文件在Windows 系统是扩展名为DLL的动态链接库,类似于MATLAB的内部函数,在M文件中可以直接调用。
MEX文件具有以下几个方面的应用:(1) 对于已存在的C或FORTRAN子程序,可以通过MEX文件在MATLAB环境中直接调用,而不必重新编写M文件。
(2) 由于MATLAB是解释性语言,运行如for等循环体时,会出现速度十分缓慢的现象,为了能提高速度,往往要使用MEX程序。
(3) 对于A/D、D/A卡,或其它PC硬件,可以直接用MEX文件进行访问。
(4) 利用MEX文件,可以使用如Windows用户图形界面等资源。
由于MATLAB是用C语言编写的,有很多科学计算子程序又来自FORTRAN程序库,因此在MATLAB中,通过调用用户自己开发的C或FORTRAN程序,由编译器编译成动态链接函数,执行速度和C或FORTRAN程序相同,就可以达到提高计算效率的目的。
在MATLAB中,如果有同名的文件则调用的顺序是先执行MEX文件,其次是DLL文件,最后才是M文件,而help命令则会只处理.m文件。
1. MEX文件系统设置MEX文件的编写与编译需要两个条件:已经安装的MATLAB应用程序组件及相应的工具和合适的C或Fortran语言编译器。
MATLAB本身包含了C语言编译器Lcc,但不包含Fortran编译器。
第8章MATLAB方程数值求解例8-1用直接解法求解下列线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';x=A\b例8-2用LU分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[L,U]=lu(A);x=U\(L\b)例8-3 用QR分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[Q,R]=qr(A);x=R\(Q\b)例8-4 用Cholesky分解求解例8-1中的线性方程组。
命令如下:>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; >> b=[13,-9,6,0]';>> R=chol(A)Jacobi迭代法的MA TLAB函数文件jacobi.m如下:function [y,n]=jacobi(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵B=D\(L+U);f=D\b;y=B*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=B*x0+f;n=n+1;end例8-5 用Jacobi迭代法求解下列线性方程组。
设迭代初值为0,迭代精度为10-6。
在程序中调用函数文件jacobi.m,程序如下:A=[10,-1,0;-1,10,-2;0,-2,10];b=[9,7,6]';[x,n]=jacobi(A,b,[0,0,0]',1.0e-6)Gauss-Serdel迭代法的MA TLAB函数文件gauseidel.m如下:function [y,n]=gauseidel(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=G*x0+f;n=n+1;end例8-6 用Gauss-Serdel迭代法求解例8-5中的线性方程组。
MATLAB作业(八章)
8.1某随动系统的微分方程为
0.07523dt d ϕ+0.7522dt
d ϕ+dt d ϕ
+K ϕ=K ψ
已知:ϕ(0)=∙ϕ(0)=∙
∙ϕ(0)=0,ψ(t)=1(t)。
试分别就K=2.5、5.0、12.5三种情况对系统进行仿真,考察ϕ(t)的动态性能。
8.2已知系统模型
⎪⎩⎪⎨⎧+--=+=∙
∙
pu
x x x pu
x x 212212, x 1(0)=x 2(0)=0 当p=1、2、10时,对以下几种情况进行仿真,并比较不同输入幅值下的系统输出响应。
(1)
u (t )=1; (2)u (t )=t ; (3)u (t )=sin (t ); (4)
u (t )=1+sin (t ); (5)u(t)=1+t+sin(t).
(1)
(2)
(3)
(4)
(5)
8.3 对如图所示的系统进行仿真。
(1)输入信号为r (t )=1(t ); (2)输入信号为如下分段函数 s
5.0t t 1s
5.0t t 2{
t r ><==)()(
(1)
(2).
f=-1的阶跃扰动,试就系统在该扰动作用下IV环节的动态过程。
8.8非线性控制系统如图所示,求系统在有饱和非线性和无饱和非线性两种情况下的动态响应,分析饱和非线性对系统动态性能的影响。
(1).
(2)。