在实际工作中,有一些需要求积分的场合,突然想到可否使用龙格库塔的方式求积分,然后就查找了相关的资料并使用了一个简单的函数验证了一下。

基本原理:

在各种龙格-库塔法当中有一个方法十分常用,以至于经常被称为“RK4”或者就是“龙格-库塔法”。该方法主要是在已知方程导数和初值信息,利用计算机仿真时应用,省去求解微分方程的复杂过程。 [1]

令初值问题表述如下:

则,对于该问题的RK4由如下方程给出:

其中

这样,下一个值(yn+1)由现在的值(yn)加上时间间隔(h)和一个估算的斜率的乘积所决定。该斜率是以下斜率的加权平均:

  • k1是时间段开始时的斜率;
  • k2是时间段中点的斜率,通过欧拉法采用斜率k1来决定y在点tn+h/2的值;
  • k3也是中点的斜率,但是这次采用斜率k2决定y值;
  • k4是时间段终点的斜率,其y值用k3决定。

当四个斜率取平均时,中点的斜率有更大的权值:

RK4法是四阶方法,也就是说每步的误差是h阶,而总积累误差为h阶。

注意上述公式对于标量或者向量函数(y可以是向量)都适用。

若已知函数f:

可按照上述式子,根据本次函数值以及函数关系 f ,预测下次的函数值 y(n + 1),进而求得积分

若未知函数 f 求过往积分:

若未知函数 f 求过往值的积分时,在上述的龙格库塔原理中需要由表达式预测出下一步的各个斜率,因此实际,可以将公式中要计算的的 y(n + 1) 改为 y(n) 即:将要预测的下一步函数值修改为本次函数值; 将 y(n) 改为 y(n - 1) 即:使用上一步的函数值来得出预测的本次函数值,使用本次预测函数值来进行积分运算。

全部代码如下:

%*************************************************************************%%龙格库塔积分法
%**********************************************************************%clc;
clear;%定义一个数组存储时间
Ts = 0.001;    % 离散周期0.01秒
FinalT = 1;  %终止时间
t = Ts : Ts : FinalT;   % 1k
y = zeros(1,(FinalT / Ts));%计算 y = t^2 的图像
for i = 1 : 1 : (FinalT / Ts)y(i) = t(i) * t(i);
endsum = 0;  %声明一个变量存储积分
yRK = zeros(1,(FinalT / Ts));  %使用一个数组存储龙格库塔计算出来的图像数据
h = Ts;   %h代表时间间隔%按照四阶龙格库塔法求解
for i = 1 : 1 : (FinalT / Ts)   if i > 1k1 = ( (y(i) - y(i - 1)) / h);  %计算初始斜率k1k2 = ( y(i-1) + k1*h/2 - y(i-1) ) / (h/2);   %计算斜率为k1时对应的中点斜率k3 = ( y(i-1) + k2*h/2 - y(i-1) ) / (h/2);   %计算斜率为k2时对应的中点斜率k4 = ( y(i-1) + k3*h - y(i-1) ) / h;yRK(i) = yRK(i-1) + h*(k1 + 2*k2 + 2*k3 + k4)/6;sum = sum + yRK(i) * h;   %计算积分elsek1 = 0;k2 = 0;k3 = 0;k4 = 0;yRK(1) = y(1);
%        sum = 0;  %在初始时,积分为0end%    sum = y()
endsubplot(2,1,1),plot(t,y);   %函数图像
grid on;
title("y = t^2 图像");subplot(2,1,2),plot(t,yRK);   %函数图像
grid on;
title("龙格库塔 图像");

积分结果与图像如下:

【Matlab】使用龙格库塔方法求积分相关推荐

  1. matlab:使用4阶龙格库塔方法求微分方程组的值

    参考书目:<数值分析(matlab版)>  作者:周璐 翻译 %调用龙格库塔方法求解微分方程组,P399,9.7 微分方程组 function [t,z] = my_rk4b(f, t0, ...

  2. 用四阶龙格-库塔方法求微分方程组

    最近一段时间再忙期末考试,小学期课程设计的东西,没怎么更新博客.... 更新一个用四阶龙格库塔方法求解脉冲微分方程,题目来源是一篇论文<Impulsive control of projecti ...

  3. matlab 数值计算课 二阶微分方程-龙格库塔方法 ODE45

    详见mathworks 龙格库塔方法 写成矩阵(状态方程)的形式更简洁一点(其实这两种方法结果是一样的,如果C是[1,0,0]的话,就很明显了) 例如:求系统在0-5s内的单位阶跃相应,已知传递函数: ...

  4. matlab:使用4阶龙格库塔方法求解常微分方程组

    %书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法,例10.14使用 %四阶龙格库塔方法 function [t,z] = rk4symeq(fun, t0, tf, ...

  5. matlab:使用四阶龙格库塔方法求解微分方程组

    %书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法,例10.14使用 %四阶龙格库塔方法 function [t,z] = rk4symeq(fun, t0, tf, ...

  6. 计算方法实验(三):四阶龙格-库塔方法

    四阶Runge-Kutta数学原理 给定常微分方程初值问题 {dydx=f(x,y),a≤x≤by(a)=αh=b−aN\left\{ \begin{matrix} \frac{\text{dy}}{ ...

  7. 【Hydro】龙格-库塔方法的公式推导

    一.龙格-库塔方法的公式推导 摘自<数值计算方法(MATLAB版)> 二.龙格-库塔方法在水库调洪演算的应用 一般库水面坡降很小,忽略动库容影响,近似看成静水面,水库蓄水量V只随坝前水位Z ...

  8. 二阶水箱 matlab 四阶龙格库塔,请问这个二阶常微分方程组用龙格四阶库塔法怎么编写...

    要是不用MATLAB自带的ode45函数  也可以网上下载一个4阶龙格库塔算法来代替 附上一个仅供参考 function y=DELGKT4_rungekuta(f,h,a,b,y0,varvec)  ...

  9. 如何用龙格库塔 方法求解 范德波振子的运动

    如何用龙格库塔 方法求解 范德波振子的运动 坑,没有想好. 这是一个非常好的线索: Generalized Forced Van Der Pol Oscillator Phase Plot - fun ...

  10. matlab蒙特卡洛方法求积分,matlab-蒙特卡洛法估计积分值

    <matlab-蒙特卡洛法估计积分值>由会员分享,可在线阅读,更多相关<matlab-蒙特卡洛法估计积分值(6页珍藏版)>请在人人文库网上搜索. 1.西安交通大学实验报告课程: ...

最新文章

  1. Laravel之Eloquent ORM访问器调整器及属性转换
  2. oracle 体系结构及内存管理 13_事务
  3. 关系数据库SQL之可编程性存储过程
  4. 莉莉丝最新大作《末日余晖》首曝CG,揭秘美术制作幕后
  5. 《精通J2EE网络编程》中讲的JNDI 6.2 使用JNDI
  6. ArcGIS 9在WIN XP 和 WIN 2003 系统下安装部分动态库不能注册
  7. 微服务架构的分布式事务解决方案
  8. 复盘模型_如何运用MT4软件进行复盘,提高水平
  9. UWB定位/RSSI定位 三边测量法trilateration C语言代码详解
  10. 掘地求生是什么游戏 把主播都逼疯的玩个锤子是什么游戏-李廷学
  11. Oracle Clob大于4000字节报错,那是你不懂Clob,XML类型的Clob在过程中就是取不到,我帮你
  12. 姜烧猪肉+日式厚蛋烧+蚝油青笋
  13. CPSE安博会圆满落幕,闪马智能精彩时刻全回顾
  14. 运动电荷的电磁场(一)
  15. Lua源码分析 - 虚拟机篇 - 语义解析之Opcode生成(17)
  16. 正负用c语言表示,用C表示负数?
  17. centos 自动化安装redis
  18. 云服务器上传文件软件,云服务器上传文件软件
  19. 腾讯阿里打通生态,针锋相对的时代或将结束?
  20. 20210127 中文论文参考文献自动编号

热门文章

  1. mysql主从配置文件
  2. 深信服虚拟服务器设置ip,深信服服务器虚拟化asv操作步骤.pdf
  3. java pdf 水印 加密_Java生成PDF 加密 水印
  4. cadence SPB17.4 - export placement file to openpnp
  5. visionman-visionpro培训大纲
  6. 验证码Kaptcha的使用
  7. Unity 与 UE4 双引擎版本四叉树的创建与可视化
  8. 基于Java毕业设计智能旅游电子票务系统演示录像2020源码+系统+mysql+lw文档+部署软件
  9. 在函数前面加上WINAPI、CALLBACK
  10. 华为性格测试 我就这麽水过的 好水