四阶龙格库塔法求解一次常微分方程组(python实现)

四阶龙格库塔方法求解一次常微分方程组 四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y 阅读详情
AI摘要

本文介绍使用四阶龙格库塔法(RK4)求解一次常微分方程组的方法,包括方程组标准化及求解步骤,并提供Python实现代码及验证结果。

一、前言

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

二、RK4求解方程组的要点

使用RK4求解一元方程的过程是非常容易的,但是当转变成多变量的情况下,如何求解方程组,可能有部分朋友会出现问题,这里我总结出来主要有以下要点。

1. 将方程组转化为RK4求解要求的标准形式

RK4求解要求方程具有形如 y ˙ = f ( y , t ) \dot{y}=f(y,t) y˙​=f(y,t)的形式,即是在方程的左边只有变量的一阶微分项,方程的右边包含变量项和自变量项,对于n元情况,我们需要有n个方程,每个方程对应一个自变量项,形式如下:
{ y 1 ˙ = f 1 ( y 1 , ⋯   , y n , t ) ⋮ y n ˙ = f n ( y 1 , ⋯   , y n , t ) \begin{cases} \dot{y_1}=f_1(y_1, \cdots, y_n, t)\\ \quad \quad \vdots \\ \dot{y_n}=f_n(y_1, \cdots, y_n, t)\\ \end{cases} ⎩⎪⎪⎨⎪⎪⎧​y1​˙​=f1​(y1​,⋯,yn​,t)⋮yn​˙​=fn​(y1​,⋯,yn​,t)​
转化为标准形式之后就可以进行求解了。

2. 注意区分每个方程的独立性

RK4求解是通过指定一个较小的步进距离,来逐步求解前进一步之后的函数值,每一步下的函数值求解都需要用到前一步的结果,属于递推过程。对于方程组的求解过程,独立性是指针对某个特定变量时,递推公式中只改变特定变量的递推关系,而其它变量不变,例如,方程组中 y i y_i yi​的第m+1项的RK4递推关系可以写作:
{ h m = t m + 1 − t m k 1 i m = f i ( y 1 m , ⋯   , y i m , ⋯   , y n m , t m ) k 2 i m = f i ( y 1 m , ⋯   , y i m + h m 2 k 1 i m , ⋯   , y n m , t m + h m 2 ) k 3 i m = f i ( y 1 m , ⋯   , y i m + h m 2 k 2 i m , ⋯   , y n m , t m + h m 2 ) k 4 i m = f i ( y 1 m , ⋯   , y i m + h m k 3 i m , ⋯   , y n m , t m + h m ) y i m + 1 = y i m + h m 6 ( k 1 i m + 2 k 2 i m + 2 k 3 i m + k 4 i m ) \begin{cases} h_m = t_{m+1}-t_m \\ k_{1i}^{m} = f_i(y_1^m, \cdots, y_i^m,\cdots, y_n^m, t_m)\\ k_{2i}^{m} = f_i(y_1^m, \cdots,y_i^m+\frac{h_m}{2}k_{1i}^m,\cdots,y_n^m, t_m+\frac{h_m}{2})\\ k_{3i}^{m} = f_i(y_1^m,\cdots,y_i^m+\frac{h_m}{2}k_{2i}^m,\cdots,y_n^m,t_m+\frac{h_m}{2})\\ k_{4i}^{m} = f_i(y_1^m,\cdots,y_i^m+h_mk_{3i}^m,\cdots,y_n^m,t_m+h_m)\\ y_i^{m+1} = y_i^m+\frac{h_m}{6}(k_{1i}^m+2k_{2i}^m+2k_{3i}^m+k_{4i}^m) \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪

用四阶龙格库塔法(RK4)求解二阶微分方程 import math import matplotlib.pyplot as plt # 龙格-库塔法的定义 def runge_kutta(y, h, f): k1 = h * f(t, x1, x2) k2 = h * f(t + 0.5 * h, x1 + 0.5 * k1, x2 + 0.5 * k1) k3 = h * f(t + 0.5 * h, x1 + 0.5 * k2, x2 + 0.5 * k2) k4 = h * f(t + h, x1 + k3. 阅读详情

相关推荐

Python实现龙格-库塔算法:Runge-Kutta方法

接下来,我们定义函数RK4来实现四阶Runge-Kutta算法。在函数内部,我们依次计算每一步的k1、k2、k3和k4,并根据这些值计算出新的y值。龙格-库塔算法是一种数值解微分方程的方法,通常用于解决高维非线性微分方程组。在本例中,我们使用常见的y’ = -y微分方程。下面我们使用Python实现龙格-库塔算法的一种典型形式,即四阶Runge-Kutta方法。我们将初值y0设置为1,自变量从0开始,终点为5,步长h为0.1。该值与真实解y=e^(-x)非常接近,说明龙格-库塔算法具有很高的精度和可靠性。

持续更新 1949

常微分方程算法之龙格-库塔法(Runge-Kutta法)

一阶常微分方程数值解法-四阶龙格库塔法及C++程序实现

欢迎各位大佬光临“寒舍”!请多多指点,共同进步! 2万+

Python 四阶龙格库塔法求积分

关于龙格库塔法的定义,这里不做过多解释。如果不知道,可以自行百度或谷歌。如果读者认为有必要,可以评论区留言给我,后续我可以添加。阅读本篇前推荐优先阅读二阶龙格库塔法求积分。四阶龙格库塔法也叫标准龙格库塔法,使用龙格库塔法时推荐使用四阶龙格库塔法, 关于为什么推荐使用四阶,之后我们会讨论。 这里简单地说一下推导的结果: yn+1=yn+h6∗(k1+4k2+k3)y_{n+1} = y_n + \frac{h}{6} * (k_1 + 4k_2 + k_3)yn+1​=yn​+6h​∗(k1​+4k2​+k3

u011699626的博客 1276

龙格库塔原理详解及解微分方程组的实现

资源包含龙格库塔法的实现原理,利用从原理上matlab实现四阶龙格库塔法解微分方程组,微分方程组为CPG震荡图

用Python实现四阶龙格-库塔(Runge-Kutta)方法求解高阶微分方程.pdf

用Python实现四阶龙格-库塔(Runge-Kutta)方法求解高阶微分方程 (需要资源可进主页自取)

【安徽理工大学】一文带你高分拿下计算机考研复试(85+的秘密)

一文带你高分拿下安徽理工大学计算机考研复试(85+的秘密)

猫天意的博客 1522

ENVI新手避坑指南:手把手教你搞定遥感影像的坐标系转换(附ArcGIS对比)

本文详细解析ENVI与ArcGIS在遥感影像坐标系转换中的关键差异与实战技巧,特别针对新手常见问题提供避坑指南。从基础概念到高级操作,涵盖定义投影、UTM转换等核心步骤,并对比两种软件的处理精度与效率,帮助用户高效完成遥感影像处理任务。

weixin_42531925的博客 377

Vivado里LDPC IP核怎么配?手把手教你从6144bit数据到完整参数设置

本文详细介绍了在Vivado中配置LDPC IP核的完整流程,从6144bit数据的参数计算到实际IP核设置。通过分析基本图选择、扩展因子计算和移位参数确定等关键步骤,帮助工程师高效完成LDPC编译码的硬件实现,并提供了时序控制、仿真验证和性能优化的实用技巧。

weixin_30352645的博客 517

pytorch实现手语识别

连续手语识别项目,中文数据集CSL

masteryi-0018的博客 1万+

上下相机对位,上下贴合,上下相机映射对位场景案例

上下相机对位,上下贴合,上下相机映射对位场景案例

视觉人机器视觉的博客 1万+

基于Blender软件对Matterport3D数据集场景可视化

使用Blender软件对 Matterport3D 中的室内场景进行可视化。

qq_44100524的博客 289

mapbox高阶,加载倾斜摄影

本文详细介绍如何基于mapbox-gl v3.8.0版本实现倾斜摄影的加载,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 342

AI 模型优化与部署秘籍:从理论到实战

本文系统介绍了AI模型优化与部署的关键技术。模型剪枝通过去除冗余参数减小模型规模,量化技术降低计算精度以提升效率,蒸馏方法实现知识从大模型到小模型的迁移。TensorRT通过层融合和精度校准加速GPU推理,ONNX格式实现跨框架模型转换,TFLite则优化移动端部署。这些技术共同解决了AI模型在资源受限环境下的部署难题,显著提升了模型运行效率,为AI应用落地提供了重要支撑。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 242

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 高斯过程回归(Gaussian Processes Regression, GPR)简介
下一篇: pytorch 的自动求导功能简介
哆啦A梦PLUS
博客等级 码龄7年 75粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值