最近在网上搜了很多基于C语言实现龙格-库塔法 求解二阶微分方程的相关文章,发现基本都没解决我的问题,代码也没开源,于是自己找了很多相关资料写了一个具体实现的例子方便大家理解,大家***窥一斑而知全豹***

问题如下:

解题思路:

只需要将以上式子转化成以下一阶常微分方程来求即可

实现代码:
#include <stdio.h>double function(double x , double y[] , int j){if(j == 1)return x * y[1] + y[0] ;    //如果j = 1 ,f = x * y[1] + y[0],然后返回回去return y[1] ;   //否则f = y[1],然后返回f即可
}void rungekutta(double x ,  double *y , double h){double ywork[2] , k0[2] , k1[2] , k2[2] , k3[2] ;int j ;for(j = 0 ; j < 2 ; ++ j)k0[j] = h * function(x , y , j) ;   //计算k1for(j = 0 ; j < 2 ; ++ j)ywork[j] = y[j] + 0.5 * k0[j] ;    //用数组ywork存储y的变化量for(j = 0 ; j < 2 ; ++ j)k1[j] = h * function(x + 0.5 * h , ywork , j);//计算k2for(j = 0 ; j < 2 ; ++ j)ywork[j] = y[j] + 0.5 * k1[j] ;   //将y的变化量存储到ywork中for(j = 0 ; j < 2 ; ++ j)k2[j] = h * function(x + 0.5 * h , ywork , j);//计算k3for(j = 0 ; j < 2 ; ++ j)ywork[j] = y[j] + k2[j] ;   //更新ywork数组,存储y的变化量for(j = 0 ; j < 2 ; ++ j)k3[j] = h * function(x + h , ywork , j) ;   //计算k4for(j = 0 ; j < 2 ; ++ j)y[j] = y[j] + (k0[j] + 2 * k1[j] + 2 * k2[j] + k3[j]) / 6;     //计算y0和y1,用j循环先求y0,再求y1
}int main() {double h , x , y[2] ; //声明变量,y0,y1使用数组y[0],y[1]表示h = 0.1 ;x = 0 ;y[0] = 1 , y[1] = 1 ;   //设置运算初始值int i; for(i = 0 ; i < 10 ; ++ i){rungekutta(x , y , h) ; //调用Runge Kutta函数进行运算,传入需要用到的数值:x , y0 , y1 , h ;x = x + h ;printf("n = %d: x = %lf, y0 = %lf, y1 = %lf\n" , i + 1 , x , y[0] , y[1]) ;}return 0;
}
效果显示:

大家需要详细流程图的可以评论我,因学习繁重这里笔者就写这么多。

【C语言】实现 4阶(经典)龙格-库塔法 求解二阶微分方程相关推荐

  1. 4阶经典龙格库塔格式

    %用途:4阶经典龙格库塔格式解常微分方程组y'=f(x,y),y(x0)=y0 %格式:[x,y]=marunge4s(dyfun,xspan,y0,h) %dyfun为向量函数f(x,y),xspa ...

  2. 蹦极模型matlab仿真,科学网—蹦极的数学建模及其龙格-库塔法求解方法 - 赵也非的博文...

    论文: 蹦极的数学建模及其龙格-库塔法求解方法 在"华东师范大学首届研究生数学建模竞赛"中,获得二等奖. 发表日期: 2007年5月 摘要: 本文通过参照题中给出的数据,对蹦极者在 ...

  3. 经典龙格-库塔法(四阶龙格-库塔法)求解求一阶常微分方程相应的特解的Python程序

    基本原理 例题 代码 #四阶龙格-库塔法 #求一阶常微分方程,相应的特解 #x变量的区间 a = 0 b = 1 #已知条件 X = [0] Y = [1] h = 0.2 #设置步长 n = (b- ...

  4. 四阶龙格-库塔法求解常微分方程的初值问题

    算法原理和程序框图 龙格-库塔法是一种求其准确解y(x)在一系列点xi处y(xi)的近似值yi的方法,yi称为数值解.经典的四阶龙格库塔法方程如下: y'=f(t,y),y(t0)=y0输出按如下求解 ...

  5. 欧拉法、改进的欧拉法、龙格-库塔法求解初值问题

    求解初值问题 简介 前期准备 欧拉法 改进的欧拉法 龙格-库塔法 标准四阶显式Kutta公式 三级三阶显式公式 四级四阶显式Kutta公式 四级四阶显式Gill公式 示例 MATLAB代码 结果 简介 ...

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

    1.软件版本 MATLAB2013b 2.算法理论 龙格-库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法.龙格库塔法的家族中的一个成员如此常用,以至于经常被称为& ...

  7. 四阶龙格库塔法的基本思想_数值常微分方程-欧拉法与龙格-库塔法

    大三时候在跳蚤市场闲逛,从一位数学院的学长那里买了一些闲书,最近翻出来刚好有李荣华.刘播老师的<微分方程数值解法>和王仁宏老师的<数值逼近>,结合周善贵老师的<计算物理& ...

  8. 6.2 龙格—库塔法

    学习目标: 学习龙格-库塔法的具体明确的学习目标可以有以下几点: 理解龙格-库塔法的基本思想和原理:我们应该了解龙格-库塔法的数值求解思想和数值误差的概念,包括截断误差和稳定性等基本概念,并且要熟悉龙 ...

  9. python解常微分方程龙格库_数值常微分方程-欧拉法与龙格-库塔法

    大三时候在跳蚤市场闲逛,从一位数学院的学长那里买了一些闲书,最近翻出来刚好有李荣华.刘播老师的<微分方程数值解法>和王仁宏老师的<数值逼近>,结合周善贵老师的<计算物理& ...

  10. 常微分方程的数值解-欧拉、四阶龙格-库塔法等C语言

    *题目描述:*求常微分方程y'=y-2x/y && y(0)=1的数值解.解析解为:y=sqrt(1+2x) 编译环境vc++6.0: 代码如下: /* 1.y'=y-2x/y &am ...

最新文章

  1. Repeater控件最后一笔记录高亮显示
  2. 打造安全的网站服务器
  3. ABAP 数据类型的区别和转换
  4. stl之string类用法详细总结
  5. 快速发布发包平台技术论坛
  6. TP6.0 框架的下载,优秀扩展包推荐
  7. 试验设计第二版茆诗松课后题答案_茆诗松数理统计学答案
  8. Fiddler 4——手机抓包工具
  9. 基于DDS的信号源设计
  10. 3D元素周期表源码(已加注释)及分析
  11. Data Driven Modeling 课程
  12. windows11系统 “任务管理器已被管理员禁用”怎么解决
  13. 短视频SDK接入(2)---环境搭建
  14. Gabor滤波器进行纹理分割
  15. 物体检测及分类方法总结(提供了很多论文和代码链接)
  16. 智慧交通怎样利用科技打造一个“最强大脑”
  17. Excel常用数据分析技能(PowerBI)
  18. FMC150-两路250Msps AD、两路500Msps DA FMC子卡模块
  19. 一只仓鼠引发的热议HUAWEI nova 青春版超大内存走红
  20. 软考中级-结构化开发

热门文章

  1. 学前端的记录帖html+css b站千峰19版
  2. mirth connect 3.4 添加java到js代码中
  3. 互亿无线python接口
  4. 15个超级实用web开发实用工具
  5. 骨龄测试软件app_有哪些特别好用的 app 测试工具?
  6. 1-10 图灵测试:机器会思考吗? (笔记)
  7. JavaScript---轮播图片完整代码
  8. java订餐管理系统
  9. jpg格式怎么转换成plt格式的_一种JPG图像到PLT文件的转化方法.pdf
  10. 视频翻译字幕的软件哪个好?看完你就知道了