利用matlab编写S函数求解微分方程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用matlab编写S函数求解微分方程

自动化专业综合设计报告

设计题目:利用matlab编写S函数求解微分方程

所在实验室:自动化系统仿真实验室

指导教师:郭卫平

学生姓名律迪迪

班级文自0921 学号200990519114

成绩评定:

一、设计目的

了解使用simulink的扩展工具——S-函数,s函数可以利用matlab的丰富资源,而不仅仅局限于simulink提供的模块,而用c或c++等语言写的s函数还可以实现对硬件端口的操作,还可以操作windows API等的,它的魅力在于完美结合了simulink框图简洁明快的特点和编程灵活方便的优点,提供了增强和扩展sinulink能力的强大机制,同时也是使用RTW实现实时仿真的关键。

二、设计要求

求解解微分方程

y’=y-2x/y

y(0)=1

要求利用matlab编写S函数求解

三、设计内容(可加附页)

【步骤1】获取状态空间表达式。

在matlab中输入

dsolve(‘Dy=y-2*x/y’,’y(0)=1’,’x’)

得到

y=(2*x+1).^(1/2);

【步骤2】建立s函数的m文件。

利用21·用S函数模板文件。

以下是修改之后的模板文件sfuntmpl.m的内容。function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag)

%SFUNTMPL General M-file S-function template

% With M-file S-functions, you can define you own ordinary differential

% equations (ODEs), discrete system equations, and/or just about

% any type of algorithm to be used within a Simulink block diagram.

%

% The general form of an M-File S-function syntax is:

% [SYS,X0,STR,TS] = SFUNC(T,X,U,FLAG,P1,...,Pn)

%

% What is returned by SFUNC at a given point in time, T, depends on the

% value of the FLAG, the current state vector, X, and the current

% input vector, U.

%

% FLAG RESULT DESCRIPTION

% ----- ------ --------------------------------------------

% 0 [SIZES,X0,STR,TS] Initialization, return system sizes in SYS,

% initial state in X0, state ordering strings

% in STR, and sample times in TS.

% 1 DX Return

continuous state derivatives in SYS.

% 2 DS Update discrete states SYS = X(n+1)

% 3 Y Return outputs in SYS.

% 4 TNEXT Return next time hit for variable step sample

% time in SYS.

% 5 Reserved for future (root finding).

% 9 [] Termination, perform any cleanup SYS=[].

%

%

% The state vectors, X and X0 consists of continuous states followed

% by discrete states.

%

% Optional parameters, P1,...,Pn can be provided to the S-function and

% used during any FLAG operation.

%

% When SFUNC is called with FLAG = 0, the following information

% should be returned:

%

% SYS(1) = Number of continuous states. % SYS(2) = Number of discrete states.

% SYS(3) = Number of outputs.

% SYS(4) = Number of inputs.

% Any of the first four elements in SYS can be specified

% as -1 indicating that they are dynamically sized. The

% actual length for all other flags will be equal to the

% length of the input, U.

% SYS(5) = Reserved for root finding. Must be zero.

% SYS(6) = Direct feedthrough flag (1=yes, 0=no). The s-function

% has direct feedthrough if U is used during the FLAG=3

相关文档
最新文档