




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、求解常微分方程组初值问题的龙格库塔法分析及其C代码1、概 述由高等数学的知识可知,一些特殊类型的常微分方程(组)能够求出给定初始值的解析解,而在科学与工程问题中遇到的常微分方程(组)往往是极其复杂的,要想求得其给定初始值的解析解就变得极其困难,甚至是得不到解析解。尽管如此,在研究实际问题时,往往只需要获得若干点上的近似值就行了,这就说明研究常微分方程(组)的数值解法是很有必要的。求解常微分方程(组)的数值解法有多种,比如欧拉法、龙格库塔法、线性多步法等等,其中龙格库塔法是这几种方法中比较常用的,因为其计算精度较高且具有自启动的特点。对于用龙格库塔法求解单个常微分方程和求解常微分方程组的思路基本
2、相似(注意一点一个微分方程组是常微分方程组即表明微分方程中的各阶导数都是对同一个变量求导,例如可以把各个量对时间求导得到一个常微分方程组,如果一个微分方程组中的有对不同变量的导数那么这个方程组就成了偏微分方程组),都是根据泰勒展开得到其迭代计算形式,其基本思想都是按照一定原则求取当前点附近一些点的斜率,通过这些斜率的线性组合作为当前点处的斜率,进行递推求解。2、数学模型2.1 常微分方程初值问题的数学模型 (1)式中为的已知函数,为给定的初始值。常微分方程的数值解法的任务就是要求出函数值在微分自变量取如下序列:时的值的近似值,一般情况下都采取等距结点的方式,即:,其中为相邻两结点的距离,称为步
3、长。2.2 常微分方程组初值问题的数学模型 (2)式中为的已知函数,为初始值,利用数值解法求解常微分方程组的任务就是求出函数值在微分自变量取如下序列:时其值的近似值3 龙格库塔法的迭代形式龙格库塔法的迭代形式推导在相关的数值分析书籍中均有详细的讲解,这里就不进行推导直接给出常用的四阶龙格库塔法的形式作为例子。3.1 单个常微分方程的迭代形式对应于2.1节的数学模型有: (3)通过上面的迭代形式可知实际上就是如下四个点 (点1) (点2) (点3) (点4)处函数关于的斜率。这四个点的确定又是一环扣一环的,比如要求得点2的位置,就必须先求得在点1处的斜率3.2 常微分方程组的迭代形式对应于2.2
4、节的数学模型有: (4)对比于单个微分方程的龙格库塔迭代形式,可以看出整个求解的过程完全一样,只不过在每步算斜率的时候需要一次性的解算完(方程的个数)个,即是要把的斜率一次性算完,才能继续往下递推运算。在求解常微分方程组初值问题的情况下,可将常微分方程组写成向量的形式,这样更加便于理解,下面用图形来展示整个求解过程:图1 龙格库塔法的求解过程沿着箭头的方向依次解出各个向量,即可依次递推下去 ,下面的表示为点处的斜率,处情形类似。4 算 例4.1 问题描述利用四阶龙格库塔法求解初值问题取步长为。4.2 问题分析 为了和第3节的数学模型对应,我们令,则上面的问题就变为和前面的模型一样的形式:4.3
5、 C程序代码#include #include #define M 2/ 维数,方程组中方程的个数/ 算斜率的右端函数void RightSlopeFun( double *pRightK,/ 算出来的右端斜率项out double iX, / 计算点的微分自变量值 double *iY / 计算点的函数初始值 ) pRightK0 =iX*iY0-iY1;pRightK1 =(iX+iY0)/iY1;/ 龙格库塔法解算程序double LgktSoulution( double *pOY, / 返回函数值out double iX, / 积分自变量输入值 double *iY, / 初始值
6、double h, / 单步步长 int Count=1 / 解算步数,默认形参为1,调用时不给此/ 参数赋值,则只解算一步 ) double K1M; / 第一个斜率double K2M; / 第二个斜率double K3M; / 第三个斜率double K4M; / 第四个斜率double tempYM; / 保存Y的中间值的临时空间int i; / 计数器 double tempX; / 临时保存x的空间tempX=iX; / 载入初始的x值 for (i=0;i0)RightSlopeFun(K1,tempX,tempY); / 解算斜率K1tempX += h/2;for (i=0;
7、iM;i+)pOYi=tempYi+K1i*h/2; RightSlopeFun(K2,tempX,pOY); / 解算斜率K2for (i=0;iM;i+)pOYi=tempYi+K2i*h/2;RightSlopeFun(K3,tempX,pOY); / 解算斜率K3tempX += h/2;for (i=0;iM;i+)pOYi=tempYi+K3i*h;RightSlopeFun(K4,tempX,pOY); / 解算斜率K4for (i=0;iM;i+)/ 得到函数值pOYi=tempYi+h*(K1i+2*K2i+2*K3i+K4i)/6;/ 推算了一步的函数值,此处可以对该数据进
8、行相应的操作/ 递推数据更新Count-;if (Count=0)break;for (i=0;iM;i+) tempYi=pOYi; return tempX;void main() FILE *fp=fopen(d:lgktData.txt,a); double iyM; double ix; int i; iy0=1; iy1=2; ix=0; for(i=0;i500;i+) ix=LgktSoulution(iy,ix,iy,0.001); fprintf(fp,%-8.3f%-8.3f%-8.3fn,ix,iy0,iy1); fclose(fp);4.4 结果分析在运行完毕以上的C
9、程序后,在D盘的根目录下就会生成名为lgktData.txt的文件,这个文件中就保存了龙格库塔数值解法的数据,我们利用这个数据在MATLAB中绘图,在MATLAB的命令窗口或者M文件中输入如下代码clear clcx,y1,y2=textread(d:lgktData.txt,%.3f %.3f %.3f);plot(x,y1,r,x,y2,g);便可得到如下的图形:从以上运用的四阶龙格库塔法求解常微分方程组的程序中,我们可以看出,只需要根据实际需要求解的模型,设定好方程组的个数M,将计算斜率的函数RightSlopeFun实现即可,求解函数LgktSoulution的内容完全是固定不变的,除非你要使用其他形式龙格库塔迭代形式;用龙格库塔法求解单个微分方程和求解微分方程组的思路和计算流程完全一样,只是在问题规模上有差异。5 小 结本文将单个常微分方程初值问题的龙格库塔求解方法和常微分方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国环境金融行业市场深度调研及投资策略与投资前景预测研究报告
- 2025-2030年中国牙科注射器行业市场现状供需分析及投资评估规划分析研究报告
- 2025年案例分析罐头
- 2025-2030年中国液体塑料瓶行业市场前景分析及发展趋势与投资战略研究报告
- 2025-2030年中国汽车物流行业市场发展现状分析及发展趋势与投资前景研究报告
- 教学课件深度制作体会
- 乌鸦喝水课件教学反思
- 构建特色人文素养教育体系的策略及实施路径
- if语句教学课件
- 水准仪教学课件
- 2025年山东省烟台市中考真题数学试题【含答案解析】
- 2025年山东将军烟草新材料科技有限公司招聘笔试冲刺题(带答案解析)
- 2025年高考真题-语文(全国一卷) 无答案
- 2025年外研版(2024)初中英语七年级下册期末考试测试卷及答案
- 兵团开放大学2025年春季《公共关系学》终结考试答案
- 2024年贵州贵州贵安发展集团有限公司招聘笔试真题
- 2025年中考语文押题作文范文10篇
- 拆迁名额转让协议书
- 2025年初中学业水平考试地理试卷(地理学科核心素养)含答案解析
- 《重大电力安全隐患判定标准(试行)》解读与培训
- 《人工智能基础与应用》课件-实训任务18 构建智能体
评论
0/150
提交评论