如图左所示的微分方程组及其势函数,哈密顿函数公式,如何在MATLAB中画出图右所示的哈密顿系统相平面图

以下答案基于ChatGPT与GISer Liu编写:
在MATLAB中绘制相平面图可以使用odephase函数,具体步骤如下:
定义微分方程组及其势函数
根据题目所给的微分方程组,可以定义一个函数,用于计算微分方程组的右端项。同时,也需要定义势函数。
计算哈密顿函数
根据题目所给的哈密顿函数公式,可以定义一个函数,用于计算哈密顿函数。
求解微分方程组
使用ode45函数求解微分方程组,得到相空间中的轨迹。
绘制相平面图
使用odephase函数绘制相平面图,将相空间中的轨迹画在相平面上。
下面是具体的MATLAB代码实现:
% 定义微分方程组及势函数
function dy = hamiltonian_sys(t, y)
% y = [x; p]
omega = 2;
dy = [y(2); -omega^2 * y(1) - 2 * y(1)^3];
end
function U = hamiltonian_potential(x, p)
U = 0.5 * x^2 + 0.5 * p^2 - 0.5 * (x^2)^2;
end
% 定义哈密顿函数
function H = hamiltonian(x, p)
H = 0.5 * x^2 + 0.5 * p^2 + (x^2)^2;
end
% 求解微分方程组
[t, y] = ode45(@hamiltonian_sys, [0, 10], [1, 0]);
% 绘制相平面图
odephase(@hamiltonian_potential, [-2, 2], [-2, 2]);
hold on;
plot(y(:, 1), y(:, 2), 'LineWidth', 2);
xlabel('x');
ylabel('p');
title('Hamiltonian System Phase Portrait');