一阶微分方程组c语言编程,一阶常微分方程数值解的C语言编程实现.doc

一阶常微分方程数值解的C语言编程实现

现实问题与分析学科自身的发展,使得微积分及其涉及领域内出现了寻求数值解的诸多问题(在其他数学领域亦是如此)。这是由于多种原因造成的,比如现实问题中函数表达式往往并不存在,即使可以拟合也并没有得到表达式的必要且表达式的讨论可能出现较大误差。再比如,很多复杂函数或函数约束条件很难使用甚至不能使用一般的分析工具,像微分方程存在不可积、不可解的大量实例。所以数值解的相关理论不断产生、完善。特别是现代以来,计算机的迅速发展为解决数值解问题提供了算法的计算机程序实现可能,并提供了更多的求解思路。Mathematica,MATLAB,Maple是最常用的数学软件,对应于Mathematica语言,MATLAB语言,Maple语言。当然,一般使用C语言也可以比较便捷地解决很多分析学科问题的数值解。

举一元函数微积分学一些熟知的数值解例子:数值导数常见有图解微分法、差商公式、插值多项式、拉格朗日公式(拉格朗日插值公式得来)、马尔科夫公式(牛顿插值公式得来)、等距公式、三次样条函数等等,数值积分有内插求积公式(最为基础的有梯形法、辛普森公式(抛物线法))、高斯型求积公式等等。

这里,考察一阶导数已解出的一阶常微分方程的初值问题的数值解。问题给出:

常微分方程数值解问题中,一阶常微分方程与一阶常微分方程组(一阶导数均解出形式)的数值解法是最基础的,也是非常常用的。一般数值解法有欧拉方法及改进的欧拉方法、龙格-库塔方法、阿达姆斯方法。现给出前两种方法,它们都是单步法,而阿达姆斯法是线性多步法,各有优缺点(此外计算机上常会加以使用浮动步长法,如自动变步长计算方法)。单步法的通用表达式是拉格朗日中值定理的形式(差分代替微分是一种重要的近似思想,反过来用微分代替差分亦重要):

欧拉方法:

改进的欧拉方法(预报校正法):

龙格-库塔方法:

二阶龙格-库塔方法:

四阶龙格-库塔方法:

容易看出,欧拉方法及改进的欧拉方法都是特殊的龙格-库塔方法。对于龙格-库塔公式,常数的确立是通过单、双变量泰勒级数展式推理得到的,不再叙述。另外,微分方程数值解的相容性条件、收敛性问题、精度判断、误差分析等内容也不叙述。只说明龙格-库塔方法通常使用上述的二阶、四阶形式。下面给出一例:

这是变量可分离方程,容易积分得到:

现写出该一阶常微分方程数值解法的一个C语言程序,输出结果是分别使用欧拉方法、预报

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值