经典四阶龙格库塔法

article/2025/8/29 22:17:29

关注微信公众号“二进制小站”~~获取更多分析~~(文末二维码~~)


龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法,经常被称为“RK4”或者就是“龙格库塔法”。

 

令初值问题表述如下。

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

其中:

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

RK4计算程序如下:

 

//visualsan@yahoo.cn
#include <iostream>
using namespace std;#include <vector>
#include <math.h>
using namespace std;
class RK  
{
public:class DiffFunc{public:double operator()(double x,double y){// y'=cos(x)return cos(x);// y'=x*y-1//    return x*y-1;}} m_df;RK(double xend,double x0,double y0,double h=1e-3){m_max_x = xend;m_x0 = x0;m_y0 = y0;m_h = h;m_half_h=h/2.0;}void Solve(){double yn=m_y0,xstart=m_x0;while( xstart<m_max_x){double y=yn+K(xstart,yn)*m_h;//y(n+1)=y(n)+h*y'm_x.push_back(xstart);m_y.push_back(yn);cout<<xstart<<""<<yn<<endl;yn=y;xstart+=m_h;}    }//求解后的点std::vector<double> m_x,m_y;//步长hdouble m_h;//初始点x0,y0double m_x0,m_y0;//x范围double m_max_x;private:double m_half_h;double m_ptx,m_pty;double  K1(double x,double y){double v=m_df(x,y);m_ptx=x;m_pty=y;return v;}double  K2(double _k1){double v=m_df(m_ptx+m_half_h,m_pty+m_half_h*_k1);return v;}double  K3(double _k2){double v=m_df(m_ptx+m_half_h,m_pty+m_half_h*_k2);return v;}double  K4(double _k3){double v=m_df(m_ptx+m_h,m_pty+m_h*_k3);return v;}double  K(double x,double y){double _k1=K1(x,y),_k2=K2(_k1),_k3=K3(_k2),_k4=K4(_k3);return  (_k1+2.0*_k2+2.0*_k3+_k4)/6.0;}};main()
{RK s1(1,0,0);s1.Solve();
}

 

计算实例:

y'=cos(x)   y(0)=0,   ->   solution  y=sin(x)

 

y'=x*cos(x)   y(0)=0

 

y'=1.0/sqrt(x*x+y*y),y(0)=0.1

文章来源:

http://www.cnblogs.com/JustHaveFun-SAN/archive/2012/02/09/2330655.html

http://blog.csdn.net/augusdi/article/details/9968095

 

 


http://chatgpt.dhexx.cn/article/qY6vSHmt.shtml

相关文章

四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例

文章目录 1. 算法2. 程序3. 案例4. 联系作者 1. 算法 上一篇介绍了显式欧拉法、隐式欧拉法、两步欧拉法和改进欧拉法求解常微分方程初值问题&#xff1b;其中显式欧拉法和隐式欧拉法是一阶算法精度&#xff0c;截断误差为 O ( h 2 ) O\left( {{h^2}} \right) O(h2)&#xff1b…

【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真

1.软件版本 MATLAB2013b 2.算法理论 龙格&#xff0d;库塔法&#xff08;Runge-Kutta&#xff09;是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。龙格库塔法的家族中的一个成员如此常用&#xff0c;以至于经常被称为“RK4”或者就是“龙格库塔法”。令初值问题表述…

龙格-库塔方法学习笔记

1、龙格-库塔法简介 龙格—库塔法是一种在工程上应用广泛的高精度单步算法&#xff0c;其中包括著名的欧拉法&#xff0c;用于数值求解微分方程。 由于此算法精度高&#xff0c;采取措施对误差进行抑制&#xff0c;所以其实现原理也较复杂。 在各种龙格—库塔法当中有一个方法十…

四阶龙格库塔法的计算例子

序 没有对比就没有伤害&#xff0c;本文先给出很多时候直接采用的矩形法&#xff0c;然后与四阶龙格库塔法做比较&#xff0c;着重说明四阶龙格库塔法。 一、矩形法 1.1 原理 设微分方程 y ˙ f ( y ) (1.1) \dot yf(y) \tag{1.1} y˙​f(y)(1.1) 求 y y y。 使用数值方法…

龙格-库塔法(Runge-Kutta methods)

非线性的常微分方程通常是难以求出解析解的&#xff0c;只能通过多次迭代求近似的数值解。 龙格&#xff0d;库塔法&#xff08;Runge-Kutta methods&#xff09;是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。简写做RK法。 对于任意的Yf(X),假设某点(Xi,Yi)的斜…

龙格-库塔(Runge-Kutta)方法C++实现

龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高&#xff0c;采取措施对误差进行抑制&#xff0c;所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。 1 中点法 2传统二阶龙格库塔法&#xff1a; 3 传统三阶龙格库塔法 4 传…

龙格库塔法

1 基本思想 我们求解常微分方程的时候&#xff0c;某些常微分方程有解析方法&#xff0c;但是大多数的常微分方程只能用数值解法来求解。 数值解法的一个基本特点就是“递进式”&#xff0c;顺着节点的顺序一步一步向前推进。 龙格库塔法的基本思想就是利用f(x,y)在某些特殊点…

关于html中文字空格以及换行符的处理

在阮一峰大神的博客中发现空格原来可以有多种处理方式&#xff0c;过去只知道用$nbsp;真是惭愧。长路漫漫吖 目录 1、html里面的空格2、怎样原样显示空格和换行符2.1 使用pre标签2.2 使用white-space设置样式 3、参考链接 1、html里面的空格 在html里面&#xff0c;空格和换行符…

html5中如何取消换行,html5换行符元素: 元素

1. 基本概念 html5中的元素用于产生一个换行符&#xff0c;它的名称br正是单词break的前两个字母&#xff1b;break本身的含义为“打破、拆分”&#xff0c;在此处就引申为换行的意思。 为什么html5要专门定义一个元素来代表换行符呢&#xff1f;我们平常在办公软件中编辑文本的…

linux换行符 r,\r \n 回车换行符详解

\r \n 回车换行符详解 \r \n 回车换行符详解 \r \n 回车换行符详解1. \r \n 回车换行的含义1.1 \r 回车 1.2 \n 换行 2. \r \n 回车换行的历史2.1 \r \n 回车换行的历史 2.2 发展:linux 和 windows的不同 参考: 1.1 \r 回车 回车 CR (carriage return) 含义:return oldline …

html文本换行符

2019独角兽企业重金招聘Python工程师标准>>> p的样式&#xff1a;white-space:pre;或者white-space:pre-wrap;或者white-space:pre-line; <p> abcdef </p> 转载于:https://my.oschina.net/u/3407699/blog/1829940

在html中js如何给字符串中加换行符

var str 如果有一天休息休息下cvcvx,"\n" 那么&#xff5e;&#xff5e;&#xff5e;; 这种写法在html中是会被识别为"如果有一天休息休息下cvcvx,\n 那么&#xff5e;&#xff5e;&#xff5e;" 那么如何保证其这么写会被识别&#xff0c;只需要在该d…

linux cr换行符,回车符CR和换行符LF

我在Windows电脑上做开发时,经常会见到这个现象。代码从远程git仓库clone下来后,然后npm install安装依赖后,打开任意一个代码文件会看到每行结尾处有如下报红: 将鼠标指针停留在行尾报红处,会浮出如下提示: Expected linebreaks to be LF but found CRLF.eslint(linebre…

文本文件换行符

文本文件的每一行结尾用一个或者两个特殊的ASCII字符进行标识&#xff0c;这个标识就是换行符&#xff0c;不同的操作系统中会采用不同的换行符。 1.CR、LF、CRLF 主要的换行符有三种&#xff1a;LF&#xff08;Line Feed即换行&#xff0c;转义字符用“\n”表示&#xff0c;十…

html语言中的换行标签是,什么是换行符标签

HTML语言中换行的代码是什么&#xff1f; 方法有很多&#xff0c;但要做到用的恰到好处 段落标签 一个段落空一行 效果如下&#xff1a; 是默认的换行&#xff0c;在你要换行的地方加进去就行&#xff0c;单个标签 效果如下&#xff1a; 如果有了 ……&#xff0c;从到中的内容…

html语言换行格式,html换行符br标签

br标签的作用 在 html 源代码中对内容进行编辑,如果直接采用回车换行,那么浏览器解析的结果可能会是一个空格、或者被忽略,正确的做法是使用< br / >标签,在 html 语言中,br标签定义为一个换行符,所以应将它理解为简单的输入一个空行,而不是用来对内容进行分段。 …

html语言换行符,html换行符

在html源代码中对内容进行编辑&#xff0c;如果直接采用回车换行&#xff0c;那么浏览器解析的结果可能会是一个空格、或者被忽略&#xff0c;正确的做法是使用标签&#xff0c;在html语言中&#xff0c;br标签定义为一个换行符&#xff0c;所以应将它理解为简单的输入一个空行…

html怎么换行?换行代码是什么?九种html文字换行方法总结

在用html写网页时&#xff0c;为了让网页中内容看起来整洁流畅&#xff0c;我们需要将其中的文字内容进行换行&#xff0c;那么&#xff0c;html怎么来换行呢&#xff1f;本篇文章就来给大家介绍一下html中给文字换行的方法。 打造全网web前端全栈资料库&#xff08;总目录&am…

零基础HTML入门教程(11)——换行br

本章目录 1.任务目标2.br换行标签3.代码演示4.小结 1.任务目标 我们上一小节学习了img图像&#xff0c;我们这一小节学习一下新的标签br换行标签&#xff0c;并且熟练使用。 2.br换行标签 br 可插入一个简单的换行符。 br 标签是空标签&#xff08;意味着它没有结束标签&…

求菲波那切数列数列第n项三种方法小结

菲波那切数列数列的应用场景还是比较多的&#xff0c;比如可以在考试的时候考你递归啊&#xff0c;早上碰到的一道题就是这样&#xff0c;骄傲地写下递归方程&#xff0c;结果TLE了&#xff0c;然后旁边的大神给我说了一个叫滚动数组的东西。。。题目是这样的You are climbing …