在XY平面上给定三点A、B、C,找出另外一点X,使得X到A、B、C三点的距离和为最小.请写一个函数mindist.m解决上述问题,此函数的格式如下:x=mindist(a,b,c),其中a、b、c为三点的坐标,x则是输出点的坐
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/15 00:12:08
在XY平面上给定三点A、B、C,找出另外一点X,使得X到A、B、C三点的距离和为最小.请写一个函数mindist.m解决上述问题,此函数的格式如下:x=mindist(a,b,c),其中a、b、c为三点的坐标,x则是输出点的坐
在XY平面上给定三点A、B、C,找出另外一点X,使得X到A、B、C三点的距离和为最小.请写一个函数mindist.m解决上述问题,此函数的格式如下:x=mindist(a,b,c),其中a、b、c为三点的坐标,x则是输出点的坐标,使用fminsearch命令来求最小值.(1)当a=[4 0],b=[0 3 ],c=[0 0]时,mindist.m所返回的x值是多少?对应的最短距离和是多少?(2)在上小题中,当最短距离和发生时,角度axb,bxc,cxa各是多少?(matlab与系统仿真)
在XY平面上给定三点A、B、C,找出另外一点X,使得X到A、B、C三点的距离和为最小.请写一个函数mindist.m解决上述问题,此函数的格式如下:x=mindist(a,b,c),其中a、b、c为三点的坐标,x则是输出点的坐
学校电脑的matlab没simulink 所以就把第一问做了一下不知道对不对 lz看下
起始点用的是重心;
function [x_best,dist_best]=mindist(a,b,c)
format short;
ax=a(1);bx=b(1);cx=c(1);
ay=a(2);by=b(2);cy=c(2);
x_start=[(ax+bx+cx)/3,(ay+by+cy)/3];
options = optimset('MaxFunEvals',10000,'Display','off');
[x_best,dist_best]=fminsearch(@(x)dist_min(x),x_start,options);
plot(ax,ay,'r+');hold on;plot(bx,by,'r+');hold on;plot(cx,cy,'r+');hold on;
plot(x_best(1),x_best(2),'*');
%subfunction
function y=dist_min(x)
xx=x(1);xy=x(2);
y=sqrt((xx-ax)^2+(xy-ay)^2)+sqrt((xx-bx)^2+(xy-by)^2)+sqrt((xx-cx)^2+(xy-cy)^2);
end
end
第一问算出来x的值
x =
0.6958 0.7511
最短距离
dist =
6.7664