Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР2 майн.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
693 Кб
Скачать
☆
  1. Выполнение работы

Файлы-процедуры для четкой логики

Файл-процедура для четкой логики: определяет минимум

function [X1,Y1,i,xmax1,ymax1,ymin,xmin]=findmin_ch(i,Fx,Fy);

% Вызов файла-процедуры для нахождения локального минимума

% (xmax1,ymax1) - координаты 1-го локального максимума

% (ymin,xmin) - координаты локального минимума

% X1,Y1 - длина X1 i Y1

% Fx,Fy - исследуемые точки массива,

% полученные из загружаемых файлов

cnt=i; %начало выполнения функции

fl1=0; %flag-min,станет равно 1 когда найдется min

fl2=0; %flag-max,станет равно 1 когда найдется max

DX=Fx(2)-Fx(1); %приращение

Yd=[]; %массив для хранения значений производной

Yd=diff(Fy)/DX; %определение производной

while or(fl1==0,fl2==0)==1 %выполнять, пока не найден максимум или минимум

if and(and(Yd(i)>=0,Yd(i+1)<0),fl2==0)==1 %если производная в i-й точке >0,

%а в i+1-й точке <0 и локальный максимум не найден

xmax1=Fx(i); %записать значение отсчета

ymax1=Fy(i); %и координату

fl2=1; %установить флаг максимума 1

end;

if and(and(Yd(i)<=0,Yd(i+1)>0),fl1==0)==1 %нахождение минимума

%если производная в i-й точке >0,

%а в i+1-й точке <0 и fl1==0

% то

xmin=Fx(i); %записать значение отсчета

ymin=Fy(i); %и координату

fl1=1; %установить флаг минимума 1

end;

i=i+1;

end;

i=i-1; %возврат на шаг(для

%фиксации точки минимума)

X1=(xmin-xmax1); %расстояние между абсциссами минимума и левого максимума

Y1=ymax1-ymin; %расстояние между ординатами минимума и левого максимума

Файл-процедура для четкой логики: определяет максимум

function [X2,Y2,i,ymax2,xmax2]=findmax_ch(i,Fx,Fy);

% Вызов файла-процедуры для нахождения локального максимума

% (ymax2,xmax2) - координаты 2 локального максимума

% X2,Y2 – длина X2 и Y2

% Fx,Fy - исследуемые точки массива,

% полученные из загружаемых файлов

cnt=i; %начало выполнения функции

fl=0; %флаг максимума

%станет равно 1 когда найдется максимум

DX=Fx(2)-Fx(1); %приращение

Yd=[]; %массив для хранения значений производной

Yd=diff(Fy)/DX; %определение производной

while fl==0 %выполнять, пока flag max флаг максимума '0'

if and(Yd(i)>=0,Yd(i+1)<0)==1 %если производная в i-й точке >0,

%а в i+1-й точке <0, то

xmax2=Fx(i); %записать значение отсчета

ymax2=Fy(i); %и координату

fl=1; %установить флаг максимума 1

break;

end;

i=i+1;

end;

X2=xmax2-Fx(cnt); %расстояние между абсциссами максимума и минимума

Y2=ymax2-Fy(cnt); %расстояние между ординатами максимума и минимума

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]