计算方法实验(三):四阶龙格-库塔方法
四阶Runge-Kutta数学原理
给定常微分方程初值问题
{dydx=f(x,y),a≤x≤by(a)=αh=b−aN\left\{ \begin{matrix} \frac{\text{dy}}{\text{dx}} = f(x,y),a \leq x \leq b \\ \ y(a) = \alpha\text{\;\;\quad\;h} = \frac{b - a}{N} \\ \end{matrix} \right.\ {dxdy=f(x,y),a≤x≤b y(a)=αh=Nb−a
记xn=a+n⋅hx_{n} = a + n \cdot hxn=a+n⋅h,n=0,1,⋯,Nn = 0,1,\cdots,Nn=0,1,⋯,N,利用四阶龙格—库塔方法
K1=hf(xn,yn)K_{1} = hf\left( x_{n},y_{n} \right) K1=hf(xn,yn)
K2=hf(xn+h2,yn+K12)K_{2} = hf\left( x_{n} + \frac{h}{2},y_{n} + \frac{K_{1}}{2} \right) K2=hf(xn+2h,yn+2K1)
K3=hf(xn+h2,yn+K22)K_{3} = hf\left( x_{n} + \frac{h}{2},y_{n} + \frac{K_{2}}{2} \right) K3=hf(xn+2h,yn+2K2)
K4=hf(xn+h,yn+K3)K_{4} = hf\left( x_{n} + h,y_{n} + K_{3} \right) K4=hf(xn+h,yn+K3)
yn+1=yn+16(K1+2K2+2K3+K4)y_{n + 1} = y_{n} + \frac{1}{6}(K_{1} + 2K_{2} + 2K_{3} + K_{4}) yn+1=yn+61(K1+2K2+2K3+K4)
n=0,1,⋯,N−1n = 0,1,\cdots,N - 1 n=0,1,⋯,N−1
可逐次求出微分方程初值问题的数值解yny_{n}yn,n=1,2,⋯,Nn = 1,2,\cdots,Nn=1,2,⋯,N。
程序流程
核心代码
#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;int n;
double a, b, fa;double f(double x, double y) { return -y * y; }
double f_(double x) { return 1.0 / (x + 1.0); }int main() {scanf("%lf%lf%lf%d", &a, &b, &fa, &n);double x = a, y = fa, h = (b - a) / n;for (int i = 1; i <= n; i++) {double k1 = h * f(x, y);double k2 = h * f(x + h / 2, y + k1 / 2);double k3 = h * f(x + h / 2, y + k2 / 2);double k4 = h * f(x + h, y + k3);x += h;y += 1.0 / 6.0 * (k1 + 2 * k2 + 2 * k3 + k4);printf("%.2lf\t%lf\t%.2lf\n", x, y, fabs(f_(x) - y));}return 0;
}
详细报告
计算方法实验(三):四阶龙格-库塔方法相关推荐
- matlab:使用四阶龙格库塔方法求解微分方程组
%书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法,例10.14使用 %四阶龙格库塔方法 function [t,z] = rk4symeq(fun, t0, tf, ...
- 用四阶龙格-库塔方法求微分方程组
最近一段时间再忙期末考试,小学期课程设计的东西,没怎么更新博客.... 更新一个用四阶龙格库塔方法求解脉冲微分方程,题目来源是一篇论文<Impulsive control of projecti ...
- matlab:使用4阶龙格库塔方法求解常微分方程组
%书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法,例10.14使用 %四阶龙格库塔方法 function [t,z] = rk4symeq(fun, t0, tf, ...
- [计算机数值分析]四阶龙格-库塔经典格式解常微分方程的初值问题
龙格-库塔方法的设计思想: 四阶龙格-库塔方法的经典格式: 程序设计框图: 例:设取步长h=0.2,从x=0到x=1用四阶经典格式解决以下常微分方程的初值问题. 运行示例: 源码: #include& ...
- 四阶龙格库塔法的基本思想_四阶龙格库塔实验报告.docx
四阶龙格库塔实验报告 三.四阶Runge-Kutta法求解常微分方程一.龙格库塔法的思想根据第九章的知识可知道,Euler方法的局部截断误差是,而当用Euler方法估计出再用梯形公式进行校正,即采用改 ...
- 数值分析C++实现用四阶龙格-库塔(Runge-Kutta)方法求解常微分方程初值问题
问题:用四阶龙格-库塔(Runge-Kutta)方法求解常微分方程初值问题. 算法描述 算法的程序框图: 具体算法: (1)读取a,b,n,f (2)计算步长h = (b-a)/n,x0=a,y0=f ...
- 【Hydro】龙格-库塔方法的公式推导
一.龙格-库塔方法的公式推导 摘自<数值计算方法(MATLAB版)> 二.龙格-库塔方法在水库调洪演算的应用 一般库水面坡降很小,忽略动库容影响,近似看成静水面,水库蓄水量V只随坝前水位Z ...
- 四阶龙格库塔方程(Rungekutta)解二阶常微分方程组并计算船舶在迎浪下的纵摇埀荡耦合运动方程-附Matlab代码
今年年初的时候给师姐做了DDPG算法的船舶减横摇控制算法,师姐还有想法要让我把纵摇-埀荡两个自由度的减摇也做出来,这个任务归我了.实际上不管是多少个自由度的减摇,其实都需要解运动方程,当初做单自由度横 ...
- 四阶龙格库塔方程解二阶常微分方程组并计算船舶在迎浪下的纵摇埀荡耦合运动方程-附Python代码
0 写在前面 这篇博客是在将我上一篇博客的matlab代码移植到python中,应为后续要开展深度强化学习下的船舶减摇研究,总的来说还是在python上做这项工作比较合适.具体方程的解法和背景不在赘述 ...
最新文章
- PMP47个过程的ITO
- lda主题模型的可视化_把LDA主题模型作为自己的硕士课题,有什么可以做的?
- thinkphp5的目录结构和命名规范
- java基础(八) 深入解析常量池与装拆箱机制
- 闲着无聊,自己写了个几个string.h里的函数练手
- QQ登录JS SDK教程,调用openapi接口
- Apache IoTDB 物联网数据库引擎
- win centos php语法,linux(centos5.5)/windows下nginx开启phpinfo模式功能的配置方法分享
- 处理分类数据 非数值型编码
- 文件、图片上传,下载预览的实现
- python笔试编程题_Python自动化测试笔试面试时常见的编程题
- 5.2 lilyglyphs包
- excel 添加垂直竖向直线
- 卷积神经网络(一)- 卷积神经网络
- 深秋---Java Map
- 爬取拉钩 破解拉钩反爬机制
- 国密sm4js整理,js 调用,易语言调用
- MySQL安装报错:Please install the Redistributable then run this installer again.
- 请问哪位有EDUP EP-6501无线网卡驱动,请发我一份,无限感激!!
- Hive 中 formatted 的使用