【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真
1.软件版本
MATLAB2013b
2.算法理论
龙格-库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。龙格库塔法的家族中的一个成员如此常用,以至于经常被称为“RK4”或者就是“龙格库塔法”。令初值问题表述如下。
这样,下一个值(yn+1)由现在的值(yn)加上时间间隔(h)和一个估算的斜率的乘积决定。该斜率是以下斜率的加权平均:
k1是时间段开始时的斜率;
k2是时间段中点的斜率,通过欧拉法采用斜率k1来决定y在点tn + h/2的值;
k3也是中点的斜率,但是这次采用斜率k2决定y值;
k4是时间段终点的斜率,其y值用k3决定。
3.部分matlab程序
clc;
clear;
close all;
warning off;%The parameterg = 9.81;
L = 0.1;
m = 0.5;
es = 2;
%the range of t
t0 = 0;
tf = 10;
x0 = 0.25;
x0dot = 0;
Step = 1000;
%The method of RK4
Y1 = func_4RGKT(t0,tf,x0,x0dot,Step);figure(1);
subplot(121);
plot([t0:(tf-t0)/Step:tf],Y1,'b');
xlabel('t');
ylabel('x');
axis square;
grid on;
title('the method of RK4');%The method of Euler
Y2 = func_Euler(t0,tf,x0,x0dot,Step);
figure(1);
subplot(122);
plot([t0:(tf-t0)/Step:tf],Y2,'r');
xlabel('t');
ylabel('x');
axis square;
grid on;
title('the method of Euler');
function Y1 = func_4RGKT(t0,tf,x0,x0dot,STEPS); %t0, tf, upper and lower, respectively,
%x0 the initial value of y,
%STEPS steps timesh = (tf - t0)/STEPS;
T = zeros(1,STEPS+1);
Y = zeros(1,STEPS+1);
T(1) = t0;
Y(1) = x0;
Y0dot(1) = x0dot;for j=1:STEPS tj = T(j);yj = Y(j);yjd = Y0dot(j);k1 = h*func_function(tj ,[yj,yjd]);k2 = h*func_function(tj+h/2 ,[yj+h*k1(1)/2,yjd+h*k1(2)/2]); k3 = h*func_function(tj+h/2 ,[yj+h*k2(1)/2,yjd+h*k2(2)/2]); k4 = h*func_function(tj+h ,[yj+h*k3(1) ,yjd+h*k3(2)]); Y(j+1) = yj + (k1(1) + 2*k2(1) + 2*k3(1) + k4(1))/6;Y0dot(j+1) = yjd + (k1(2) + 2*k2(2) + 2*k3(2) + k4(2))/6;T(j+1) = t0 + h*j;
endY1=Y';
4.仿真结论
从图的仿真结果可知,当算法迭代1000次的时候,算法经过几个周期抖动之后收敛,但是其收敛时间较短。 因此,从整体而言,采用RK4算法,比Euler算法收敛更快,且较快的达到一定精度之内A28-20。
【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真相关推荐
- 蹦极模型matlab仿真,科学网—蹦极的数学建模及其龙格-库塔法求解方法 - 赵也非的博文...
论文: 蹦极的数学建模及其龙格-库塔法求解方法 在"华东师范大学首届研究生数学建模竞赛"中,获得二等奖. 发表日期: 2007年5月 摘要: 本文通过参照题中给出的数据,对蹦极者在 ...
- 【机器人1】基于POE公式的UR5机械臂正运动学建模求解与matlab仿真
基于PoE公式的UR5机械臂正运动学建模求解与matlab仿真 基于PoE公式的UR5机械臂正运动学分析 1.1 运动旋量的螺旋释义(理论基础) 1.2 基于PoE公式的UR5机械臂正运动学模型 1. ...
- 欧拉法、改进的欧拉法、龙格-库塔法求解初值问题
求解初值问题 简介 前期准备 欧拉法 改进的欧拉法 龙格-库塔法 标准四阶显式Kutta公式 三级三阶显式公式 四级四阶显式Kutta公式 四级四阶显式Gill公式 示例 MATLAB代码 结果 简介 ...
- 四阶龙格-库塔法求解常微分方程的初值问题
算法原理和程序框图 龙格-库塔法是一种求其准确解y(x)在一系列点xi处y(xi)的近似值yi的方法,yi称为数值解.经典的四阶龙格库塔法方程如下: y'=f(t,y),y(t0)=y0输出按如下求解 ...
- 四阶龙格库塔(Runge-Kutta)求解微分方程-多种编程语言
前期是分享了matlab下面实现四阶龙格库塔(Runge-Kutta)求解微分方程,这期分享一下C++.C.Java.Python下面的四阶龙格库塔(Runge-Kutta)求解微分方程. 前文传送门 ...
- 龙格库塔(runge-kutta,RK)法求解微分方程
求解微分方程的意思就是,已知导函数,求原函数. 先声明一点,欧拉法.中值法.龙哥库塔法求解微分方程,得出的结果不是表达式,而是一系列离散点. 一.欧拉法递推 问题描述:已知y'=f(x,y),求y(x ...
- 龙格库塔法和欧拉法求解微分方程的比较
文章目录 计算机如何理解连续系统的动态特性? 欧拉法求解微分方程 龙格库塔法求解微分方程 MATLAB代码编写和仿真效果 计算机如何理解连续系统的动态特性? 一般连续系统的动态特性可以由一个微分方程, ...
- 四阶龙格库塔法的基本思想_数值常微分方程-欧拉法与龙格-库塔法
大三时候在跳蚤市场闲逛,从一位数学院的学长那里买了一些闲书,最近翻出来刚好有李荣华.刘播老师的<微分方程数值解法>和王仁宏老师的<数值逼近>,结合周善贵老师的<计算物理& ...
- python解常微分方程龙格库_数值常微分方程-欧拉法与龙格-库塔法
大三时候在跳蚤市场闲逛,从一位数学院的学长那里买了一些闲书,最近翻出来刚好有李荣华.刘播老师的<微分方程数值解法>和王仁宏老师的<数值逼近>,结合周善贵老师的<计算物理& ...
最新文章
- 女士做软件测试的利弊有哪些?
- Java Jtree渲染叶子实现可以添加swing组件
- android文件存储token,ANDROID 学习笔记(二) 用户登陆问题 TOKEN SESSION 缓存
- Java黑皮书课后题第10章:*10.10(Queue类)10.6节给出一个Stock类。设计一个名为Queue的类用于存储整数。像栈一样,队列保存元素。在栈中,元素后进先出。队列中元素先进先出
- HTTP/2 流量调试
- 电脑按f8无法进入安全模式_自已有电脑的人,都会遇到系统死机问题,教大家实用一招自已解决...
- linux git编译安装目录,Linux(centos) 环境下如何源码编译安装git
- 如何基于数据快速构建用户模型(Persona)?
- 宁波计算机程序32届初赛,25届宁波市中小学计算机程序设计竞赛初赛试题
- 诺基亚N9——刷机教程——为双系统做铺垫
- Unity3D--用2D图片实现3D轮转图
- java数据过载,处理服务器过载的三大解决方法
- CryEngine3 调试Shader方法
- 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(三)
- 为什么我的微信小程序开发工具调试窗口一片空白?
- 微信答题小程序开发遇到过的坑
- 溢出的原理及 shellcode 编写
- Redis 缓存穿透、击穿、雪崩现象及解决方案
- 【原创】C#玩高频数字彩快3的一点体会
- 希捷服务器硬盘15k有几代,硬盘巨头推最后一代15k机械硬盘:再见,机械硬盘