matlab怎么找曲线距离原点最近的点
如何用matlab怎么找曲线距离原点最近的点?这个问题的关键就是要找到原点到曲线上的一点的距离为最短,其最小值问题为
min d =sqrt((x2-x1)²+(y2-y1)²)=sqrt((x2)²+(y2)²) ,这里【x1,y1】为原点
对于最小值问题,可以用fmincom函数来求解其最小值(也就是原点到曲线上的一点最短距离),其实现方法:
1、自定义曲线函数(例如,抛物线x^0.5+y^0.5=1),即
function d=fmincon_fun(k);
x2=k(1);
y2=(1-sqrt(x2))^2; %
x1=0;y1=0;
d=sqrt((x2-x1)^2+(y2-y1)^2);
2、使用 fmincon函数,求得满足最短距离的x值。
k0=0.2; %x的初值
lb=[0];ub=[5]; %x的上下限值
[k,fval,exitflag] = fmincon(@(k) fmincon_fun(k),k0,[],[],[],[],lb,ub)
3、显示曲线上的一点【x2,y2】,及最短距离d
x2=k(1)
y2=(1-sqrt(a))^2
d=fval
4、运行结果
原点【0,0】到曲线(x^0.5+y^0.5=1)上的一点【0.25,0.25】的距离为最短。