网络编程
位置:首页>> 网络编程>> Python编程>> Python数值求解微分方程方法(欧拉法,隐式欧拉)

Python数值求解微分方程方法(欧拉法,隐式欧拉)

作者:Chandler_river  发布时间:2023-06-29 10:45:29 

标签: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.上图

Python数值求解微分方程方法(欧拉法,隐式欧拉)

 当然,想要成功操作,得加上这个

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()

来源:https://blog.csdn.net/Chandler_river/article/details/124295877

0
投稿

猜你喜欢

  • 思路:利用栈实现代数式中括号有效行的的检验:代码:class mychain(object): #利用链表建立栈,链表为父类 length=
  • 无头模式添加,可以让selenium模拟登录,进入到后台运行这里以登录打开公司内网下载数据为例,因为涉及私密问题,所以有些地方我们进行覆盖,
  • 很简单,我们用两个文件就可以实现这一功能:login.htm<% @ Language=JavaScript&nb
  • 本文实例讲述了Python strip()函数的正则表达式实现方法。分享给大家供大家参考,具体如下:题目如下:写一个函数,它接受一个字符串,
  • 本文为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下题目要求是求所有小于n的质数的个数。 求质数方法1: 穷举法:
  • 对MySQL的用户而言,备受诟病的一个问题就是导入SQL备份文件时不能并发,使得导入的效率很低。今天,我们就来改变下思路,尝试一下并发导入的
  • 本文将详细介绍一下如何搭建深度学习所需要的实验环境.这个框架分为以下六个模块显卡简单理解这个就是我们常说的GPU,显卡的功能是一个专门做矩阵
  • 使用ajax获取服务器数据返回给客户端,出现中文乱码。在之前的一个ajax应用中指定codepage=936,将所有页面编码都指定为GB23
  • 本文实例为大家分享了Python实现学生信息管理系统的具体代码,供大家参考,具体内容如下要求描述:学生的信息包括:学号,姓名,年龄,性别,出
  • 1、什么是超链接图标规范超链接图标规范是我根据《Iconize Textlinks with CSS》修改调整完成的。主要是整理出常用到的一
  • 运行环境:IIS脚本语言:VBScript数据库:Access/SQL Server数据库语言:SQL1.概要:不论是在论坛,还是新闻系统,
  • Pycharm是当前进行python开发,尤其是Django开发最好的IDE。GitHub是程序员的圣地,几乎人人都在用。本文假设你对pyc
  • 在经过前面几个部分的操作之后,我们的网页已经图文并茂,具有相当的效果了,但是这对于网页来说还不够,为了网站中的众多网页能够成为一个有机的整体
  • 本文实例讲述了PHP闭包定义与使用。分享给大家供大家参考,具体如下:<?phpfunction getClosure($i){ &nb
  • 最近在做python的web开发(原谅我的多变,好东西总想都学着。。。node.js也是),不过过程中总遇到些问题,不管是web.py还是d
  • 关于本文:本着互联网共享主义精神,特写此文献给建站新手,授人以鱼,不如授人以渔,本文所讲的只是方法和原理,希望大家看完此文,能够从中得到些帮
  • 准确地讲,Python没有专门处理字节的数据类型。但由于str既是字符串,又可以表示字节,所以,字节数组=str。而在C语言中,我们可以很方
  • Python 中的 timeit 模块可以用来测试一段代码的执行耗时,如一个变量赋值语句的执行时间,一个函数的运行时间等。timeit 模块
  • 这里是一个基于GMap2和XML的小例子,数据存在XML文件中 ,这是最简单的模式,却相当地有用。实例的网址是: http://sunjia
  • 前言ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上有许多的变化,我觉得这个版本应该设立为 ThinkPHP 4.0 而不
手机版 网络编程 asp之家 www.aspxhome.com