你会matlab的,10个已知点求一未知点坐标,使该未知点点到其他点的距离之和最短
①18°10'51.3"N66°44'10.5"W18.180919,-66.736251②18°20'28.7"N66°59'19.6"W18.341304,-66.9...
① 18°10'51.3"N 66°44'10.5"W
18.180919, -66.736251
② 18°20'28.7"N 66°59'19.6"W
18.341304, -66.988775
③ 18°16'17.1"N 66°42'59.2"W
18.271409, -66.716455
④ 18°26'30.0"N 66°37'47.2"W
18.441658, -66.629787
⑤ 18°25'58.3"N 66°28'32.4"W
18.432872, -66.475671
这是坐标,这是坐标算距离的公式
from geopy.distance import geodesic
print(geodesic((-65.65486,18.337203), (-66.163382,18.396728)).m) 展开
18.180919, -66.736251
② 18°20'28.7"N 66°59'19.6"W
18.341304, -66.988775
③ 18°16'17.1"N 66°42'59.2"W
18.271409, -66.716455
④ 18°26'30.0"N 66°37'47.2"W
18.441658, -66.629787
⑤ 18°25'58.3"N 66°28'32.4"W
18.432872, -66.475671
这是坐标,这是坐标算距离的公式
from geopy.distance import geodesic
print(geodesic((-65.65486,18.337203), (-66.163382,18.396728)).m) 展开
1个回答
展开全部
lsqnonlin可以求解带约束的多函数多变量的最小值问题。你的问题没有约束,用一个简单明了的fminumc函数就可以了。具体如下: 先建立函数文件distance.m求距离。 distance.m的内容为: function zx=distance(x) xf=x(1); yf=x(2); x(1)=1340;x(2)=1656; x(3)=2370 ;x(4)=2339.8; x(5)=1562 ;x(6)=1948 ;x(7)=1433; x(8)=1765; x(9)=1275;x(10)=1096; y(1)=2547 ;y(2)=2667; y(3)=3782 ;y(4)=3600.7; y(5)=4298; y(6)=2074 ;y(7)=3143; y(8)=2924; y(9)=2427 ;y(10)=1893; fun=zeros(10,1); for i=1:10 fun(i)=sqrt((x(i)-xf)*(x(i)-xf)+(y(i)-yf)*(y(i)-yf)); end zx=fun(1)+fun(2)+fun(3)+fun(4)+fun(5)+fun(6)+fun(7)+fun(8)+fun(9)+fun(10); 保存distance.m 在command window中输入(或另建立一个m文件输入): x0 = [2000,3500]; %随意猜测一个起始值 [x,fval] = fminunc(@distance,x0) 得到结果: x = 1634.9 2795.2 fval = 7258.1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询