Реферат по предмету "Программирование и компьютеры"


Поиск минимума функций нескольких переменных методом покоординатного спуска

1. Анализ модели и алгоритм решения задачи Многомерная оптимизация заключается в поиске экстремумов функции многих переменных F(x1,x2,x3). Наиболее простым является метод покоординатного спуска, и его разновидность спиральный покоординатный спуск.
Метод покоординатного спуска заключается в поочередном поиске минимума по координате х1, затем х2 и т.д. После нахождения точки минимума по координате х1 переходим к нахождению точки минимума по координате х2 и т.д. Поиск ведется с одинаковым шагом, который уменьшается после нахождения всех значений . Таким образом, алгоритм реализации этого метода подобен алгоритму метода поразрядного приближения и лишь дополняется циклом задания переменных х1,х2 и т.д., внутри которого оценивается погрешность нахождения для каждой переменной. Метод спирального покоординатного спуска отличается от рассмотренного выше лишь тем, что шаг H меняется каждый раз при переходе от поиска минимума по одной переменной к поиску минимума по другой переменной. В трехмерном пространстве это напоминает спуск во впадину по спирали. Обычно этот метод дает некоторое сокращение времени поиска. Алгоритм решения: Метод покоординатного спуска N-количество переменных E-точность результата H- начальный шаг поиска A[i]- массив начальных значений X[i] B,C,L-вспомогательные переменные. Func- заданная функция Блок-схема: ?????? Реализация задачи в Turbo Pascal: Этапы решения: · создание UNIT- модуля · создание рабочей программы. UNIT –модуль состоит из трех функций и двух процедур. Процедуры реализуют алгоритм поиска минимума функции многих переменных методом покоординатного спуска (pmmks) и методом спирального покоординатного спуска(pmmsks). Функции (f1,f2,f3) возвращают значения: Программа представлена в виде меню выбора метода поиска и функции:
После выбора метода появляется меню выбора функции Далее, в зависимости от выбранного метода и функции идет запрос начальных значений, точности и т.п., а также поиск минимума функции в отдельном окне. Например: поиск минимума методом покоординатного спуска функции №1 Тестирование программы: Функция Метод покоординатного спуска: Начальный шаг поиска 0,5 Точность 0,0001 х1=х2=х3=0,5 Fmin:=3.735451794 X1m:=0.999974 X2m:=1.999997 X3m:=2.99999 Метод спирального покоординатного спуска: Начальный шаг поиска 0,5 Точность 0,0001 х1=х2=х3=0,5 Fmin:=3.735451794 X1m:=1.000032 X2m:=2.000032 X3m:=3.000032 Код программы: Модуль PMIN unit PMIN; interface uses CRT; type mas=array[1 20] of real; function f1(a1,a2,a3:real):real; function f3 (a1,a2:real):real; function f2(a1,a2:real):real; procedure pmmks(nom:integer); procedure pmmsks(nom:integer); implementation function f1(a1,a2,a3:real):real; begin f1:=exp(a1+a2+a3)/(a1*sqr(a2)*sqr(a3)*a3); end; function f2(a1,a2:real):real; begin f2:=sqr(sqr(a1)+sqr(a2)-1)+sqr(sqr(a1)*a1+a2); end; function f3(a1,a2:real):real; begin f3:=2*a1-3.5*a2+exp(sqr(a1)+sqr(a2)); end; procedure pmmks(nom:integer); label 1,2; var a:mas; y,h,e,l,b,c:real; i,n:integer; begin clrscr; case nom of 1: n:=3; 2: n:=2; 3: n:=2; end; writeln('введите начальный шаг поиска'); readln(h); writeln('введите точность '); readln(e); for i:=1 to n do begin write('введите начальные x',i,'='); readln(a[i]); end; l:=h; 1: for i:=1 to n do begin b:=0.9E38; 2: a[i]:=a[i]+h; case nom of 1:y:=f1(a[1],a[2],a[3]); 2:y:=f2(a[1],a[2]); 3:y:=f3(a[1],a[2]); end; c:=b; b:=y; if y-ch:=-h/3; if abs(h)>=abs(l/3) then goto 2; h:=l; end; l:=l/9; h:=l; if e/9writeln('fmin=',y:4:10); for i:=1 to n do writeln('x',i,'min=',a[i]:4:10); end; procedure pmmsks(nom:integer); label 1,2; var a:mas; y,h,e,b,c:real; i,n:integer; begin clrscr; case nom of 1: n:=3; 2: n:=2; 3: n:=2; end; writeln('введите начальный шаг поиска'); readln(h); writeln('введите точность'); readln(e); for i:=1 to n do begin write('x',i,'=');readln(a[i]); end; 1:for i:=1 to n do begin b:=0.9E38; 2: a[i]:=a[i]+h; case nom of 1: y:=f1(a[1],a[2],a[3]); 2: y:=f2(a[1],a[2]); 3: y:=f3(a[1],a[2]); end; c:=b; b:=y; if y-ch:=-h/5; if abs(h)>e/5 then goto 1; writeln('fmin=',y:4:10); for i:=1 to n do writeln(a[i]:4:10); end; end. Программа program kurs; uses crt,pmin; label 1,2,3,4,5; type mas=array[1 3] of string[31]; mas1=array[1 3] of string[42]; const stor:mas=(' покоординатный спуск ', 'спиральный покоординатный спуск', ' выход '); stor2:mas1=(' f(x1,x2,x3)=exp(x1+x2+x3)/(x1*x2^2*x3^3)', ' f(x1,x2)=(x1^2+x2^2-1)^2+(x1^3-x2)^2 ', ' f(x1,x2)=2*x1-3.5*x2+exp(x1^2 +x2^2) '); var i,k,k1:integer; kod:char; begin textmode(co80); clrscr; window(10,10,40,15); textbackground(1); textcolor(14); clrscr; k:=1; 1: for i:=1 to 3 do begin if i=k then begin textbackground(14); textcolor(1); end else begin textbackground(1); textcolor(14); end; gotoxy(1,i+2); write(stor[i]); end; while true do begin kod:=readkey; sound(700); delay(500); nosound; if kod=#13 then goto 2; if kod=#0 then begin kod:=Readkey; if kod=#72 then begin if k>1 then k:=k-1 else k:=3; goto 1; end;
if kod=#80 then begin if kgoto 1; end;end; 2:if (k=1) or (k=2) then begin clrscr; window(10,10,50,15); textbackground(1); textcolor(14); clrscr; k1:=1;
4:for i:=1 to 3 do begin if i=k1 then begin textbackground(14); textcolor(1); end else begin textbackground(1); textcolor(14); end; gotoxy(1,i+2); write(stor2[i]); end; while true do begin kod:=readkey; sound(700); delay(500); nosound; if kod=#13 then goto 3; if kod=#0 then begin kod:=Readkey; if kod=#72 then begin if k1>1 then k1:=k1-1 else k1:=3; goto 4; end; if kod=#80 then begin if k13:CASE k of 1: begin clrscr; window(10,10,50,20); pmmks(k1); end; 2: begin clrscr; window(10,10,50,20); pmmsks(k1); end; end; 5: kod:=Readkey; end.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Анализ ликвидности банка
Реферат Аудит операций банка с иностранной валютой. Нормативное регулирование банковского аудита
Реферат Анализ деятельности отдела операционного обслуживания юридических лиц Операционного управления
Реферат Банковская система России пути развития
Реферат Лексические особенности испаноязычной прессы
Реферат Анализ работы Мурманского филиала ЗАО МКБ Москомприватбанка
Реферат Разработка технологического процесса восстановительного ремонта поворотного кулака
Реферат Банковское право 3
Реферат Брачный контракт. Права и обязанности супругов
Реферат Банковское кредитование в современной России
Реферат Анализ операций коммерческих банков с векселями
Реферат Андеррайтинг в страховой деятельности
Реферат Банковская система России пути развития 2
Реферат Банк как коммерческая организация 2
Реферат Анализ инвестиционной деятельности предприятия 2