龙格库塔法

article/2025/8/29 22:41:20

1 基本思想

我们求解常微分方程的时候,某些常微分方程有解析方法,但是大多数的常微分方程只能用数值解法来求解。

数值解法的一个基本特点就是“递进式”,顺着节点的顺序一步一步向前推进。

龙格库塔法的基本思想就是利用f(x,y)在某些特殊点上的函数值的线性组合,来估算高阶单步法的平均斜率。

1.1 平均斜率

对于常微分方程,有一个初始解y=y(x),用泰勒展开式有(其中,h=x(n+1)-x(n))

 根据拉格朗日中值定理,存在一个θ∈(0,1),使得

 

所以对于y(x_{n+1}),有y(x_{n+1})=y(x_n)+hy'(x+\theta h)

y'(x+θh)就是这里的平均斜率。

2 二阶龙格库塔法

考虑区间[x_i,x_{i+1}]上的点x_{i+p}=x_i+ph (0<p≤1)

x_i点和x_{i+p}点的斜率K1和K2的加权平均作为x_ix_{i+1}的 平均斜率K的近似值

即:K=λ1K1+λ2K2,也就是y_{i+1}=y_i+h(λ1K1+λ2K2),其中h=x_{i+1}-x_i

λ1和λ2都是待定的常数,K1=f(yi,yi),那么问题在于:如何确定x_{i+p}点的斜率K2和常数λ1,λ2

按照改进的泰勒展开式,用泰勒展开式估计y_{i+p}

(y(x_{i+p})=y(x_i)+(x_{i+p}-x_i)y'(x_i)

y_{i+p}=y_i+ph K_1 (y'=f(x,y))

并用它来估计斜率K2

于是得到如下形式的算法:

要使得公式具备二阶精度,需要:

λ1+λ2=1—— h的系数

λ2p=1/2——h^2的系数

(和泰勒公式里面h的系数对应)

方程组有无穷多组解,所以二级方程有无穷多种。

h^n的系数怎么看?f之前h的幂是h^n的一部分。

另一部分是这么看的:f(x,y+h^n Ki)中的n算是h^n的一部分,同时整个f(x,y)算是h^0的一部分

 2.2 常用的二阶龙格库塔法

2.2.1 中点法

λ1=0,λ2=1 ,p=1/2

 2.2.2 传统二阶龙格库塔法:

λ1=1/2 λ2=1/2 p=1

 3 传统三阶龙格库塔法

 

通过验证,不难发现h的1,2,3次方的系数和泰勒展开式中一致

h的系数 1/6+2/3+1/6=1

h^2的系数 (2/3)*1/2-1/6+(1/6)*2=1/2

h^3的系数 ((1/6)*2)/2=1/6

4 传统四阶龙格库塔法

 4.1 四阶龙格库塔法举例

 

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

实验结果:

可视化结果

 4.2 python实现四阶龙格库塔法

 见 python 实现四阶龙格库塔法_刘文巾的博客-CSDN博客

参考文献 第二节 龙格-库塔方法 - 百度文库 (baidu.com)


http://chatgpt.dhexx.cn/article/9iNsF8d3.shtml

相关文章

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

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

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

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

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 …

PTA题库函数递归 菲波那切数列(递归版)

请编写递归函数&#xff0c;求菲波那切(Fibonacci)数列某一项的值。 0, 1, 1, 2, 3, 5, 8, 13 , 21, 34, 55, 89, 144, ... 函数原型 double Fib(int index);说明&#xff1a;参数 index 为数列项的索引号&#xff0c;从 0 开始计数。函数值为 Fibonacci 数列第 index 项的值…

菲波那切数列(Java)

题目&#xff1a; 写一个函数&#xff0c;输入n&#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第n项。斐波那契数列的定义如下&#xff1a; 知识点&#xff1a; 递归&#xff1a;是在一个函数的内部调用这个函数自身。循环&#xff1a;则是通过设置计算的初…

求解斐波那切数列的几种算法

斐波那切数列我们并不陌生。在百度百科中我们可以找到有关它的定义&#xff1a;斐波纳契数列&#xff08;Fibonacci Sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;指的是这样一个数列&#xff1a;1、1、2、3、5、8、13、21、……在数学上&#xff0c;斐波纳契…

Python多种方法生成菲波那切数列

文章目录 一、顺序输出二、利用递归函数实现三、循环四、利用列表实现五、利用reduce实现六、利用生成器实现七、利用魔术方法实现 记录多种方法生成菲波那切数列 一、顺序输出 代码如下&#xff1a; # 第一种方法 顺序输出# 获取用户输入数据 num int(input("你需要几项…

斐波那契数列详解

目录 1.认识斐波那契数列 1.1 什么是斐波那契数列 1.2 斐波那契数列的规律 2.用代码的思维实现斐波那契数列 2.1 确定要查找第几个斐波那契数列 2.2 如何利用斐波那契数列规律 2.3 如何利用循环实现斐波那契数列 2.4 如何进入循环 2.5 如何跳出循环 1.认识斐波那契数列 …

求斐波那契数列的三种方法

什么是斐波那契数列&#xff0c;1,1,2,3,5,8,13...这样一个数列就是斐波那契数列&#xff0c;求第n项的值。 一、经典求法 观察数列可得&#xff0c;除了第一项和第二项&#xff0c;所有的数列的值都是前一项和前一项的前一项的加和&#xff0c;转换成函数也就是f(n) f(n-1)…

斐波那契数列

斐波那契数列来源于兔子繁殖问题&#xff0c;所以也叫兔子序列。   最开始我一直不能理解兔子问题怎么和斐波那契数列联系在一起的&#xff0c;然后画了这个图之后&#xff0c;就明白了。   第一年有一对小兔子&#xff0c;一年后成年。成年的兔子又可以生出一对小兔子&…