有限差分法求解含分段变量的常微分方程代码
时间: 2023-07-02 15:12:15 浏览: 84
以下是用有限差分法求解含分段变量的常微分方程的 Python 代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义常微分方程
def f(x, y, a):
if x < a:
return x + y
else:
return x - y
# 定义有限差分法求解函数
def finite_difference(x_range, y0, a, h):
n = int((x_range[1] - x_range[0]) / h) + 1
x = np.linspace(x_range[0], x_range[1], n)
y = np.zeros(n)
y[0] = y0
for i in range(n - 1):
y[i+1] = y[i] + h * f(x[i], y[i], a)
return x, y
# 设置参数并调用有限差分法求解函数
x_range = [0, 5]
y0 = 1
a = 3
h = 0.01
x, y = finite_difference(x_range, y0, a, h)
# 绘制图像
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.show()
```
在此代码中,我们通过定义 `f(x, y, a)` 函数来表示含分段变量的常微分方程。在 `finite_difference(x_range, y0, a, h)` 函数中,我们通过有限差分法求解常微分方程,并返回解的数组。最后,我们绘制得到的解的图像。
阅读全文