北航MATLAB第六次作业.docx
《北航MATLAB第六次作业.docx》由会员分享,可在线阅读,更多相关《北航MATLAB第六次作业.docx(17页珍藏版)》请在冰豆网上搜索。
北航MATLAB第六次作业
1、当电源电压
,求解表达式
的波形,且
,其中
。
用simulink动态仿真和S函数两种方法,建立系统仿真模型,求解
的波形。
(1)
(2)
function[sys,x0,str,ts,simStateCompliance]=sfun1(t,x,u,flag)
switchflag,
case0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case1,
sys=mdlDerivatives(t,x,u);
case2,
sys=mdlUpdate(t,x,u);
case3,
sys=mdlOutputs(t,x,u);
case4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case9,
sys=mdlTerminate(t,x,u);
otherwise
DAStudio.error('Simulink:
blocks:
unhandledFlag',num2str(flag));
end
function[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=1;
sizes.NumDiscStates=0;
sizes.NumOutputs=1;
sizes.NumInputs=1;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=1;
str=[];
ts=[00];
simStateCompliance='UnknownSimState';
functionsys=mdlDerivatives(t,x,u)
sys=4*100*sin(100*pi*t+30)+1-3*x;
functionsys=mdlUpdate(t,x,u)
sys=[];
functionsys=mdlOutputs(t,x,u)
sys=x;
functionsys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime=1;
sys=t+sampleTime;
functionsys=mdlTerminate(t,x,u)
sys=[];
2、已知末系统的状态方程如下:
试用simulink建立仿真模型,且其输入为单位阶跃响应曲线。
(1)
(2)
function[sys,x0,str,ts]=sfun3(t,x,u,flag)
switchflag,
case0,
[sys,x0,str,ts]=mdlInitializeSizes;
case1,
sys=mdlDerivatives(t,x,u);
case2,
sys=mdlUpdate(t,x,u);
case3,
sys=mdlOutputs(t,x,u);
case4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case9,
sys=mdlTerminate(t,x,u);
otherwise
DAStudio.error('Simulink:
blocks:
unhandledFlag',num2str(flag));
end
function[sys,x0,str,ts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=3;
sizes.NumDiscStates=0;
sizes.NumOutputs=1;
sizes.NumInputs=1;
sizes.DirFeedthrough=0;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=[0;0;0];
str=[];
ts=[00];
functionsys=mdlDerivatives(t,x,u)
x
(1)=1*x
(1)-1*x
(2)-2*x(3)+u;
x
(2)=2*x
(2)-1*x(3);
x(3)=3*x(3)+u;
sys=x;
functionsys=mdlUpdate(t,x,u)
sys=[];
functionsys=mdlOutputs(t,x,u)
sys=1*x
(1)-2*x
(2)+3*x(3);
functionsys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime=1
sys=t+sampleTime;
functionsys=mdlTerminate(t,x,u)
sys=[];
3、食饵-捕食者模型:
设食饵(如鱼,兔等)数量为
,捕食者数量为
,有
设r=1,d=0.5,a=0.1,b=0.02,
.用simulink动态仿真和S函数两种方法,建立系统仿真模型,绘制
,
的图形。
function[sys,x0,str,ts,simStateCompliance]=sfuntmpl2(t,x,u,flag)
switchflag,
case0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case1,
sys=mdlDerivatives(t,x,u);
case2,
sys=mdlUpdate(t,x,u);
case3,
sys=mdlOutputs(t,x,u);
case4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case9,
sys=mdlTerminate(t,x,u);
otherwise
DAStudio.error('Simulink:
blocks:
unhandledFlag',num2str(flag));
end
function[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=2;
sizes.NumDiscStates=0;
sizes.NumOutputs=2;
sizes.NumInputs=0;
sizes.DirFeedthrough=0;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=[25,2];
str=[];
ts=[00];
simStateCompliance='UnknownSimState';
functionsys=mdlDerivatives(t,x,u)
dx=zeros(2,1);
dx
(1)=x*(r-a*y);
dx
(2)=y*(-b+d*x);
sys=dx;
functionsys=mdlOutputs(t,x,u)
sys=x;
4、已知
,求该方程的解。
用simulink动态仿真和S函数两种方法,建立系统仿真模型,绘制
,
的图形。
function[sys,x0,str,ts,simStateCompliance]=sfuntmpl2(t,x,u,flag)
switchflag,
case0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case1,
sys=mdlDerivatives(t,x,u);
case2,
sys=mdlUpdate(t,x,u);
case3,
sys=mdlOutputs(t,x,u);
case4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case9,
sys=mdlTerminate(t,x,u);
otherwise
DAStudio.error('Simulink:
blocks:
unhandledFlag',num2str(flag));
end
function[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=1;
sizes.NumDiscStates=0;
sizes.NumOutputs=2;
sizes.NumInputs=1;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=25;
str=[];
ts=[00];
simStateCompliance='UnknownSimState';
functionsys=mdlDerivatives(t,x,u)
sys=4*100*sin(100*pi*t+30)+1-3*x;
functionsys=mdlUpdate(t,x,u)
sys=[];
functionsys=mdlOutputs(t,x,u)
sys=x;
functionsys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime=1;
sys=t+sampleTime;
functionsys=mdlTerminate(t,x,u)
sys=[];
5、已知弹簧-质量-阻尼器机械位移系统的动态方程为:
请建立此动态系统的仿真模型,然后分析系统在外力
作用下的系统响应即位移
。
质量块的初始位移和初始速度均为0。
(将数据传输到工作空间,然后绘制位移图形。
)