Как построить задачу поиска оптимальной точки? Есть 3 точки с коордниатами долготы и широты. Есть радиус окружности вокруг этих точек. Нужно построить модель для поиска точки, которая найдется в месте покрытия трех окружностей.
%[longtitude, Latitude ]
A = [17 24 18; 53 50 58];
B = [17 27 21; 53 56 45];
C = [17 43 24; 53 52 40];
radius = [6.53; 9.51; 14.76];
пробовал решить таким способом:[x_opt fval exitflag output] = fminunc(@optFunction, [30; 30])
где optFunction.m, это function f = optFunction(x)
%[dlugosc/ longtitude, szerokosc/Latitude ]
A = [17 24 18; 53 50 58];
B = [17 27 21; 53 56 45];
C = [17 43 24; 53 52 40];
d = [6.53; 9.51; 14.76];
calcVec = [1 1/60 1/3600];
latlon1 = [ A(2,:)*calcVec' A(1,:)*calcVec'];
latlon2 = [ B(2,:)*calcVec' B(1,:)*calcVec'];
latlon3 = [ C(2,:)*calcVec' C(1,:)*calcVec'];
f = (r1(latlon1, x, d))^2 + (r2(latlon2, x, d))^2 + (r3(latlon3, x, d))^2;
end
function r1x = r1(latlon1, latlonx, d)
r1x = (lldistkm(latlon1, latlonx))^2 - (d(1))^2;
end
function r2x = r2(latlon2, latlonx, d)
r2x = (lldistkm(latlon2, latlonx))^2 - (d(2))^2;
end

function r3x = r3(latlon3, latlonx, d)
r3x = (lldistkm(latlon3, latlonx))^2 - (d(3))^2;
end
а файл lldistkm.m, это скачаный файл с www.mathworks.com/matlabcentral/fileexchange/38812...
а его код:function [d1km d2km]=lldistkm(latlon1,latlon2)
% format: [d1km d2km]=lldistkm(latlon1,latlon2)
% Distance:
% d1km: distance in km based on Haversine formula
% (Haversine: http://en.wikipedia.org/wiki/Haversine_formula)
% d2km: distance in km based on Pythagoras’ theorem
% (see: http://en.wikipedia.org/wiki/Pythagorean_theorem)
% After:
% http://www.movable-type.co.uk/scripts/latlong.html
%
% --Inputs:
% latlon1: latlon of origin point [lat lon]
% latlon2: latlon of destination point [lat lon]
%
% --Outputs:
% d1km: distance calculated by Haversine formula
% d2km: distance calculated based on Pythagoran theorem
%
% --Example 1, short distance:
% latlon1=[-43 172];
% latlon2=[-44 171];
% [d1km d2km]=distance(latlon1,latlon2)
% d1km =
% 137.365669065197 (km)
% d2km =
% 137.368179013869 (km)
% %d1km approximately equal to d2km
%
% --Example 2, longer distance:
% latlon1=[-43 172];
% latlon2=[20 -108];
% [d1km d2km]=distance(latlon1,latlon2)
% d1km =
% 10734.8931427602 (km)
% d2km =
% 31303.4535270825 (km)
% d1km is significantly different from d2km (d2km is not able to work
% for longer distances).
%
% First version: 15 Jan 2012
% Updated: 17 June 2012
%--------------------------------------------------------------------------
radius=6371;
lat1=latlon1(1)*pi/180;
lat2=latlon2(1)*pi/180;
lon1=latlon1(2)*pi/180;
lon2=latlon2(2)*pi/180;
deltaLat=lat2-lat1;
deltaLon=lon2-lon1;
a=sin((deltaLat)/2)^2 + cos(lat1)*cos(lat2) * sin(deltaLon/2)^2;
c=2*atan2(sqrt(a),sqrt(1-a));
d1km=radius*c; %Haversine distance
x=deltaLon*cos((lat1+lat2)/2);
y=deltaLat;
d2km=radius*sqrt(x*x + y*y); %Pythagoran distance
end

21 Авг 2019 в 06:16
221 +1
0
Ответы
1

Для построения задачи поиска оптимальной точки, которая находится в месте пересечения трех окружностей, необходимо определить функцию, которая будет минимизировать расстояние между заданными точками и оптимальной точкой в пространстве долготы и широты.

В вашем коде вы используете функцию lldistkm, которая вычисляет расстояние между двумя точками на сфере с помощью формулы Хаверсина. Затем вы определяете функции r1, r2 и r3, которые вычисляют квадрат расстояния между данной точкой и каждой из трех заданных точек с учетом радиусов окружностей.

Для поиска оптимальной точки в месте пересечения трех окружностей можно воспользоваться методом наименьших квадратов, который будет минимизировать сумму квадратов расстояний между заданными точками и оптимальной точкой. Вам нужно определить функцию, которую вы будете минимизировать, и использовать функцию fminunc для нахождения оптимальной точки.

Проверьте корректность реализации функций r1, r2 и r3, а также убедитесь, что ваша целевая функция optFunction правильно определена и обрабатывает данные точки и радиусы окружностей. При правильной реализации и настройке параметров метода наименьших квадратов вы сможете найти оптимальную точку, которая находится в месте пересечения трех окружностей.

20 Апр в 13:21
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 017 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир