MATLAB中的交点

MATLAB中的交点,matlab,plot,graph,intersection,Matlab,Plot,Graph,Intersection,我怎么能 在MATLAB中绘制两条曲线的交点 并以编程的方式获得它的数学形式 为简单起见,我采用了两条非常基本的曲线: y=x y=cos(x) 我能够绘制曲线,但无法获得交点。请参见屏幕截图: 我已经尝试过有问题的解决方案,但没有一个对我有效。尊重用户。如果我可以问一下,您的目标是获得与这两个函数相交的精确点,或者是距离相交点最近的点?(后者使用近似值) 这里有一个想法: 1)如果离散化:x=0:0.05:2不包含交点,可以使用Matlab中的intersect函数 比如说 inte

我怎么能

  • 在MATLAB中绘制两条曲线的交点
  • 并以编程的方式获得它的数学形式
为简单起见,我采用了两条非常基本的曲线:

  • y=x
  • y=cos(x)
我能够绘制曲线,但无法获得交点。请参见屏幕截图:


我已经尝试过有问题的解决方案,但没有一个对我有效。

尊重用户。如果我可以问一下,您的目标是获得与这两个函数相交的精确点,或者是距离相交点最近的点?(后者使用近似值)

这里有一个想法:

1)如果离散化:
x=0:0.05:2
不包含交点,可以使用Matlab中的
intersect
函数

比如说

intersect([1,2,3],[4,3,1])
将返回一个向量,该向量包含两个元素
1
3
,即这两个向量的交点

求交点就是求点x,使得y1(x)=y2(x)。所以应用

yin = intersect(y1,y2);
在此之后,由于您的
x
已排序,您应该检查
yin
中的值,该值在
y1
y2
中都具有相同的索引

满足该条件的值是y轴上的交点

2)如果您的
x
不包括x轴上的交点,则使用数值方法。查找
y2-y1
的根。(或g(x)=y2(x)-y1(x)=0的点,因为这与y1(x)=y2(x)相同)

你可以先试试这些。希望这将是有用的。谢谢。

试试
idx=find((y2-y1)==min(abs(y2-y1)),1)
。这并不意味着您的函数如Arief所解释的那样是真正交叉的,但会找到它们最接近交叉的位置。