在 MATLAB 中绘制斜率场

Mehak Mubarik 2024年2月15日
  1. 在 MATLAB 中使用 slope_field() 函数绘制一阶普通微分方程的斜率场
  2. 在 MATLAB 中使用 quiver() 函数绘制一阶普通微分方程的斜场
在 MATLAB 中绘制斜率场

包含函数和相应函数的导数的等式方程构成 (ODE) 常微分方程

我们使用斜率字段来阐明我们的微分方程的概念。我们也称 slope 字段为 direction 字段。

在 MATLAB 中使用 slope_field() 函数绘制一阶普通微分方程的斜率场

slope_field() 函数包含三个参数。第一个参数是我们正在处理的 f 函数带有 x 和 y 参数的方程

第二个参数是我们的 x 参数所在的最小和最大限制。第三个参数是我们的 y 参数所在的最小和最大限制。

这些限制通常称为 xy 域。函数 slope_field() 帮助我们绘制方程的斜率场,同时返回我们场的图形句柄。

假设,我们的差分方程是:

$$
\frac {dy} {dx} = \frac {3y} {1-2x}
$$

我们将 x 的域设置为 [-1,12],将 y 设置为 [-4, 5]

这意味着我们的函数是 f(x,y) = 3y/(1-2x)

f = @(x,y) 3*y/(1-2*x);
figure;
slope_field(f,[-1,12],[-4,5]);
xlabel('$x$','interpreter','latex','fontsize',17);
ylabel('$y$','interpreter','latex','fontsize',17);
title('Slope Field for $\displaystyle\frac{dy}{dx}=\frac{3y}{1-2x}$',...
    'interpreter','latex','fontsize',17);

输出:

斜率场函数图 1

在这个例子中,我们使用了默认设置的 slope_field() 函数,并可视化了我们想要的微分方程的斜率场。

在 MATLAB 中使用 quiver() 函数绘制一阶普通微分方程的斜场

函数 quiver() 包含四个参数:

  • X 坐标
  • Y 坐标
  • 由 U 表示的 X 坐标的方向分量。
  • 由 V 表示的 Y 坐标的方向分量。

该函数以箭头形式返回坡度场的图形表示,其坐标为 X 和 Y,方向分量为 U 和 V

假设,我们的微分方程是:

$$ \frac {dx} {dt} = x^5+6xy-3y $$
$$ \frac {dy} {dt} = -8x+sin\left(2yx\right) $$
[x,y] = meshgrid(-3:0.1:3);
dx = x.^5+6*x.*y-3*y;
dy = -8*x+sin(2*x.*y);
r = ( dx.^2 + dy.^2 ).^0.5;
px = dx./r;
py = dy./r;
quiver(x,y,px,py);

输出:

quiver 函数图 2

作者: Mehak Mubarik
Mehak Mubarik avatar Mehak Mubarik avatar

Mehak is an electrical engineer, a technical content writer, a team collaborator and a digital marketing enthusiast. She loves sketching and playing table tennis. Nature is what attracts her the most.

LinkedIn