用python怎样解偏微分方程组_用Python数值求解偏微分方程

1 引言

微分方程是描述一个系统的状态随时间和空间演化的最基本的数学工具之一,其在物理、经济、工程、社会等各方面都有及其重要的应用。然而,只有很少的微分方程可以解析求解,尤其对于偏微分方程,能解析求解的种类更是寥寥可数。更多的微分方程可以采用数值法进行求解,只要精度足够高,就可以满足科学和工程上的需求。

数值求解微分方程的基本思路是先把时间和空间离散化,然后将微分化为差分,建立递推关系,然后利用计算机强大的重复计算能力,快速得到任意格点处的值。Python的Numpy、Scipy工具包可以很好地实现此功能,Matplotlib工具包则可以将求解结果画为非常直观的图形。

接下来,我们先以常微分方程的数值求解为例,引入差分的思想,再将其推广到偏微分方程中。

2 常微分方程的差分求解

一般地,一阶常微分方程可以写为

首先,将连续的变量

离散化,连续的函数

化为离散的序列

,则上述微分方程可以化为差分方程【1】

从而我们得到递推关系

有了递推关系和初始条件以后,就可以利用Python的强大计算功能,得到任意的

的值了,下面我们通过一个具体的例子来说明。

2.1 RC回路放电问题

对于一个

回路,我们有

其中,

分别为电流,电阻,电量和电容,利用

,并定义

,我们得到一个含初始条件的一阶常微分方程

这个方程当然可以解析求解,得到

。另一方面按照差分法,可以得到递推关系

下面我们用Python进行数值求解,并和解析结果进行比较。

import numpy as np

import matplotlib.pyplot as plt</

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值