龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。

1 中点法

2传统二阶龙格库塔法:

3 传统三阶龙格库塔法

4 传统四阶龙格库塔法

5四阶龙格库塔法举例

我们使用经典四阶龙格库塔法:

6 C++

这里主要使用的是经典四阶龙格库塔法,重写如下:

方程的导数和初值:

方程的迭代计算公式:

其中,



根据其原理以及例子:

C++代码如下:

#include <iostream>
#include <fstream>
#define Count 100 //Number of calculations
//#define ITEM 0.001 //Calculation accuracy
class Longkuta
{public :std::fstream fileopen;  Longkuta(double initx,double inity ,double inith ); // Initial calculation point step size//~Longkuta();void progess( );bool write();double fun(double x0,double y0);   //Define function heredouble  x0 , y0, h  ;
};Longkuta::Longkuta(double initx,double inity ,double inith )
{x0=initx;y0=inity;h=inith;
}bool Longkuta::write( )
{fileopen.open("data.txt",std::ios::app);if (fileopen.is_open()){return true;}else{std::cout<<"File open failed\n";return false;}
}
void Longkuta::progess( )
{int i = 1;double K1,K2,K3,K4,y1,x1;while ( i<Count){x1 = x0+h;K1=fun(x0,y0);K2=fun(x0+h/2,y0+K1*h/2);K3=fun(x0+h/2,y0+K2*h/2);K4=fun(x1,y0+h*K3);y1=y0+h*(K1+2*K2+2*K3+K4)/6.0;fileopen<<"Calculations"<<i<<"  " <<"x= "<<x1<<" y = "<<y1<<"\n";x0=x1;y0=y1;i++;//if ((y0-y1)>ITEM)//   break;}fileopen.close();std::cout<<"The calculation result is"<<y0;
}double Longkuta::fun(double x0 ,double y0)  //Function expression
{double dy;dy = y0-(2*x0)/y0;return dy;
}int main()
{Longkuta longkuta(0,1,0.05);if (longkuta.write()){longkuta.progess();}elsestd::cout<<"Failed to write data"<<std::endl;return 0;
}

7 参考文献

参考文献1

龙格-库塔(Runge-Kutta)方法C++实现相关推荐

  1. 洛伦兹方程c语言,龙格库塔在C为洛伦兹方程

    我想计算洛伦茨系统使用龙格库塔方法,但我找不到我的代码有错误的地方.当我运行它时,系统进入静态点,我应该获得一个蝴蝶(洛伦兹吸引子).我认为这是Runge Kutta方法部分的'for'循环中的一些东 ...

  2. 常见的数值积分方法_欧拉积分/中值积分/龙格-库塔积分

    参考:常见的数值积分方法 (欧拉.中值.龙格-库塔,[常用于IMU中]) 1. 积分基本概念 设F(x)为函数f(x)的一个原函数,我们把函数f(x)的所有原函数F(x)+C(C为任意常数)叫做函数f ...

  3. C#,数值计算,解微分方程的龙格-库塔二阶方法与源代码

    微分方程 含有导数或微分的方程称为微分方程,未知函数为一元函数的微分方程称为常微分方程. 微分方程的阶数 微分方程中导数或微分的最高阶数称为微分方程的阶数. 微分方程的解 使得微分方程成立的函数称为微 ...

  4. 龙格-库塔(Runge-Kutta)方法数学原理及实现

    参考:https://blog.csdn.net/u013007900/article/details/45922331 龙格-库塔(Runge-Kutta)方法 龙格-库塔(Runge-Kutta) ...

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

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

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

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

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

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

  8. 二阶龙格库塔公式推导_连续系统数值仿真方法——龙格库塔法

    在决策理论与方法最后一课中,老师讲了连续系统建模与仿真,事实上在本科就已经接触过许多,在这里我把数值仿真方法中的龙格库塔法给详细介绍一下,这是个比较有趣,同时也比较实用的方法.在求解常微分方程初值问题 ...

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

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

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

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

最新文章

  1. 别研究买房了,墓地你研究过吗?
  2. E. Company(Codeforces Round #520 (Div. 2))
  3. 前端学习(1396):项目包含的知识点cookie和session
  4. 分享一个非常 nice 的工具
  5. Java 算法 能量项链
  6. python打开txt文件找不到-Docker Python脚本找不到文件
  7. 最新全国移动联通基站数据升级包(2013年4月)
  8. nema0183 java解析_java解析nmea0183协议
  9. 欧姆龙CP1H的PLC步进功能图编程实例
  10. 蓝桥杯 杨辉三角形 python组省赛真题
  11. abaqus6.14 帮助 Abaqus Example Problems Guide翻译
  12. 求100以内奇数的和
  13. 从实际项目出发,告诉你vue3到底香不香
  14. Android APP微信第三方登录踩坑 - 微信开放平台修改应用包名后微信第三方登录失败
  15. linux 运行asf云挂卡,来点牛逼的,只用一条命令,ASF使用NAS群晖轻松挂卡,比图形界面还简单!...
  16. SQL语句----CASE WHEN 的用法简介
  17. 天才黑客 Flanker 疑因拒绝做黑客攻击业务,被拼多多强行辞退,错失上亿股票...
  18. 六轴机器人运动学正解
  19. libssl-dev : 依赖: libssl1.0.0 (= 1.0.2g-1ubuntu4.13) 但是 1.0.2n-1ubuntu5.1 正要被安装
  20. B站弹幕姬,弹幕礼物感谢,关注感谢,自动回复,房管工具,房管助手,基于java

热门文章

  1. 飞思卡尔智能车准备篇
  2. CIS Control v8的变化
  3. PhotoShop CS6破解方法及文件下载
  4. ToLua(LuaFramework) -ToLua框架使用指南
  5. 遥感学习笔记(四)——遥感数据分类
  6. SHT20温湿度传感器
  7. Tuxera2022Mac系统读写NTFS磁盘工具装机必备
  8. QQ小游戏 微信小游戏 即时通信 IM 登录login sdk
  9. Amesim(七):amesim自带demo动力学模型研究
  10. JavaScript 弹出框(警告框、确认框、提示框)