Python求解微分方程(数值解法)
对于一些微分方程来说,数值解法对于求解具有很好的帮助,因为难以求得其原方程。
比如方程:
但是我们知道了它的初始条件,这对于我们叠代求解很有帮助,也是必须的。
那么现在我们也用Python去解决这一些问题,一般的数值解法有欧拉法、隐式梯形法等,我们也来看看这些算法对叠代的精度有什么区别?
```python
```python
import numpy as np
from scipy.integrate import odeint
from matplotlib import pyplot as plt
import os
#先从odeint函数直接求解微分方程
#创建欧拉法的类
class Euler:
#构造方法,当创建对象的时候,自动执行的函数
def __init__(self,h,y0):
#将对象与对象的属性绑在一起
self.h = h
self.y0 = y0
self.y = y0
self.n = 1/self.h
self.x = 0
self.list = [1]
#欧拉法用list列表,其x用y叠加储存
self.list2 = [1]
self.y1 = y0
#改进欧拉法用list2列表,其x用y1叠加储存
self.list3 = [1]
self.y2 = y0
#隐式梯形法用list3列表,其x用y2叠加储存
#欧拉法的算法,算法返回t,x
def countall(self):
for i in range(int(self.n)):
y_dere = -