自动控制原理实验四-控制系统数字仿真 四阶龙格库塔法
四阶龙格库塔实验报告

三、四阶Runge-Kutta 法求解常微分方程一、龙格库塔法的思想根据第九章的知识可知道,Euler 方法的局部截断误差是2()O h ,而当用Euler 方法估计出1,()(1)n n n n y y hf x y +=+ 再用梯形公式111[(,)(,)](2)2n n n n n n h y y f x y f x y +++=++进行校正,即采用改进Euler 方法得出数值解的截断误差为3()O h 。
由Lagrange 微分中值定理'11()()()()()(,())(3)n n n n n y x y x y x x y x hf y ξξξ++=+-=+ 记*(,())k hf y ξξ=,得到*1()()(4)n n y x y x k +=+这样只要给出一种计算*k 的算法,就能得到相应的计算公式。
用这种观点的来分析Euler 方法和改进Euler 方法,Euler 方法的迭代公式可改写为111(,)n n n n y y k k hf x y +=+=改进Euler 方法的预报-校正公式可改写为 1121211()2(,),(,)n n n n n n y y k k k hf x y k hf x h y k +=++==++ Euler 方法实际上是用一个点处的值1k 近似*k ,而改进Euler 方法是用两个点处的值1k ,和2k ,做算术平均值近似*k 自然改进Euler 方法要优于Euler 方法。
因此,可以想到假如在1[,]n n x x +内多预报几个点值i k ,并用他们的加权平均值作为*k 的近似值,则有可能构造出具有更高精度的计算公式,这就是Runge-Kutta 法的基本思想。
二、四阶龙格库塔法由Runge-Kutta 的基本思想,构造四阶Runge-Kutta 法是利用1234,,k k k k 和的加权平均值来近似*k ,因此令1112233441211132211243312213(,)(,)(5)(,)(,)n n n n n n n n n n y y w K w K w K w K K hf x y K hf x h y K K hf x h y K K K hf x h y K K K αβαβγαβγη+=++++⎧⎪=⎪⎪=++⎨⎪=+++⎪⎪=++++⎩使得511()()n n y x y O h ++-=即其总体截断误差为4()O h 。
四阶龙格-库塔法求解常微分方程的初值问题-matlab通用程序

参考教材《数值分析》李乃成.梅立泉clearclcformat longm=input('请输入常微分方程的阶数m=');a=input('请输入x下限a=');b=input('请输入x上限b=');h=input('请输入步长h=');ym=input('令y(1,1)=y,y(2,1)=y’,y(3,1)=y’’...请输入ym=','s'); %输入的时候必须按照这个形式输入y1=y(1,1);if m==1 %一阶初值问题单独求解mm=(b-a)/h;y(1,1)=input('请输入在初值点的函数值f(a)=');x=a;y11(1)=y(1,1);for k1=2:(mm+1)y1=y(1,1);K(1,1)=h*(eval(ym)); %计算K1x=x+h/2;y(1,1)=y1+K(1,1)/2;y1=y(1,1);K(1,2)=h*(eval(ym)); %计算K2x=x;y(1,1)=y1+K(1,2)/2-K(1,1)/2;y1=y(1,1);K(1,3)=h*(eval(ym)); %计算K3x=x+h/2;y(1,1)=y1+K(1,3)-K(1,2)/2;y1=y(1,1);K(1,4)=h*(eval(ym)); %计算K4y11(k1)=y11(k1-1)+(K(1,1)+2*K(1,2)+2*K(1,3)+K(1,4))/6; y(1,1)=y11(k1);x=a+(k1-1)*h;endy11else %高阶初值问题mm=(b-a)/h; %一共要求解mm个数据点for k2=1:m %读取初值条件fprintf('请输入%d阶导数的初值f(%d)(a)=\n',(k2-1),(k2-1));y(k2,1)=input('=');endfor k2=1:my22(1,k2)=y(k2,1); %先把初值保存在矩阵y22(m,n)中,m表示第几个所求点,n表示第n阶初值endx=a;for k4=2:(mm+1) %求解mm个数据点的循环for k=1:(m-1) %计算K1,包括每一阶的K1 K(k,1)=h*y(k+1,1); %y(k+1,1)中k+1表示第k+1阶,1表示第一个点;K(k,1)中k表示阶数,1表示K1endK(m,1)=h*(eval(ym));x=x+h/2; %求解K1之前,先重新对x和y赋值for k3=1:my(k3,1)=y(k3,1)+K(k3,1)/2;endfor k=1:(m-1) %计算K2K(k,2)=h*y(k+1,1);endK(m,2)=h*(eval(ym));x=x;for k3=1:my(k3,1)=y(k3,1)-K(k3,1)/2+K(k3,2)/2;endfor k=1:(m-1) %计算K3K(k,3)=h*y(k+1,1);endK(m,3)=h*(eval(ym));x=x+h/2;for k3=1:my(k3,1)=y(k3,1)+K(k3,3)-K(k3,2)/2; %这里容易出错endfor k=1:(m-1) %计算K4K(k,4)=h*y(k+1,1);endK(m,4)=h*(eval(ym));for k5=1:my22(k4,k5)=y22(k4-1,k5)+(K(k5,1)+2*K(k5,2)+2*K(k5,3)+K(k5,4))/6; %这里,除了要求出下一个点的数值,还要求出相应的导数值endfor k6=1:m %除了对y(1,1)重新赋值外,还要对y(2,1)等重新赋值y(k6,1)=y22(k4,k6);endx=a+(k4-1)*h;endy22(:,1) end。
杨源实验四 连续系统的数字仿真

实验四连续系统的数字仿真
一、实验目的
1、掌握四阶龙格-库塔法系统仿真的方法;
2、掌握面向结构图仿真的方法与步骤;
3、熟悉仿真程序的编写方法;
二、实验内容
1、SISO系统的传递框图如图所示,试编写程序用四阶龙格-库塔法对系统进行仿真,求系统输出y的动态响应
解:
输入命令:simulink
在新打开的窗口中选择File- ->New- ->Model
在untitled窗口中绘制图形如下:
杨源
单击仿真按钮Start simulation,然后双击示波器(Scope)显示如下结果
2、某一系统由四个典型环节组成,如图所示,求输出量y的动态响应。
解:
输入命令:simulink
在新打开的窗口中选择File- ->New- ->Model
在untitled窗口中绘制图形如下:
单击仿真按钮Start simulation,然后双击示波器(Scope)显示如下结果:。
matlab经典的4级4阶runge kutta法 -回复

matlab经典的4级4阶runge kutta法-回复使用MATLAB 实现经典的4 阶4 级Runge-Kutta 法引言:数值计算是现代科学和工程中的一个重要领域,它涉及到通过计算机模拟来解决数学问题。
在数值计算中,求解微分方程是一个常见的任务。
Runge-Kutta 法是求解微分方程的一种常见方法,它可以用于数值求解常微分方程和偏微分方程。
本文将介绍经典的4 级4 阶Runge-Kutta 法的原理,并使用MATLAB 来实现该方法。
一、原理介绍:Runge-Kutta 法是数值计算领域中最常用的方法之一。
它通过将微分方程的解逐步逼近来求解微分方程。
经典的4 级4 阶Runge-Kutta 法基于以下公式:\begin{align*}k_1 &= h f(t_n, y_n) \\k_2 &= h f(t_n + \frac{h}{2}, y_n + \frac{k_1}{2}) \\k_3 &= h f(t_n + \frac{h}{2}, y_n + \frac{k_2}{2}) \\k_4 &= h f(t_n + h, y_n + k_3) \\y_{n+1} &= y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)\end{align*}其中,h 是步长,t_n 是当前时间点,y_n 是当前的解,f(t, y) 是微分方程的右手函数。
二、算法实现:现在我们将使用MATLAB 实现经典的4 级4 阶Runge-Kutta 法,并解决一个简单的一阶常微分方程。
首先,我们定义一个MATLAB 函数,用于实现4 级4 阶Runge-Kutta 法。
函数接受输入参数为微分方程的右手函数f(t, y),初始时间t_0,初始解y_0,以及步长h。
函数输出为一个数组,包含了每个时间点的解。
以下是MATLAB 代码实现:matlabfunction y = runge_kutta(f, t0, y0, h, num_steps)初始化解数组y = zeros(num_steps+1, 1);y(1) = y0;循环计算每个时间点的解for i = 1:num_stepst = t0 + (i-1)*h;计算k1, k2, k3, 和k4k1 = h * f(t, y(i));k2 = h * f(t + h/2, y(i) + k1/2);k3 = h * f(t + h/2, y(i) + k2/2);k4 = h * f(t + h, y(i) + k3);计算下一个时间点的解y(i+1) = y(i) + (k1 + 2*k2 + 2*k3 + k4)/6;endend接下来,我们使用这个函数来解决一个简单的一阶常微分方程。
龙格-库塔法

四阶龙格-库塔法求解常微分方程的初值问题1.算法原理对于一阶常微分方程组的初值问题⎪⎪⎪⎩⎪⎪⎪⎨⎧=⋯⋯==⋯⋯=⋯⋯⋯⋯=⋯⋯=0020********'212'2211'1)(,,)(,)())(,),(),(,()())(,),(),(,()())(,),(),(,()(n n n n n n n y x y y x y y x y x y x y x y x f x y x y x y x y x f x y x y x y x y x f x y , 其中b x a ≤≤。
若记Tn Tn Tn y x f y x f y x f y x f y y y y x y x y x y y x y )),(,),,(),,((),(),,,())(),(),(()(2102010021⋯⋯=⋯⋯=⋯⋯=,,则可将微分方程组写成向量形式⎩⎨⎧=≤≤=0')()),(,()(y a y b x a x y x f x y微分方程组初值问题在形式上和单个微分方程处置问题完全相同,只是数量函数在此变成了向量函数。
因此建立的单个一阶微分方程初值问题的数值解法,可以完全平移到求解一阶微分方程组的初值问题中,只不过是将单个方程中的函数转向向量函数即可。
标准4阶R-K 法的向量形式如下:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧++=++=++==++++=+),()21,2()21,2(),()22(61342312143211K y h x hf K K y h x hf K K y h x hf K y x hf K K K K K y y n n n n n n n n n n 其分量形式为n j K y K y K y h x hf K K y K y K y h x hf K K y K y K y h x hf K y y y x hf K K K K K y y n ni i i i j j n nii i i j j n nii i i j j ni i i i j j j j j j i j i j ,,2,1).,,,;(),2,2,2;2(),2,2,2;2(),,,,;(),22(6132321314222212131212111221143211,1,⋯⋯=⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧+⋯⋯+++=+⋯⋯+++=+⋯⋯+++=⋯⋯=++++=++,,2.程序框图3.源代码%该函数为四阶龙格-库塔法function [x,y]=method(df,xspan,y0,h)%df为常微分方程,xspan为取值区间,y0为初值向量,h为步长x=xspan(1):h:xspan(2);m=length(y0);n=length(x);y=zeros(m,n);y(:,1)=y0(:);for i=1:n-1k1=feval(df,x(i),y(:,i));k2=feval(df,x(i)+h/2,y(:,i)+h*k1/2);k3=feval(df,x(i)+h/2,y(:,i)+h*k2/2);k4=feval(df,x(i)+h,y(:,i)+h*k3);y(:,i+1)=y(:,i)+h*(k1+2*k2+2*k3+k4)/6;end%习题9.2clear;xspan=[0,1];%取值区间h=0.05;%步长y0=[-1,3,2];%初值df=@(x,y)[y(2);y(3);y(3)+y(2)-y(1)+2*x-3];[xt,y]=method(df,xspan,y0,h)syms t;yp=t*exp(t)+2*t-1;%微分方程的解析解yp1=xt.*exp(xt)+2*xt-1%计算区间内取值点上的精确解[xt',y(1,:)',yp1']%y(1,:)为数值解,yp1为精确解ezplot(yp,[0,1]);%画出解析解的图像hold on;plot(xt,y(1,:),'r');%画出数值解的图像4.计算结果。
控制系统数字仿真

对汽车的悬挂、转向、制动等系统进行数字仿真,验证底 盘控制算法的正确性和可行性,提高汽车的操控稳定性和 行驶安全性。
自动驾驶控制
通过数字仿真技术,模拟自动驾驶系统的行为和性能,评 估自动驾驶控制算法的优劣和适用性,推动自动驾驶技术 的发展和应用。
04
控制系统数字仿真挑战与解决方 案
实时性挑战与解决方案
电机控制
对电机的启动、调速、制动等过程进行数字仿真,验证电机控制算 法的正确性和可行性,提高电机的稳定性和可靠性。
智能控制
通过数字仿真技术,模拟智能控制系统的行为和性能,评估智能控 制算法的优劣和适用性。
机器人控制
1 2 3
运动控制
对机器人的关节和末端执行器进行数字仿真,模 拟机器人的运动轨迹和姿态,验证运动控制算法 的正确性和可行性。
实时性挑战
在控制系统数字仿真中,实时性是一个关键的挑战。由于仿真过程中需要不断进行计算和控制,如果仿真时间过 长,会导致控制延迟,影响系统的实时响应。
解决方案
为了解决实时性挑战,可以采用高效的算法和计算方法,如并行计算、分布式计算等,以提高仿真速度。同时, 可以通过优化仿真模型和减少不必要的计算来降低仿真时间。
特点
数字仿真具有高效、灵活、可重复性 等优点,可以模拟各种实际工况和参 数条件,为控制系统设计、优化和故 障诊断提供有力支持。
数字仿真的重要性
验证设计
通过数字仿真可以对控制系统设计进行验证, 确保系统性能符合预期要求。
优化设计
数字仿真可以帮助发现系统设计中的潜在问 题,优化系统参数和性能。
故障诊断
THANபைடு நூலகம்S
感谢观看
发展趋势
目前,数字仿真正朝着实时仿真、 高精度建模、智能化分析等方向 发展,为控制系统的研究和应用 提供更强大的支持。
控制系统数字仿真 四阶龙格库塔法

控制系统数字仿真1.实验目的1.掌握利用四阶龙格-库塔(Runge-Kutta)法进行控制系统数字仿真的方法。
2.学习分析高阶系统动态性能的方法。
3.学习系统参数改变对系统性能的影响。
二、实验内容已知系统结构如下图若输入为单位阶跃函数,计算当超调量分别为5%,25%,和50%时K的取值(用主导极点方法估算),并根据确定的K值在计算机上进行数字仿真。
三、实验过程1.计算K值二阶系统单位阶跃响应的超调量%100%=⨯1.当σ%=5%时解得 ζ=0.690设主导极点=ζa + a=0.69a+j0.72a代入D (s )= 321025s s s K +++=0中, 32(0.690.72)10(0.690.72)25(0.690.72)0a j a a j a a j a K ++++++=解得K=31.3,a=-2.10即1,21.45 1.52s j =-±2. 当σ%=25%时解得 ζ=0.403设主导极点=ζa + a=0.403a+j0.915a代入D (s )= 321025s s s K +++=0中, 32(0.4030.915)10(0.4030.915)25(0.4030.915)0a j a a j a a j a K ++++++=解得K=59.5,a=-2.75即1,21.112.53s j =-±3. 当σ%=50%时解得 ζ=0.215设主导极点=ζa + a=0.215a+j0.977a代入D (s )= 321025s s s K +++=0中, 32(0.2150.977)10(0.2150.977)25(0.2150.977)0a j a a j a a j a K ++++++=解得K=103,a=-3.48即1,20.75 3.4s j =-±1. 计算调节时间和超调量 将不同K 值带入到程序中,利用四阶龙格-库塔法得到如下结果:1.K=31.3时, Ts=0.7550S, σ%=4.70% 2.K=59.5时, Ts=1.4100S ,σ%=23.28% 3.K=103时, Ts=1.9700S, σ%=45.49% 1. 用MATLAB 绘制2()(5)K G S S S =+的根轨迹图如下2. 绘制降阶系统跃响应曲线对原系统进行降阶处理,所得闭环传递函数为2()()1025C S K R S S S K=++, 利用四阶龙格-库塔法绘制阶跃响应曲线如下: -25-20-15-10-50510-15-10-551015Root LocusReal Axis I m a g i n a r y A x i s2.K=59.51.验证精确K值通过程序验证得到的精确K值分别为:K=31.76(σ%=5%);K=62.48(σ%=25%); K=113.82(σ%=50%)四、实验结论1.将系统传递函数化成时域形式,可以得到一组微分方程,利用四阶龙格-库塔法,就可以计算得到系统的响应。
4阶Runge-Kutta法求解一阶常微分方程

4阶Runge-Kutta法求解一阶常微分方程以下是为大家整理的4阶Runge-Kutta法求解一阶常微分方程的相关范文,本文关键词为Runge-Kutta,求解,一阶,微分方程,mATLAb语,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
《mATLAb语言及应用》大作业姓学学班名号院级::::题目编号:20XX年10月134阶Runge-Kutta法求解一阶常微分方程。
一、Runge-Kutta法的数学理论龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。
由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。
该算法是构建在数学支持的基础之上的。
龙格库塔方法的理论基础来源于泰勒公式和使用斜率近似表达微分,它在积分区间多预计算出几个点的斜率,然后进行加权平均,用做下一点的依据,从而构造出了精度更高的数值积分计算方法。
如果预先求两个点的斜率就是二阶龙格库塔法,如果预先取四个点就是四阶龙格库塔法。
一阶常微分方程可以写作:y'=f(x,y),使用差分概念。
(Yn+1-Yn)/h=f(xn,Yn)推出(近似等于,极限为Yn')Yn+1=Yn+h*f(xn,Yn)另外根据微分中值定理,存在0这里K=f(xn+th,Y(xn+th))称为平均斜率,龙格库塔方法就是求得K的一种算法。
利用这样的原理,经过复杂的数学推导(过于繁琐省略),可以得出截断误差为o(h^5)的四阶龙格库塔公式:K1=f(xn,Yn);K2=f(xn+h/2,Yn+(h/2)*K1);K3=f(xn+h/2,Yn+(h/2)*K2);K4=f(xn+h,Yn+h*K3);Yn+1=Yn+h*(K1+2K2+2K3+K4)*(1/6)二、Runge-Kutta的算法和流程图在龙格-库塔法中,四阶龙格-库塔法的局部截断误差约为0(h5),被广泛应用于解微分方程的初值问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.当σ%=50%时
解得 ζ=0.215
设主导极点
=ζa+ a=0.215a+j0.977a
代入D(s)= =0中,
解得K=103,a=-3.48
即
2)
将不同K值带入到程序中,利用四阶龙格-库塔法得到如下结果:
6.K=31.3时,Ts=0.7550S, σ%=4.70%
7.K=59.5时,Ts=1.4100S,σ%=23.28%
五、
A=[0 1 0;0 0 1;-k -25 -10];
b=[0 0 1]';
c=[k 0 0];
X=zeros(3,1);
t=0:0.01:10;
n=length(t);
h=0.01;
fori=1:n
K1=A*X+b;
K2=A*(X+(h/2)*K1)+b;
K3=A*(X+(h/2)*K2)+b;
三、实验
1)
二阶系统单位阶跃响应的
设主导极点
=ζa+ a=0.69a+j0.72a
代入D(s)= =0中,
解得K=31.3,a=-2.10
即
4.当σ%=25%时
解得 ζ=0.403
设主导极点
=ζa+ a=0.403a+j0.915a
代入D(s)= =0中,
解得K=59.5,a=-2.75
控制系统数字仿真
一、
1.掌握利用四阶龙格-库塔(Runge-Kutta)法进行控制系统数字仿真的方法。
学习分析高阶系统动态性能的方法。
2.学习系统参数改变对系统性能的影响。
二、实验内容
已知系统结构如下图
若输入为单位阶跃函数,计算当超调量分别为5%,25%,50%时K的取值(用主导极点方法估算并根据确定的K值在计算机上进行数字仿真。
分组:
成绩:_____
北 京 航 空 航 天 大 学
自动控制原理实验报告
实验四四阶龙格-库塔法的控制系统数字仿真
2014年12月
目录
控制系统数字仿真1
一、实验目的1
二、实验内容1
三、实验过程2
1)计算K值2
2)计算调节时间和超调量3
3)绘制降阶系统跃响应曲线3
4)验证精确K值5
四、实验结论5
五、程序运行界面截屏及程序清单6
K4=A*(X+h*K3)+b;
X=X+(h/6)*(K1+2*K2+2*K3+K4);
y(i)=c*X;
end
plot(y);
s=1001;whiley(s)>0.95&y(s)<1.05;s=s-1;end;
t=(s-1)*0.005;max(y)-1
31.76
5%
2
59.5
62.48
25
3
103
113.82
50
四、实验结论
1.将系统传递函数化成时域形式,可以得到一组微分方程,利用四阶龙格-库塔法,就可以计算得到系统的响应,但这是一种近似解。
2.利用主导极点法,可以将高阶系统进行降阶,用二阶系统近似来分析。
3.开环系统的参数对闭环系统动态性能造成影响:当开环比例系数适当,系统动态性能较好的情况下,用主导极点的方法,不至于造成较大的误差;当开环比例系数较大,系统动态性能较差时,采取同样的方法,产生了较大的误差。
8.K=103时,Ts=1.9700S,σ%=45.49%
用MATLAB绘制 的根轨迹图如下
3)
对原系统进行降阶处理,所得闭环传递函数为 ,利用四阶龙格-库塔法绘制阶跃响应曲线如下:
1)K=31.3
2)K=59.5
3)K=103
4)
通过程序验证得到的精确K值分别为:
n
K(初估)
K(精确)
σ%
1
31.3