显示两条曲线的交点

8 matlab plot intersection graph

如果我有两个不同方程定义的两个图:

x = 0:0.01:30;
y1 = x .^2 + 2;
y2 = x .^3 ;
Run Code Online (Sandbox Code Playgroud)

我将它们描绘成

plot(x, y1, x, y2);
Run Code Online (Sandbox Code Playgroud)

如何以编程方式在交叉点周​​围获得一个小环(如下图所示)?

在此输入图像描述

Eit*_*n T 11

你必须手动找到交点(p x,p y):

idx = find(y1 - y2 < eps, 1); %// Index of coordinate in array
px = x(idx);
py = y1(idx);
Run Code Online (Sandbox Code Playgroud)

请记住,我们在浮点表示中比较两个数字,因此y1 == y2我们必须设置容差.我选择了它eps,但是由你来决定.

要围绕这一点绘制一个圆,你可以计算它的点,然后绘制它们,但更好的方法是用一个爆炸的圆形标记绘制一个点(对于这个建议,可归功于Jonas):

plot(px, py, 'ro', 'MarkerSize', 18)
Run Code Online (Sandbox Code Playgroud)

这样,圆的尺寸不受曲线的轴和纵横比的影响.

x = 0:0.01:30;
y1 = x .^ 2 + 2;
y2 = x .^ 3;

%// Find point of intersection
idx = find(y1 - y2 < eps, 1);
px = x(idx);
py = y1(idx);

figure
plot(x, y1, x, y2, px, py, 'ro', 'MarkerSize', 18)
axis([0 10 0 10])
Run Code Online (Sandbox Code Playgroud)

这应该产生以下情节: 结果

  • @ user57:你也可以'绘制(px,py,'或','MarkerSize',18)`绘制一个圆形的圆,无论绘图的纵横比如何. (2认同)