Решение задач оптимального управления с использованием математической системы MATLAB и пакета имитационного моделирования SIMULINK. Сивохин А.В - 29 стр.

UptoLike

plot(x,y) % построение окружности
hold on
end
% Вывод точки красным маркером
plot(Xpoint,Ypoint, 'or')
hold off
axis square % сохранение одинакового масштаба осей
%
% Файл-функция переменным числом входных и выходных аргументов
%
function [where, varargout] = point(varargin)
% Файл-функция определяет попадание точки с заданными
% координатами (px, py) в круги с центрами
% в (x1,y1), (x2, y2) и т. д. и радиусами R1, R2 и т. д.
% Использование
% where = point(px,py,[x1,y1,R1],[x2,y2,R2],...)
% where
равно 1, если точка попала в какой-либо круг,
% 0, в противном случае
% [where, NC] = point(px,py,[x1,y1,R1],[x2,y2,R2],...)
% NC равно числу кругов, содержащих точку
% [where, NC, Nums] = point(px,py,[x1,y1,R1],[x2,y2,R2],...)
% В вектор Nums записываются номера кругов, содержащих точку
% Выделение координат точки из первых двух ячеек
Xpoint = varargin{1};
Ypoint = varargin{2};
% Нахождение числа заданных кругов
% (число ячеек varargin без первых двух)
Ncircle = length(varargin) - 2;
% Извлечение координат центров и
радиусов кругов
for i = 1:Ncircle
Xcircle(i) = varargin{i+2}(1);
Ycircle(i) = varargin{i+2}(2);
Rcircle(i) = varargin{i+2}(3);
end
% Сначала where=0, т. е. пока нет ни одного нужного круга
where = 0;
% Сначала число кругов, содержащих точку, равно нулю
NC = 0;
% Перебор кругов в цикле
for i = 1:Ncircle
% Вычисление расстояния от точки до центра текущего круга
  plot(x,y) % построение окружности
  hold on
end
% Вывод точки красным маркером
plot(Xpoint,Ypoint, 'or')
hold off
axis square % сохранение одинакового масштаба осей


%
% Файл-функция переменным числом входных и выходных аргументов
%

function [where, varargout] = point(varargin)
% Файл-функция определяет попадание точки с заданными
% координатами (px, py) в круги с центрами
% в (x1,y1), (x2, y2) и т. д. и радиусами R1, R2 и т. д.
% Использование
% where = point(px,py,[x1,y1,R1],[x2,y2,R2],...)
%      where равно 1, если точка попала в какой-либо круг,
%              0, в противном случае
% [where, NC] = point(px,py,[x1,y1,R1],[x2,y2,R2],...)
%      NC равно числу кругов, содержащих точку
% [where, NC, Nums] = point(px,py,[x1,y1,R1],[x2,y2,R2],...)
%      В вектор Nums записываются номера кругов, содержащих точку

% Выделение координат точки из первых двух ячеек
Xpoint = varargin{1};
Ypoint = varargin{2};
% Нахождение числа заданных кругов
% (число ячеек varargin без первых двух)
Ncircle = length(varargin) - 2;
% Извлечение координат центров и радиусов кругов
for i = 1:Ncircle
  Xcircle(i) = varargin{i+2}(1);
  Ycircle(i) = varargin{i+2}(2);
  Rcircle(i) = varargin{i+2}(3);
end
% Сначала where=0, т. е. пока нет ни одного нужного круга
where = 0;
% Сначала число кругов, содержащих точку, равно нулю
NC = 0;
% Перебор кругов в цикле
for i = 1:Ncircle
  % Вычисление расстояния от точки до центра текущего круга