微分方程组Dx1-x2-cos(t)=0,Dx2-sin(2*t)=0已知当t=0时,x1(0)=0.5,x2(0)=-0.5,求微分方程在t [0,50]上的解。(提示:输出图以t为横坐标,x1、x2为纵坐标)
时间: 2024-03-01 13:54:34 浏览: 18
我们可以使用Python中的SciPy库来求解微分方程组并绘制解的图像。
首先,我们需要定义微分方程组的函数:
```python
from scipy.integrate import solve_ivp
import numpy as np
def fun(t, x):
dx1 = x[0] - x[1] - np.cos(t)
dx2 = np.sin(2*t)
return [dx1, dx2]
```
然后,我们可以使用`solve_ivp`函数来求解微分方程组。在这里,我们使用`RK45`方法,初始时刻为0,终止时刻为50,初始状态为(x1(0), x2(0))=(0.5, -0.5):
```python
sol = solve_ivp(fun, [0, 50], [0.5, -0.5], method='RK45')
```
最后,我们可以使用Matplotlib库来绘制图像:
```python
import matplotlib.pyplot as plt
plt.plot(sol.t, sol.y[0], label='x1')
plt.plot(sol.t, sol.y[1], label='x2')
plt.legend()
plt.xlabel('t')
plt.ylabel('x')
plt.show()
```
完整代码如下:
```python
from scipy.integrate import solve_ivp
import numpy as np
import matplotlib.pyplot as plt
def fun(t, x):
dx1 = x[0] - x[1] - np.cos(t)
dx2 = np.sin(2*t)
return [dx1, dx2]
sol = solve_ivp(fun, [0, 50], [0.5, -0.5], method='RK45')
plt.plot(sol.t, sol.y[0], label='x1')
plt.plot(sol.t, sol.y[1], label='x2')
plt.legend()
plt.xlabel('t')
plt.ylabel('x')
plt.show()
```
运行代码,可以得到微分方程组在t [0,50]上的解的图像。