繁体   English   中英

在MATLAB中从已知点到拟合曲线中的点绘制一条线

[英]Plotting a Line from a known point to points in a fitted curve in MATLAB

我有一组数据,其点已在MATLAB中使用2的幂进行绘制和拟合。 我试图在该曲线上绘制3条线作为切线。 这些线中的每条线都从说(x,y)的坐标开始:(2,0)(4,0)(9,0)。

MATLAB是否可以从曲线到第一个已知点绘制线,直到该线与曲线只有一个解(与曲线相切)?

我觉得这需要某种指定的时间间隔,该时间间隔告诉MATLAB逐步移动坐标直到找到最接近的点。 有谁知道这已经完成还是可以完成?

要从不在曲线上的点开始绘制一条与之相切的线。 如果是y = 2 ^ x的凸函数,则只能从曲线下方的点开始(而不是在曲线上方)。

由于您已经有了该点(称为(a,b)),因此需要这样一条直线的斜率。 斜率由值(yb)/(xa)确定,其中(x,y)越过曲线。 具体而言,“前瞻”切线的斜率等于在所有x> a上的(yb)/(xa)的最​​小值。 并且“向后看”切线的斜率等于所有x上的(yb)/(xa)的最​​大值

这是上述方法的非常简单的实现:我使用find将搜索限制为x> a或x <a,并使用minmax来找到斜率。

x = 0:0.01:4;
y = 2.^x;
a = 2; 
b = 3;
k = min((y(find(x>a))-b)./(x(find(x>a))-a));
plot(x,y)
hold on
plot(x,k*(x-a)+b,'r')
k = max((y(find(x<a))-b)./(x(find(x<a))-a));
plot(x,k*(x-a)+b,'g')

切线

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM