python 常微分方程_常微分方程数值解法——python实现

研究生课程《应用数值分析》结课了,使用python简单记录了下常微分方程数值解法。

向前欧拉法

{ y i + 1 = y i + h i f ( x i , y i ) y 0 = y ( a ) \left \{ \begin{array}{lr} y_{i+1}=y_i+h_i f(x_i,y_i) \\ y_0=y(a) \end{array} \right .{yi+1​=yi​+hi​f(xi​,yi​)y0​=y(a)​

from pylab import *

import warnings

warnings.filterwarnings('ignore')

求解初值问题

{ y ′ = x − y + 1 0 ≤ x ≤ 1 y ( 0 ) = 1 \left \{ \begin{array}{lr} y'=x-y+1 & 0\leq x \leq 1 \\ y(0)=1 \end{array} \right .{y′=x−y+1y(0)=1​0≤x≤1

该微分方程的精确解为:y = x + e x p ( − x ) y=x+exp(-x)y=x+exp(−x)

def f(t,y):

'''

求解的微分方程,

'''

return t-y+1

def euler_forward(f,a=0,b=1,ya=1,h=0.1,verbose=True):

'''向前欧拉法

Args

----------

f: callable function

需要求解的函数

a: float

求解区间起始值

b:float

求解区间终止值

ya:float

起始条件,ya=y(a)

h:float

求解步长(区间[a,b]n等分)

verbose:logical,default is True

显示迭代结果

Returns

----------

res:list like

返回向前欧拉发求解的结果

'''

# i = 0

res = []

xi = a

yi = ya

while xi<=

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值