│-TВTЗ││TВ │┐│-│-1 (методы оптимизации Махорин А. О. (5 вариант))
Описание файла
Документ из архива "методы оптимизации Махорин А. О. (5 вариант)", который расположен в категории "". Всё это находится в предмете "теория оптимизации и численные методы" из 4 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "теория оптимизации и численные методы" в общих файлах.
Онлайн просмотр документа "│-TВTЗ││TВ │┐│-│-1"
Текст из документа "│-TВTЗ││TВ │┐│-│-1"
Московский Авиационный Институт
(Государственный Технический Университет)
____________________________________________________________________________
Кафедра 609: Прикладная информатика
Отчёт по Лабораторной Работе номер 1
Выполнил студент группы 06-322
Засыпкин А.П.
____________________
Принял
Доцент Махорин А.О.
____________________
Вариант 5
Решение задач одномерной минимизации
Cкорость течения воды по круглой трубе прямо пропорциональна гидравлическому радиусу R , вычисляемому по формуле R=S/P, где S-площадь сечения потока воды в трубе, аP- смоченный периметр трубы. Степень заполнения водой характеризуется центральным углом , опирающемся на горизонтальную поверхность текущей воды. При какой степени заполнения трубы (в градусах) скорость течения воды будет наибольшей.
Приведение к формальному виду
Находим площадь сектора круга радиуса R=1 по формуле S=Pi*R^2 – (½)*R^2*(Alfa-sin(Alfa))=R^2*(Pi-1/2*(Alfa-(sin(Alfa)/2)))
Периметр сектора P=2*Pi*R-Alfa*R
Гидравлический радиус R=S/P
Cкорость V=(R(Pi-Alfa/2+sin(Alfa)/2))/2*Pi-Alfa
Необходимо найти угол, при котором скорость максимальна, поэтому в подпрограммах используем F=-(R(Pi-Alfa/2+sin(Alfa)/2))/2*Pi-Alfa
Результат выполнения программы
>rpsj.exe tap-tap.job
0001 // job tttttt
0002 // exec fortran
Source listing
--------------
3| program z1
4| real x1,x2, eps,a,b,sens
5| integer counts(3,4)
6| common /block/ f_count
7| external f
8| a = -3.14
9| b = 3.14
10| print *,'Tablica znacheniy funkcii f(x)'
11| do x=-3.14,3.14,0.31
12| print '(1x,f12.7,a,f12.7)',x,CHAR(9),f(x)
13| enddo
14|
15| do i = 2,5
16| eps = 10.0**(-i)
17| x1 = a
18| x2 = b
19| f_count = 0
20| call bisec(f,x1,x2,eps)
21| counts(1,i-1) = f_count
22| optimum=(x2+x1)/2
23|
24| x1 = a
25| x2 = b
26| f_count = 0
27| call golds(f,x1,x2,eps)
28| counts(2,i-1) = f_count
29|
30| x1 = a
31| x2 = b
32| f_count = 0
33| call fibon(f,x1,x2,eps)
34| counts(3,i-1) = f_count
35| enddo
36|
37| print '(1x,a,f15.10)','Optimum: ',f(optimum)
38| print '(1x,a,f15.10)','1% ot optimuma: ',0.01*f(optimum)
39| x1 = optimum
40| do while (abs((f(optimum)-f(x1))/f(optimum)).le.0.01)
41| x1 = x1 - 0.00001
42| enddo
43| x1 = x1 + 0.00001
44| print*,'levaya granica:',x1
45| x2 = optimum
46| do while (abs((f(x2)-f(optimum))/f(optimum)).le.0.01)
47| x2 = x2 + 0.00001
48| enddo
49| x2 = x2 - 0.00001
50| print*,'pravaya granica:',x2
51| print '(1x,a,2f15.10)','znachenia: ',f(x1),f(x2)
52| print '(1x,a,2f15.10)','raznici: ',abs(f(optimum)-f(x1))
53| sens = min(abs(x1-optimum),abs(x2-optimum))
54| print*,'chuvstvitelnost: ',sens/optimum
55| print*,'otklonenie: ',sens
56| print*,'dopustimaya tochnost: ', sens*2
57|
58|
59|
60| print '(79a1)',('-',k=1,79)
61| print 1,'|',' Chislo vichisleniy f(x) |'
62| print '(10x,a,14x,49a1)','Method',('-',k=1,49)
63| print 1,'|',' e = 0.01| e = 0.001| e = 0.0001|e = 0.00001|'
64| print '(79a1)',('-',k=1,79)
65| print 2,'Delenia popolam ','|',(counts(1,i),'|',i=1,4)
66| print 2,'Fibonachi ','|',(counts(2,i),'|',i=1,4)
67| print 2,'Zolotogo sechenia','|',(counts(3,i),'|',i=1,4)
68| print '(79a1)',('-',k=1,79)
69|
70| 1 format (30x,a1,a)
71| 2 format (1x,a,12x,a1,4(i11,a1))
72| end
73|
74| real function f(x)
75| real x,R,length
76| common /block/ f_count
77| R = 1
78| length = 280
79| f=-R*(3.14-(x+sin(x))/2)/(2*3.14-x)
80|
81| f_count = f_count+1
82| return
83| end
84|
85|
86|
No diagnostics generated
0087 // option nosource
0088 // exec fortran bisec.f
No diagnostics generated
0089 // exec fortran golds.f
No diagnostics generated
0090 // exec fortran fibon.f
No diagnostics generated
0091 // exec link
No diagnostics generated
0092 // exec *
Tablica znacheniy funkcii f(x)
-3.1400001 -.5000845
-2.8300002 -.5168263
-2.5200002 -.5330870
-2.2100003 -.5472656
-1.9000003 -.5578423
-1.5900004 -.5635207
-1.2800004 -.5633609
-.9700004 -.5568887
-.6600004 -.5441727
-.3500004 -.5258596
-.0400004 -.5031638
.2699996 -.4778094
.5799996 -.4519278
.8899996 -.4279155
1.1999996 -.4082639
1.5099995 -.3953719
1.8199995 -.3913555
2.1299994 -.3978701
2.4399993 -.4159589
2.7499993 -.4459403
3.0599992 -.4873443
МЕТОД ДЕЛЕНИЯ ИНТЕРВАЛА ПОПОЛАМ
A= -3.1400 B= 3.1400 EPS= 1.00000E-02
K A B X F(X)
0 -3.1400 3.1400 .0000 -.50000
1 -3.1400 .0000 -1.5700 -.56369
2 -2.3550 -.78500 -1.5700 -.56369
9 -1.4473 -1.4351 -1.4412 -.56421
10 -1.4443 -1.4381 -1.4412 -.56421
МЕТОД ЗОЛОТОГО СЕЧЕНИЯ
A= -3.1400 B= 3.1400 EPS= 1.00000E-02
K A B X F(X)
0 -3.1400 3.1400 -.74125 -.54808
1 -3.1400 .74125 -.74125 -.54808
2 -3.1400 -.74125 -1.6575 -.56276
13 -1.4458 -1.4337 -1.4412 -.56421
14 -1.4458 -1.4384 -1.4412 -.56421
МЕТОД ФИБОНАЧЧИ
A= -3.1400 B= 3.1400 EPS= 1.00000E-02
Будет выполнено 14 шаг(а,ов)
K A B X F(X)
0 -3.1400 3.1400 -.74126 -.54808
1 -3.1400 .74126 -.74126 -.54808
2 -3.1400 -.74126 -1.6575 -.56276
13 -1.4475 -1.4348 -1.4412 -.56421
14 -1.4475 -1.4410 -1.4412 -.56421
МЕТОД ДЕЛЕНИЯ ИНТЕРВАЛА ПОПОЛАМ
A= -3.1400 B= 3.1400 EPS= 1.00000E-03
K A B X F(X)
0 -3.1400 3.1400 .0000 -.50000
1 -3.1400 .0000 -1.5700 -.56369
2 -2.3550 -.78500 -1.5700 -.56369
12 -1.4420 -1.4404 -1.4412 -.56421
13 -1.4416 -1.4408 -1.4412 -.56421
МЕТОД ЗОЛОТОГО СЕЧЕНИЯ
A= -3.1400 B= 3.1400 EPS= 1.00000E-03
K A B X F(X)
0 -3.1400 3.1400 -.74125 -.54808
1 -3.1400 .74125 -.74125 -.54808
2 -3.1400 -.74125 -1.6575 -.56276
18 -1.4419 -1.4408 -1.4412 -.56421
19 -1.4415 -1.4408 -1.4412 -.56421
МЕТОД ФИБОНАЧЧИ
A= -3.1400 B= 3.1400 EPS= 1.00000E-03
Будет выполнено 18 шаг(а,ов)
K A B X F(X)
0 -3.1400 3.1400 -.74125 -.54808
1 -3.1400 .74125 -.74125 -.54808
2 -3.1400 -.74125 -1.6575 -.56276
17 -1.4421 -1.4403 -1.4412 -.56421
18 -1.4412 -1.4403 -1.4412 -.56421
МЕТОД ДЕЛЕНИЯ ИНТЕРВАЛА ПОПОЛАМ
A= -3.1400 B= 3.1400 EPS= 1.00000E-04
K A B X F(X)
0 -3.1400 3.1400 .0000 -.50000
1 -3.1400 .0000 -1.5700 -.56369
2 -2.3550 -.78500 -1.5700 -.56369
15 -1.4413 -1.4411 -1.4412 -.56421
16 -1.4413 -1.4412 -1.4412 -.56421
МЕТОД ЗОЛОТОГО СЕЧЕНИЯ
A= -3.1400 B= 3.1400 EPS= 1.00000E-04
K A B X F(X)
0 -3.1400 3.1400 -.74125 -.54808
1 -3.1400 .74125 -.74125 -.54808
2 -3.1400 -.74125 -1.6575 -.56276
22 -1.4412 -1.4410 -1.4411 -.56421
23 -1.4411 -1.4410 -1.4411 -.56421
МЕТОД ФИБОНАЧЧИ
A= -3.1400 B= 3.1400 EPS= 1.00000E-04
Будет выполнено 23 шаг(а,ов)
K A B X F(X)
0 -3.1400 3.1400 -.74125 -.54808
1 -3.1400 .74125 -.74125 -.54808
2 -3.1400 -.74125 -1.6575 -.56276
22 -1.4412 -1.4410 -1.4411 -.56421
23 -1.4411 -1.4410 -1.4411 -.56421
МЕТОД ДЕЛЕНИЯ ИНТЕРВАЛА ПОПОЛАМ
A= -3.1400 B= 3.1400 EPS= 1.00000E-05
K A B X F(X)
0 -3.1400 3.1400 .0000 -.50000
1 -3.1400 .0000 -1.5700 -.56369
2 -2.3550 -.78500 -1.5700 -.56369
19 -1.4412 -1.4412 -1.4412 -.56421
20 -1.4412 -1.4412 -1.4412 -.56421
МЕТОД ЗОЛОТОГО СЕЧЕНИЯ
A= -3.1400 B= 3.1400 EPS= 1.00000E-05
K A B X F(X)
0 -3.1400 3.1400 -.74125 -.54808
1 -3.1400 .74125 -.74125 -.54808
2 -3.1400 -.74125 -1.6575 -.56276
27 -1.4411 -1.4411 -1.4411 -.56421
28 -1.4411 -1.4411 -1.4411 -.56421
МЕТОД ФИБОНАЧЧИ
A= -3.1400 B= 3.1400 EPS= 1.00000E-05
Будет выполнено 28 шаг(а,ов)
K A B X F(X)
0 -3.1400 3.1400 -.74125 -.54808
1 -3.1400 .74125 -.74125 -.54808
2 -3.1400 -.74125 -1.6575 -.56276
27 -1.4411 -1.4411 -1.4411 -.56421
28 -1.4411 -1.4411 -1.4411 -.56421
Optimum: -.5642137527
1% ot optimuma: -.0056421375
levaya granica: -1.87206531
pravaya granica: -1.02753997
znachenia: -.5585716963 -.5585716963
raznici: .0056420565
chuvstvitelnost: -.28703016
otklonenie: .413671017
dopustimaya tochnost: .827342033
-------------------------------------------------------------------------------
| Chislo vichisleniy f(x) |
Method -------------------------------------------------
| e = 0.01| e = 0.001| e = 0.0001|e = 0.00001|
-------------------------------------------------------------------------------
Delenia popolam | 18| 24| 30| 38|
Fibonachi | 15| 20| 24| 29|
Zolotogo sechenia | 15| 19| 24| 29|
-------------------------------------------------------------------------------
0093 // end
>Exit code: 0
Анализ чувствительности
Optimum: -.5642137527
1% ot optimuma: -.0056421375
levaya granica: -1.87206531
pravaya granica: -1.02753997
znachenia: -.5585716963 -.5585716963
raznici: .0056420565
chuvstvitelnost: -.28703016
otklonenie: .413671017
dopustimaya tochnost: .827342033
Для найденного максимального значения F(max)= -0.5642137527выполнен анализ чувствительности к изменениям независимой переменной.
Значение функции на 1% отличающееся от оптимального (1% * F(max)= -0.0056421375) получаем при значениях переменной на левой границе t1=-1.87206531и на правой границе t2=-1.02753997при этом получаем значения функции в левой и правой границе равны соответственно -0.5585716963 и -0.5585716963
Чувствительность оптимального решения равна -0.28703016, таким образом малый промежуток времени кинетическая энергия капли велика, за счет испарения масса сильно уменьшается и оказывает большее влияние на энергию капли, чем увеличивающаяся скорость падения.
Допустимая точность задания оптимального значения независимой переменной 0.827342033
Анализ результатов выполнения программы оптимизации
В программе задан цикл изменения требуемой точности и после выполнения подпрограммы получение значения числа вызовов целевой функции данной подпрограммой-методом.
-------------------------------------------------------------------------------
| Chislo vichisleniy f(x) |
Method -------------------------------------------------
| e = 0.01| e = 0.001| e = 0.0001|e = 0.00001|
-------------------------------------------------------------------------------
Delenia popolam | 18| 24| 30| 38|
Fibonachi | 15| 20| 24| 29|
Zolotogo sechenia | 15| 19| 24| 29|
-------------------------------------------------------------------------------
Из таблицы, очевидно, что для решения данной задачи наиболее эффективным является метод «Золотого сечения». С помощью этого метода наиболее быстро достигается оптимальное значение с заданной точностью.
1,44 радиан = 84градуса
360-84=276 градусов
Из этого следует , что при угле 276 градусов скорость будет наибольшей .