runge-kutta相关内容

理解自适应龙格库塔积分器的局部截断误差

我正在实现一个RKF4(5)积分器,但我无法确定我的代码是否工作正常,并且我不理解本地截断错误,或者我的代码是否不工作。 对于代码块的大小,我深表歉意,但在这种情况下,最小可重现示例相当大。 import numpy as np def RKF45(state, derivative_function, h): """ Calculate the next state ..

N维系统的模龙格-库塔四阶方法的实现

我正在尝试使我的龙格库塔4阶码模块化。我不想每次使用代码时都要编写和声明它,但是在.hpp和.cpp文件中声明它,以便分别使用它。但我遇到了一些问题。一般来说,我想要解一个n维方程组。为此,我使用了两个函数:一个用于方程组,另一个用于龙格-库塔法,如下所示: double F(double t, double x[], int eq) { // System equations ..
发布时间:2022-04-20 11:48:45 C/C++开发

用PYTHON中的RK4实现伪谱方法

我用伪谱方法求解KdV方程u_t + u*u_x + u_xxx = 0。经过傅立叶变换简化后,我得到了两个含两个变量的方程: uhat = vhat * exp(-i*k^3*t) d(vhat)/dt =-0.5i * k * exp(-i*k^3*t)*F[u^2] 其中F表示傅里叶变换,uhat = F[u], vhat = F[v] 我想最终用RK4来求解。现在我得到 ..
发布时间:2022-04-02 14:03:44 Python

使用 Runge Kutta 4 求解方程组:Matlab

我想在 Matlab 中使用 Runge Kutta 4 方法求解三个微分方程组(不允许使用 Ode45). 经过长时间的查找,我在网上找到的要么是无法理解的示例,要么是根本不包含示例的一般解释.我想要一个关于如何正确实施我的解决方案的具体例子,或者我可以建立的类似问题的解决方案. 我已经走了很远;我当前的代码在大多数组件上输出了一个包含 2 个正确小数的矩阵,我对此非常满意. ..
发布时间:2021-12-08 15:25:34 其他开发

ODE45 和 Runge-Kutta 方法与解析解相比的绝对误差

如果有人可以帮助解决以下问题,我将不胜感激.我有以下 ODE: dr/dt = 4*exp(0.8*t) - 0.5*r ,r(0)=2, t[0,1] (1) 我以两种不同的方式解决了 (1).通过Runge-Kutta 方法(四阶)和ode45 在Matlab 中.我将这两个结果与解析解进行了比较,解析解为: r(t) = 4/1.3 (exp(0.8*t) - exp(-0.5*t)) ..

有没有更好的方法来使用 Scipy 的 solve_ivp() 在 Python 中模拟 PID 控制?

我正在解决家庭作业问题.我正在尝试使用 Scipy 的 integrate.solve_ivp() 函数在 Python 中模拟 PID 控制. 我的方法是在函数的右侧运行 PID 代码,使用全局变量并在每个时间步的末尾将它们附加到全局矩阵,如下所示: solution =integrate.solve_ivp(rhs, tspan, init, t_eval=teval) 这是我的代码 ..
发布时间:2021-06-12 18:46:31 Python

求解二阶 ODES 的 Runge-Kutta 四阶方法

我正在尝试做一个简单的谐振子示例,它将通过 Runge-Kutta 4 阶方法解决.要求解的二阶常微分方程 (ODE) 和初始条件为: y'' + y = 0 y(0) = 0 和 y'(0) = 1/pi 范围在 0 到 1 之间,有 100 步.我将我的二阶 ODE 分成两个一阶 ODE,使用 u 作为辅助变量: y' = u u' = -y 解析解为正弦 ..
发布时间:2021-06-12 18:45:44 Python

Python中非线性二阶常微分方程的Rk4积分器

我在我大学的一个项目中,我必须使用 Python 实现 Runge-Kutta 4 阶积分器.我知道我可以使用例如 Sympy,但这里的目标是实现该方法,代码已准备好用 Fortran 语言编写,所以基本上我有一个包含正确解决方案值的数据库,我必须在我的代码中获得类似的解决方案.但是,我们有一些问题;我使用线性方程(一阶和二阶)做了几次相同的事情,但这是牛顿万有引力定律中的二阶非线性方程.代码没有 ..
发布时间:2021-06-12 18:45:35 Python

如何使用 Runge-Kutta 四阶(Matlab)执行自适应步长?

对我来说,估计的 hstep 似乎需要很长时间和长时间的迭代才能收敛.我用第一个 ODE 尝试过.基本上,您执行具有 h/2 步长的 RK4 之间的差异.请注意,要达到相同的时间步长值,您必须在 h/2 的两个时间步长后使用 y 值,以便它也达到 h. frhs=@(x,y) x.^2*y; 我的代码正确吗? clear all;close all;clcc=[];我=1;U_saved=[ ..
发布时间:2021-06-10 19:24:52 其他开发

如何阻止我的 Runge-Kutta2 (Heun) 方法爆炸?

我目前正在尝试编写一些 python 代码来解决一阶 ODE 的任意系统,使用由值 alpha、gamma(两个维度为 m 的向量)和 beta(下三角矩阵)定义的通用显式 Runge-Kutta 方法由用户传入的 Butcher 表的维度 (mxm).我的代码似乎适用于单个 ODE,已经在几个不同的示例上对其进行了测试,但我正在努力将我的代码推广到向量值 ODE(即系统). 特别是,我尝试 ..

使用RK4进行仿真,在仿真过程中更新ODE变量

问题: 我目前正在制作一个python应用,用于模拟一组依赖于变量的耦合的常微分方程组,我们将其称为"X". 至于现在,我基本上是在给定的时间内用 RK4 模拟这组 ODE,然后我在动画图上绘制图形,并在 tkinter 中嵌入了“matplotlib 动画". 事实是,我希望能够在求解方程时修改“X",以便在我们修改此变量时模拟可以改变. 上下文: 解决方案从那时起 ..
发布时间:2021-06-01 20:57:24 Python

RK4 Python解释

我想将在网上找到的RK4的实现用于某些事情,但是我很难理解在网上找到的实现.例如: def rk4(f,x0,y0,x1,n):vx = [0] *(n + 1)vy = [0] *(n + 1)h =(x1-x0)/浮点数(n)vx [0] = x = x0vy [0] = y = y0对于范围(1,n + 1)中的i:k1 = h * f(x,y)k2 = h * f(x + 0.5 * ..

如何创建一个具有2维的单个矢量?

我已经将运动方程式(牛顿定律)用于简单的弹簧和质量场景,将其结合到给定的第二ODE方程y"中. +(k/m)x = 0; y(0)= 3; y'(0)= 0. 然后我能够运行一个代码,该代码可以计算精确解决方案并将其与Runge-Kutta方法解决方案进行比较. 它工作正常...但是,最近,我被要求不要将我的'x'和'v'值分开,而是使用具有两个维度(即'x'和'v '可以由x(1)和 ..
发布时间:2021-02-09 18:59:50 Python

Python 2.7 Runge Kutta Orbit GUI

我正在尝试使用Tkinter在Python中创建GUI,以使用Runge-Kutta方法绘制质量轨道的轨迹.我的GUI工作正常,但是我的问题是,无论我向GUI输入什么值,它都只能绘制一条直线. 我希望有人能向我展示GUI中我的功能出了什么问题,以便它实际上能正确绘制出轨迹. def calcPath(self): M = float(self.entM.get()) m = ..
发布时间:2020-07-06 04:17:53 其他开发

如何使用scipy.integrate设置固定步长?

我正在寻找一种设置固定步长的方法,以通过Python中的Runge-Kutta方法解决我的初值问题.因此,如何告诉scipy.integrate.RK45对其集成过程进行恒定的更新(步长)? 非常感谢您. 解决方案 为Dormand-Prince RK45方法编写Butcher表很容易. 0 1/5 | 1/5 3/10 | 3/40 9/40 4/5 ..
发布时间:2020-07-06 04:17:50 Python

如何在Python中将函数传递给函数?

我是Python的初学者/中级.我已将四阶Runge-Kutta方法(RK4)编码为Python.它基本上是在解决钟摆问题,但这不是重点. 我想通过以下方式改进RK4方法:我希望能够将函数f直接传递给RK4函数,即RK4(y_0,n,h)应该变成RK4(f,y_0,n, H).这将具有很大的优势,那就是我可以将RK4用于描述其他系统的其他f函数,而不仅仅是这个钟摆. 我一直在尝试将简单 ..
发布时间:2020-07-06 04:17:46 Python