Python有限差分法
时间: 2023-12-25 07:30:19 浏览: 99
有限差分法是一种数值计算方法,用于近似求解微分方程。它将连续的函数或方程转化为离散的差分方程,通过计算差分方程的近似来近似原方程的解。在Python中,可以使用sympy库来实现有限差分法。
以下是两种Python有限差分法的例子:
1. 一阶向后差分:
```python
import sympy
from sympy import diff, symbols
# 差分的对象
x = 16
k = 2 # 步长
x2 = x - k # 向后
# 方程式
def func(t):
return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t
# 一阶向后差分
def beh_difference():
a_beh_diff = (func(x) - func(x2))/k
beh_error = abs(a_beh_diff - a_true)/a_true
print(f'{x}的一阶向后差分值:{a_beh_diff}')
print(f'{x}的一阶向后差分的误差:{beh_error*100}%')
if __name__ == '__main__':
t = symbols("t")
a_true = diff(func(t), t).subs(t, x) # 真值
beh_difference()
```
2. 二阶中心差分:
```python
import sympy
from sympy import diff, symbols
# 差分的对象
x = 16
k = 2 # 步长
x1 = x + k # 向前
x2 = x - k # 向后
# 方程式
def func(t):
return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t
# 二阶中心差分
def cen_difference():
a_cen_diff = (func(x1)-func(x2))/(k*2)
cen_error = abs(a_cen_diff - a_true)/a_true
print(f'{x}的二阶中心差分值:{a_cen_diff}')
print(f'{x}的二阶中心差分的误差:{cen_error*100}%')
if __name__ == '__main__':
t = symbols("t")
a_true = diff(func(t), t).subs(t, x) # 真值
cen_difference()
```
阅读全文