臧雁德 发表于 2023-9-23 22:39:17

分别使用python与matlab求解图中微分方程组

分别使用python与matlab求解图中微分方程组

Mike_python小 发表于 2023-9-23 22:39:18

Python中求解微分方程组的常用库是SciPy库中的odeint函数。下面是使用Python求解该微分方程组的代码:

解微分方程组

python
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

# 定义微分方程组
def dydt(y, t):
    y1, y2 = y
    dy1dt = y2
    dy2dt = -y1
    return

# 定义初值和时间范围
y0 = # 初值
t = np.linspace(0, 10, 101)# 时间范围

# 求解微分方程组
sol = odeint(dydt, y0, t)

# 绘制解的图像
plt.plot(t, sol[:, 0], 'b', label='y1(t)')
plt.plot(t, sol[:, 1], 'g', label='y2(t)')
plt.legend(loc='best')
plt.xlabel('t')
plt.grid()
plt.show()


代码中,首先定义了微分方程组$\left\{\begin{aligned}y_1'(t)&=y_2(t)\\y_2'(t)&=-y_1(t)\end{aligned}\right.$,并将其表示为函数dydt(y, t)的形式。然后,定义了初值和时间范围,并调用odeint函数求解微分方程组的解。最后,绘制了解的图像。

Matlab中求解微分方程组的常用函数是ode45函数。下面是使用Matlab求解微分方程组的代码:

解微分方程组

matlab
% 定义微分方程组
function dydt = myodefun(t, y)
    dydt = zeros(2, 1);
    dydt(1) = y(2);
    dydt(2) = -y(1);
end

% 定义初值和时间范围
tspan = ;
y0 = ;

% 求解微分方程组
= ode45(@myodefun, tspan, y0);

% 绘制解的图像
plot(t, y(:, 1), 'b', 'LineWidth', 2);
hold on;
plot(t, y(:, 2), 'g', 'LineWidth', 2);
grid on;
xlabel('t');
legend('y1(t)', 'y2(t)');


代码中,首先定义了微分方程组$\left\{\begin{aligned}y_1'(t)&=y_2(t)\\y_2'(t)&=-y_1(t)\end{aligned}\right.$,并将其表示为函数myodefun的形式。然后,定义了初值和时间范围,并调用ode45函数求解微分方程组的解。最后,绘制了解的图像。

以上是Python和Matlab求解微分方程组的简单示例,可以根据实际情况调整微分方程组、初值和时间范围,以获取所需的解。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
回答可能有误,多多谅解!

isdkz 发表于 2023-9-23 22:39:29

在Python中,可以使用SciPy库中的odeint函数来求解微分方程。例如,假设我们要求解以下微分方程组:

dy1/dt = -y1 + 2*y2
dy2/dt = -3*y1 + 4*y2

可以使用以下代码:

from scipy.integrate import odeint
import numpy as np

def model(y, t):
    y1, y2 = y
    dydt = [-y1 + 2*y2, -3*y1 + 4*y2]
    return dydt

# 初始条件
y0 =

# 时间点
t = np.linspace(0, 5, 101)

# 求解微分方程
y = odeint(model, y0, t)

# 打印结果
print(y)


在Matlab中,可以使用ode45函数来求解微分方程。例如,假设我们要求解以下微分方程组:

dy1/dt = -y1 + 2*y2
dy2/dt = -3*y1 + 4*y2

可以使用以下代码:

function dydt = model(t, y)
    dydt = [-y(1) + 2*y(2); -3*y(1) + 4*y(2)];
end

% 初始条件
y0 = ;

% 时间区间
tspan = ;

% 求解微分方程
= ode45(@model, tspan, y0);

% 打印结果
disp(y)
页: [1]
查看完整版本: 分别使用python与matlab求解图中微分方程组