您现在的位置是:网站首页> 编程资料编程资料
Python数值求解微分方程方法(欧拉法,隐式欧拉)_python_
2023-05-25
382人已围观
简介 Python数值求解微分方程方法(欧拉法,隐式欧拉)_python_
不说什么,先上代码
这里先求解形如
的微分方程
1.欧拉法
def eluer(rangee,h,fun,x0,y0): step = int(rangee/h) x = [x0] + [h * i for i in range(step)] u = [y0] + [0 for i in range(step)] for i in range(step): u[i+1] = u[i] + h * fun(x[i],u[i]) plt.plot(x,u,label = "eluer") return u
2.隐式欧拉法
def implicit_euler(rangee,h,fun,x0,y0): step = int(rangee/h) x = [x0] + [h * i for i in range(step)] u = [y0] + [0 for i in range(step)] v = ["null"] + [0 for i in range(step)] for i in range(step): v[i+1] = u[i] + h * fun(x[i],u[i]) u[i+1] = u[i] + h/2 * (fun(x[i],u[i]) + fun(x[i],v[i+1])) plt.plot(x,u,label = "implicit eluer") return u
3.三阶runge-kutta法
def order_3_runge_kutta(rangee,h,fun,x0,y0): step = int(rangee/h) k1,k2,k3 = [[0 for i in range(step)] for i in range(3)] x = [x0] + [h * i for i in range(step)] y = [y0] + [0 for i in range(step)] for i in range(step): k1[i] = fun(x[i],y[i]) k2[i] = fun(x[i]+0.5*h,y[i]+0.5*h*k1[i]) k3[i] = fun(x[i]+0.5*h,y[i]+2*h*k2[i]-h*k1[i]) y[i+1] = y[i] + 1/6 * h * (k1[i]+4*k2[i]+k3[i]) plt.plot(x,y,label = "order_3_runge_kutta") return y
4.四阶runge-kutta法
def order_4_runge_kutta(rangee,h,fun,x0,y0): step = int(rangee/h) k1,k2,k3,k4 = [[0 for i in range(step)] for i in range(4)] x = [x0] + [h * i for i in range(step)] y = [y0] + [0 for i in range(step)] for i in range(step): k1[i] = fun(x[i],y[i]) k2[i] = fun(x[i]+0.5*h,y[i]+0.5*h*k1[i]) k3[i] = fun(x[i]+0.5*h,y[i]+0.5*h*k2[i]) k4[i] = fun(x[i]+h,y[i]+h*k3[i]) y[i+1] = y[i] + 1/6 * h * (k1[i]+2*k2[i]+2*k3[i]+k4[i]) plt.plot(x,y,label = "order_4_runge_kutta") return y
5.上图

当然,想要成功操作,得加上这个
rangee = 1 fun = lambda x,y:y-2*x/y implicit_euler(rangee,0.0001,fun,0,1) order_4_runge_kutta(rangee,0.0001,fun,0,1) order_3_runge_kutta(rangee,0.0001,fun,0,1) eluer(rangee,0.0001,fun,0,1) plt.legend() plt.show()
到此这篇关于Python数值求解微分方程方法(欧拉法,隐式欧拉)的文章就介绍到这了,更多相关Python数值求解微分方程内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- Python matplotlib 动画绘制详情_python_
- Python 标准库 fileinput与文件迭代器_python_
- LyScript实现指令查询功能的示例代码_python_
- Python入门之字符串操作详解_python_
- python实现列车管理系统_python_
- Python面向对象编程之区间的插入详解_python_
- Python中对字典的几个处理方法分享_python_
- python使用pika库调用rabbitmq交换机模式详解_python_
- 利用Python实现自动工作汇报的脚本分享_python_
- python使用pika库调用rabbitmq参数使用详情_python_
