已知微分方程 dx = x -2y dt dy = x +2y dt x (0)=1, y (0)=0 求出微分方程的符号解,并分别画出 x ( t )与 y ( t )( te [0,1])的解曲线。怎么做python程序
时间: 2023-11-24 12:08:07 浏览: 92
可以使用 Python 的 NumPy 和 Matplotlib 库来求解微分方程和绘制解曲线。
以下是 Python 代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义微分方程
def f(t, y):
x, y = y
return [x-2*y, x+2*y]
# 设置初值条件
y0 = [1, 0]
t0 = 0
t_end = 1
n = 100
# 使用odeint求解微分方程
t = np.linspace(t0, t_end, n)
sol = np.array([y0] + [np.zeros_like(y0) for i in range(len(t)-1)])
for i in range(len(t)-1):
dt = t[i+1] - t[i]
sol[i+1] = sol[i] + np.array(f(t[i], sol[i])) * dt
# 绘制解曲线
plt.plot(t, sol[:,0], label='x(t)')
plt.plot(t, sol[:,1], label='y(t)')
plt.legend()
plt.xlabel('t')
plt.ylabel('x(t), y(t)')
plt.show()
```
运行以上代码,就可以得到 x(t) 和 y(t) 的解曲线。
相关问题
用Python 求,已知微分方程dx/dt=x-2y,dy/dt=x+2y,x(0)=1, y(0)=0 求出微分方程的符号解,
根据已知微分方程:
首先求解特征方程:
λ^2 - 4 = 0
得到 λ1 = 2, λ2 = -2
因此,通解可以表示为:
x(t) = c1 * e^(2t) + c2 * e^(-2t)
y(t) = c3 * e^(2t) + c4 * e^(-2t)
为了求出 c1, c2, c3 和 c4,需要使用初始条件:
x(0) = 1, y(0) = 0
代入可得:
c1 + c2 = 1
c3 + c4 = 0
解得:c1 = 0.5, c2 = 0.5, c3 = -0.5, c4 = 0.5
因此,符号解可以表示为:
x(t) = 0.5 * e^(2t) + 0.5 * e^(-2t)
y(t) = -0.5 * e^(2t) + 0.5 * e^(-2t)
可以使用 Python 代码来验证这个符号解:
```python
import sympy
# 定义符号变量
t = sympy.symbols('t')
x = sympy.Function('x')(t)
y = sympy.Function('y')(t)
# 定义微分方程
dxdt = x - 2 * y
dydt = x + 2 * y
# 求解符号解
sol = sympy.dsolve([sympy.Eq(dxdt, x.diff(t)), sympy.Eq(dydt, y.diff(t))])
# 输出符号解
print(f"x(t) = {sol.rhs[0]}")
print(f"y(t) = {sol.rhs[1]}")
```
运行以上代码即可得到符号解:
x(t) = 0.5*exp(2*t) + 0.5*exp(-2*t)
y(t) = -0.5*exp(2*t) + 0.5*exp(-2*t)
说明我们的符号解是正确的。
用Python 求,已知微分方程dx/dt=x-2y,dy/dt=x+2y,x(0)=1, y(0)=0 求出微分方程的符号解,并分别画出x(t)与y(t)(t∈[0,1]的解曲线
根据已知微分方程:
首先求解特征方程:
λ^2 - 4 = 0
得到 λ1 = 2, λ2 = -2
因此,通解可以表示为:
x(t) = c1 * e^(2t) + c2 * e^(-2t)
y(t) = c3 * e^(2t) + c4 * e^(-2t)
为了求出 c1, c2, c3 和 c4,需要使用初始条件:
x(0) = 1, y(0) = 0
代入可得:
c1 + c2 = 1
c3 + c4 = 0
解得:c1 = 0.5, c2 = 0.5, c3 = -0.5, c4 = 0.5
因此,符号解可以表示为:
x(t) = 0.5 * e^(2t) + 0.5 * e^(-2t)
y(t) = -0.5 * e^(2t) + 0.5 * e^(-2t)
接下来,我们可以使用 Python 中的 matplotlib 库画出 x(t) 和 y(t) 的解曲线:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义微分方程
def f(t, y):
x, y = y
return [x - 2 * y, x + 2 * y]
# 定义初始条件
y0 = [1, 0]
# 使用 scipy.integrate.solve_ivp 求解微分方程
sol = scipy.integrate.solve_ivp(f, [0, 1], y0, t_eval=np.linspace(0, 1, 1000))
# 取出解
x = sol.y[0]
y = sol.y[1]
# 画图
plt.plot(sol.t, x, label='x(t)')
plt.plot(sol.t, y, label='y(t)')
plt.legend()
plt.show()
```
运行以上代码即可得到 x(t) 和 y(t) 的解曲线。
阅读全文