用numpy库求解微分方程 $$y'' - 2y' + 3y = x\cos x$$
时间: 2023-12-30 10:05:53 浏览: 166
Python入门教程优质程序填空阅读填空程序试题.doc
可以使用numpy库中的odeint函数求解微分方程。首先将二阶微分方程转化为一阶微分方程组,设 $z=y'$,则原方程可以写成以下形式:
$$\begin{cases}y' = z \\ z' = 2z - 3y + x\cos x\end{cases}$$
然后,我们可以使用odeint函数对上述微分方程组进行求解。代码如下:
```python
import numpy as np
from scipy.integrate import odeint
def f(y, x):
# y[0] = y, y[1] = z
dydx = [y[1], 2*y[1] - 3*y[0] + x*np.cos(x)]
return dydx
# 初始条件
y0 = [0, 0]
# 定义x范围
x = np.linspace(0, 10, 101)
# 求解微分方程
sol = odeint(f, y0, x)
# 取出y值
y = sol[:, 0]
# 绘制图像
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
运行上述代码,即可得到微分方程的解。
阅读全文