平面自治系统相位图的MATLAB软件设计

时间:2022-10-08 09:57:39

平面自治系统相位图的MATLAB软件设计

【 摘 要 】 围绕平面自治系统的相位图这个核心概念,利用MATLAB求解微分方程组的优势,得到了求解自治微分方程组相位图曲线、相位图方向场等各种算法的程序实现,实现了MATLAB仿真工具箱设计,利用图形用户界面(GUI)方法,设计了良好的人-机交互系统的主界面,最后给出了实际例子的程序运行结果,对推动微分方程组在具体实践中的应用和普及具有实际意义。

【 关键词 】 平面自治系统;相位图;MATLAB ;仿真;GUI

【 中图分类号 】 O175.1 【 文献标识码 】 A

Autonomous Planar System Phase Diagram of MATLAB Software Design

Xi Wei

(Shenyang Institute of Chemical Technology LiaoningShenyang 110142)

【 Abstract 】 Around the plane autonomous system phase diagram is the core concept, using MATLAB to solve the differential equation group of advantage, obtained for autonomous differential equations of phase diagram, phase diagram orientation field and other algorithm program, realized MATLAB simulation toolbox for the design, using a graphical user interface ( GUI ) method, design a good man - machine interactive system main interface, finally gives the practical examples of the program running results, to promote the differential equations in the specific application and popularization, has practical significance.

【 Keywords 】 the plane autonomous system; phase diagram; MATLAB; simulation; GUI

0 引言

微分方程组是微分方程领域研究的一个十分重要的分支,很多自然现象是以微分方程组作为模型的。若方程组右端函数不显含自变量,称这样的方程组为平面自治系统,在工程技术上及社会科学各领域中都有广泛的应用。自治微分方程组的相位图是微分方程组的一个重要概念,它给出了微分方程组解的一种几何解释。一般情况下,通过对微分方程组的相图来研究微分方程组的解比直接用积分曲线更方便。

MATLAB是当前最流行的、功能强大的高效率的数值计算的可视化科技应用软件和编程语言之一。尽管MATLAB具有很强大的计算功能,但是,MATLAB里仍然没有微分方程组相位图方面的函数和工具箱,考虑到MATLAB具有许多现成的求解微分方程组及其他数学运算的函数及其解释性语言的特点,结合考虑微分方程组相位图的自身特点,利用MATLAB开发微分方程组相位图仿真工具箱能够发挥二者各自的优势,它比用VC++等其他计算机语言具有事半功倍的效果。微分方程组相位图的工具软件国内尚不多见,国外有pplane等,但在国内并不普及。为了促进微分方程组理论更广泛地应用到具体实践中,利用现有的算法,开发一个成功的微分方程组相位图系统具有重大实际意义。

1 平面自治系统相位图简介

定义1:二维一阶自治微分方程组

F(x,y)G(x,y) (1.1)

的解x=x(t),y=y(t)在xoy平面上的轨迹称为(1.1)的轨线或相轨线。轨线图在相平面上的图像称为(1.1)的相图。

易于看出,解x=x(t),y=y(t)在相平面上的轨线,正是这个解在(t,x,y)三维空间中的积分曲线在相平面上的投影,用轨线来研究(1.1)的解通常比用积分曲线方便。

定理1:如果F(x,y),G(x,y)满足初值解的存在与唯一性定理条件,则过相平面上的区域D的任一点P0=(x0,y0),(1.1)存在一条且唯一一条轨线。

平面定性理论的研究就是在不求解的情况下,仅从(1.1)右端函数的性质出发,在相平面上描绘出其轨线的分布图,称为相图。积分曲线与轨线有显著区别,积分曲线可以不考虑方向,而轨线是一条有向曲线,通常用箭头在轨线上标明对应于时间t增大时的运动方向。

若初值点P0=(x0,y0)不是临界点,则相应的轨道是xy平面的一条曲线,随着t的增加,点(x(t),y(t))沿这条曲线变化。可以证明,任何非单点的轨道是一条没有自交点的非退化的曲线。

2 MPLNE系统实现

微分方程组相位图主要是借助一种简单的几何方法来研究已知的微分方程组的解,直观上给出了微分方程组解曲线的一般形状。通过描绘相位图,即由临界点和典型的非退化轨道构成的相位平面图形,来从本质上刻画方程组(1.1)的解的性质。可以通过画斜率为==的典型线段来构造方向场或通过画在每一点都与向量(F(x,y),G(x,y))有相同方向的典型向量来构造方向场,那么这样的向量场表明了方程组刻画的轨道运行的方向。这个处理过程主要函数如下。

2.1 MATLAB微分方程求解函数介绍

MATLAB的工具箱包含许多学科方向,包括了数值计算、矩阵计算、图像绘制、数据分析、图像处理、小波分析、统计分析、信号处理等。由于不断扩充不同学科的工具箱,使它的应用越来越广泛,已成为国际控制界主要使用的语言之一。表1给了本开发平台使用的主要函数和指令的描述。

2.2 主要MATLAB程序

在实际应用中,能够求解的微分方程组是十分有限的,所以借助matlab软件强大的数值运算功能可以得到微分方程组的数值解,本文对微分方程组相位图理论利用matlab函数实现其功能仿真,下面介绍主要matlab程序。

(1) 函数Mfield(t,y,u)求方程y'=g(t,y)方向场函数,其中t,y为自变量和函数值向量,u=g(t,y)为线素方向函数,程序如下:

function f=Mfield(t,y,u)

t0=t;y0=y;h1=size(t);h2=size(y);

dt=ones(h2(2),h1(2));[t,y]=meshgrid(t,y);

dy=eval(u);quiver(t0,y0,dt,dy)

(2) 函数Mphtra(f,x0,y0,x1,x2,y1,y2),求方程组

F(x,y)G(x,y)

的相轨线函数,其中x0,y0为初始值,x1,x2,y1,y2为相轨线在x轴,y轴的取值范围,程序如下:

function f=Mphtra(f,t0,y0,t1,t2,y1,y2)

syms t y;[t,y]=ode45(@(t,y)eval(f),[t0,t2],y0);

plot(t,y,'b');axis([t1,t2,y1,y2]);

text(t0,y0,['\leftarrow','(',num2str(t0),',',num2str(y0),')'],'FontSize',20);

3 图形用户界面

MATLAB的GUIDE功能大大简化了界面设计的过程,其系统工具箱形象直观,容易对各种回调函数进行修改,也可对文本数据进行分析处理。MPLNE系统应用平台的界面程序主要由每个控件的回调函数构成,利用回调函数实现各控件相关功能。把微分方程组相位图各程序函数整合在如图1的界面中,下面以控件proceed为例,给出回调函数callback的语句。

zy=get(handles.edit2,'string');zt=get(handles.edit4,'string');

z=['(' zy ')' './(' zt ')'];

t1=get(handles.edit5,'string');t1=str2num(t1);

t2=get(handles.edit7,'string');t2=str2num(t2);

y1=get(handles.edit6,'string');y1=str2num(y1);

y2=get(handles.edit8,'string');y2=str2num(y2);

e1=(t2-t1)/15;e2=(y2-y1)/15;

t=t1:e1:t2;y=y1:e2:y2;

figure(2);Mphtra(t,y,z);hold on

在MATLAB提示符下键入MPLNE命令则启动如图1所示的仿真工具箱界面,用户可以在The differential equation窗口中输入微分方程组,在The display window 窗口中输入变量的取值范围,然后单击proceed按钮即可得到相应的相位图方向场,如图2所示。在windows菜单中点击相位图曲线按钮,即可调出微分方程组相位图的界面窗口,其输入方法与方向场界面相似,在此不再赘述。

4 结论

本文介绍了如何利用MATLAB的微分方程组函数及图形用户界面开发和设计微分方程组相位图仿真工具箱的方法和步骤。将MATLAB和微分方程组理论有机结合起来,实现了微分方程组应用问题系统的设计和高效仿真及图形输出,对普及微分方程组相位图理论,推广微分方程组在实际中应用和进一步提高教学效果都具有明显的促进作用。该方法的具体应用实例可以参见文献[3]。

软件包的编码还没有进行最优最小化处理,工具箱设计的功能还不完善,系统的性能还需要进一步提高,以满足特殊微分方程组的需要,进一步工作包括增加工具箱的功能,降低算法的复杂度,由于MATLAB解释性语言的特点,这些问题用户可很方便地进行处理和扩展。

参考文献

[1] 东北师范大学微分方程教研室.常微分方程[M].北京:高等教育出版社,2005:224-263.

[2] 金银来.常微分方程[M].北京:电子工业出版社,2011:20-25.

[3] C.Henry Edwards,David E.Penney. Differential Equations and Boundary Value Problems: Computing and Modeling [M]. New York:Pearson College Division, 2004:17-29.

[4] 张雪峰,张庆灵.粗糙集数据分析系统MATLAB仿真工具箱设计[J].东北大学学报,2007,28(1):40-43.

[5] 罗华飞.MATLAB GUI 设计学习笔记[M].北京:北京航空航天大学出版社,2011:345-423.

[6] 孙燮华.关于MATLAB符号工具箱的若干问题[J].计算机应用,2000,20(5):14-16.

作者简介:

席伟(1978-),男,吉林松原人,东北大学硕士毕业,沈阳化工大学计算机学院讲师;主要研究方向是模式识别、微分方程应用等。

上一篇:买卖家具也要讲知识产权 下一篇:数字调查 第22期