隐式龙格库塔matlab,龙格-库塔法与欧拉法的比较-Matlab仿真

该博客通过Matlab代码展示了龙格-库塔法和欧拉法在求解连续系统输出时的数值积分过程。通过对比两种方法的仿真结果,突显了龙格-库塔法在精度上的优势。内容包括状态空间模型的转换、输入输出的定义以及两种方法的迭代计算和结果绘图。
摘要由CSDN通过智能技术生成

完美运行的 龙格-库塔法与欧拉法的比较 Matlab仿真实例

%数值积分方法求解连续系统输出(龙格-库塔法与欧拉法的比较)

clear all; close all;

h=0.3; L=15/h; %h计算步长、L为仿真步数

z=[-1 -2]; p=[-4 -0.5+j -0.5-j]; k=2.5; %对象的零极点型

[A,B,C,D]=zp2ss(z,p,k); %转化为状态空间型

u=1*ones(L,1); u0=0; %输入及初值

n=length(p); %对象阶次

x0=zeros(n,1); xe0=zeros(n,1); %x0、xe0分别为龙格-库塔法、欧拉法的状态初值

for i=1:L

time(i)=i*h;

%欧拉法

xe=xe0+h*(A*xe0+B*u0);

ye(i)=C*xe;

%龙格-库塔法

k1=A*x0+B*u0;

k2=A*(x0+h*k1/2)+B*u0;

k3=A*(x0+h*k2/2)+B*u0;

k4=A*(x0+h*k3)+B*u(i);

x=x0+h*(k1+2*k2+2*k3+k4)/6;

y(i)=C*x;

%更新数据

u0=u(i);x0=x;xe0=xe;

end

plot(time,u,'k-.',time,ye,':',time,y,'r');

xlabel('t'); ylabel('y_r(t)、y(t)');

legend('y_r(t)','Euler:y(t)','Runge-Kutta:y(t)');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值