控制系统数字仿真-基于MATLAB实现四阶龙格库塔法
2017-12-25 13:17
926 查看
系统结构图如图
则先画根轨迹图:
den=[1 10 25 0]
num=[0 0 0 1]
rlocus(num,den)
用四阶龙格库塔法进行仿真,分别求超调量为5%,25%和50%时的K值
y=[0 0];
k=1;
while max(y)<=1.5 %%1.05(5%超调),1.25(25%超调),1.5(50%超调)
num1=[k];
den1=[1 10 25 0];
[num,den]=feedback(num1,den1,1,1);
[A,B,C,D]=tf2ss(num,den);
x0=[0;0;0];
v=1;
tf=15;
t0=0;
h=0.1;
r=1;
x=x0;
y=0;
t=t0;
for i=1:tf/h
K1=A*x+B*r;
K2=A*(x+h*K1/2)+B*r;
K3=A*(x+h*K2/2)+B*r;
K4=A*(x+h*K3)+B*r;
x=x+h*(K1+2*K2+2*K3+K4)/6;
y=[y;C*x];
t=[t;t(i)+h];
end
k=k+1;
end
%stepvalue=1 [OSValue, OSIndex] = max(y); OverShoot = (OSValue - stepvalue)/stepvalue*100;PeakTime = t(OSIndex);text(PeakTime, (1 + OverShoot/100 + 0.05)*stepvalue, sprintf('超调量%.2f%%',OverShoot))
plot(t,y)
k
mp=max(y); %峰值时间
tp=spline(y, t, mp)
cs=length(t);%稳态值
yss=y(cs)%超调量
ct=(mp - yss)/yss % 超调量和峰值时间
最后可以在命令行窗口看到输出的K值、稳态值、超调量和峰值时间,并画出阶跃响应的图形
则先画根轨迹图:
den=[1 10 25 0]
num=[0 0 0 1]
rlocus(num,den)
用四阶龙格库塔法进行仿真,分别求超调量为5%,25%和50%时的K值
y=[0 0];
k=1;
while max(y)<=1.5 %%1.05(5%超调),1.25(25%超调),1.5(50%超调)
num1=[k];
den1=[1 10 25 0];
[num,den]=feedback(num1,den1,1,1);
[A,B,C,D]=tf2ss(num,den);
x0=[0;0;0];
v=1;
tf=15;
t0=0;
h=0.1;
r=1;
x=x0;
y=0;
t=t0;
for i=1:tf/h
K1=A*x+B*r;
K2=A*(x+h*K1/2)+B*r;
K3=A*(x+h*K2/2)+B*r;
K4=A*(x+h*K3)+B*r;
x=x+h*(K1+2*K2+2*K3+K4)/6;
y=[y;C*x];
t=[t;t(i)+h];
end
k=k+1;
end
%stepvalue=1 [OSValue, OSIndex] = max(y); OverShoot = (OSValue - stepvalue)/stepvalue*100;PeakTime = t(OSIndex);text(PeakTime, (1 + OverShoot/100 + 0.05)*stepvalue, sprintf('超调量%.2f%%',OverShoot))
plot(t,y)
k
mp=max(y); %峰值时间
tp=spline(y, t, mp)
cs=length(t);%稳态值
yss=y(cs)%超调量
ct=(mp - yss)/yss % 超调量和峰值时间
最后可以在命令行窗口看到输出的K值、稳态值、超调量和峰值时间,并画出阶跃响应的图形
相关文章推荐
- 基于多项滤波的数字正交变换MATLAB仿真程序
- 基于BP人工神经网络的数字字符识别及MATLAB实现
- [机器学习]基于OpenCV实现最简单的数字识别
- 基于STK的导弹飞行数据快速可视化仿真实现
- 数字图像处理,基于PM和Catte模型各向异性扩散的C++实现
- 基于jQuery实现动态数字展示效果
- Matlab 仿真实现TI Instaspin 的Foc 逆Clarke变换和SVPWM
- 基于matlab的梯度下降法实现线性回归
- JS基于正则实现数字千分位用逗号分割
- Matlab实现博弈论赌博仿真
- 数字图像去噪典型算法及matlab实现
- 转:用PWM实现正弦波的DDS(直接数字频率合成器)方法(基于查表法)
- C#实现基于加减按钮形式控制系统音量及静音的方法
- 基于空间相关的图像模板匹配及MATLAB实现
- C#中调用Matlab人工神经网络算法实现手写数字识别
- 基于IP网络的数字音视频监控系统设计与实现
- 基于纯方位粒子滤波目标跟踪及其matlab仿真
- [机器学习]基于OpenCV实现最简单的数字识别
- ASP.net MVC 基于角色的权限控制系统的实现
- IIR+全通滤波器级联实现系统零相位相移_matlab仿真