matlab 阶跃响应_Matlab-自动化控制系统设计6非线性系统

本文介绍了非线性系统的基本概念,对比了线性系统与非线性系统的区别,并通过Matlab2019b演示了相平面法分析非线性系统,包括绘制根轨迹、阶跃响应等。同时提到了Matlab的Simulink环境中如何利用Nonlinear模块库进行相轨迹分析和阶跃响应展示。
摘要由CSDN通过智能技术生成

d1d587ecd2ec567e0e866cdf27ba71ca.png

本文内容:非线性系统

操作环境:matlab2019b

一、非线性系统:

非线性系统一般理解为非线性微分方程所描述的系统。由于线性系统的本质特征是叠加原理,因此非线性系统也可以理解为不满足叠加原理的系统

线性系统和非线性系统的运动规律有很大不同:

  1. 在线性系统中,系统的稳定性之取决与系统的结构参数,与输入输出无关。而对于非线性系统来说,不存在系统是否稳定的笼统概念,必须具体讨论某一运动的稳定性,因为它不仅与系统的结构参数有关,还和初始条件有关。
  2. 线性系统的自由运行形式与系统的初始偏移无关。而非线性系统的自由运动时间响应可以随着初始偏移不同而有不同形式。
  3. 常参量线性系统在没有外力作用时,周期运动(等幅振荡)只发生在临界阻尼比情况下,这是物理不可实现的。而非线性系统,在无外力作用下完全有可能发生一定频率和振幅的周期运动,且物理可实现,也就是自激振荡

2e0b5461e5b591d99165a1c7691c6da5.png

4.线性系统可以通过输入正弦信号,引入频率的概念表达动态特征,而非线性系统在正弦作用下的输出比较复杂

常见的非线性系统

不灵敏区(死区):

9b271ed287a3a26c3b51a7887e40b71a.png

8ba49bcf880cdd34c8b3ffc545518fa2.png

饱和

14b4cc0d8f1507fd2e1a5c0e0966d850.png

c3367777ee9ba7994aa2ddbd62f8d362.png

间隙:

6ed096bc2c9d4711b7b6d7942defe3ad.png

e8cc0187a82adf4e3b3fc18d14572141.png

摩擦:例如直流电动机产生的电磁转矩会产生摩擦力矩

24bd1de34ba149783ff44234fe41384e.png

继电特性

18e58ff57acadc0e03ef0506178f2174.png

二、非线性系统分析方法matlab实现

相平面法:

例1:绘制下列方程的根轨迹

f8907f4e25d348454081bd4608a97fd5.png

这里用到了ode23函数求解微分方程(大家可以用help指令自行查看这个函数哦~)

t=0:0.1:30;
x01=[0 1]';
x02=[0 2]';
[t,x1]=ode23('fun',t,x01);%求解微分方程
[t,x2]=ode23('fun',t,x02);
plot(x1(:,1),x1(:,2),x2(:,1),x2(:,2));

除了以上代码外,还需要建立fun.m文件来构建微分方程

function dx=fun(t,x)
dx1=x(2);
dx2=-sin(x(1));
dx=[dx1 dx2]';
end

066d8efd558a6472605e4df4ee0faf50.png

运行之后就可以得到相平面图了~

例2:

2ea99440e00987b6e74e63325771c2ea.png

这里初始条件为C(0)=-3,C'(0)=0;

将fun函数修改成该饱和特性非线性特性

dc1=c(2);
if(c(1)<-2)
    dc2=2-c(2);
elseif(abs(c(1))<2)
    dc2=-c(1)-c(2);
else
    dc2=-2-c(2);
end
dc=[dc1 dc2]';
end

然后运行以下代码绘制相平面

t=0:0.1:30;
c0=[-3 0]';
[t,c]=ode23('fun',t,c0);
figure(1);
plot(c(:,1),c(:,2));

21188281b2122e9867c17453bbf9a3ed.png

还可以输入以下代码来绘制时间响应曲线

plot(t,c(:,1));

02a693622aa4a79ecbd48c5df749598e.png

本文为小编自行编程,如有错误还请大家批评指出~

待更新~下一篇为“matlab中控制系统的状态空间方程”,

另外描述函数法的matlab编程,小编一直没有找到一种通用的方法,希望知乎上的各位大佬能帮帮忙

fda8bcb5a2a956816f24da231f16b759.png

更新,在simulink下绘制相平面

simulink提供了Nonlinear模块库,搭建好模型之后可以利用XYGarph模块来输出相轨迹

如,在上例中,搭建模型

27fdb1cb5c1d2fb2103908e478510bbc.png

Nonlinear模块库可以在Discontinuities里找到

ecd5edf3a39f35f72804a0c52b7be992.png

设置好对应参数,添加XYGraph,X输出C,Y输出C’

192db284d91d52f0b33752d101d19a74.png

8be57f134393494f0c86f83f302ec7fb.png

这里给阶跃信号,运行之后可以看见输出的相轨迹

a4db7d984f093e7188d05aa93fd6e9ab.png

另外还可以在scope的输出中查看系统阶跃响应在时域下的情况

cade88952133ad2e122db1b5a7a71d04.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值