Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/64: Рейтинг темы: голосов - 64, средняя оценка - 4.84
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
1

Метод ломаных нахождения минимума многоэкстремальной функции

01.12.2012, 15:21. Показов 12566. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите, пожалуйста, реализовать метод ломаных нахождения минимума многоэкстремальной функции f(x) на отрезке [a, b].
Алгоритм:
x1=a
x2=b
yi=f(xi)

1 итерация
t1(x)=max {yi-180*fabs(x-xi)}, i=1,2
x3=arg min t1(x), a<=x<=b

2 итерация
t2(x)= max {yi-180*fabs(x-xi)}, i=1,2,3
x4=arg min t2(x), a<=x<=b

k итерация
tk(x)= max {yi-180*fabs(x-xi)}, i=1,2,3,...,k+1
x(k+2)=arg min tk(x), a<=x<=b

N-1 итерация
t(N-1)(x)=max {yi-180*fabs(x-xi)}, i=1,2,3,...,N
x(N+1)=arg min t(N-1)(x), a<=x<=b


fmin=min f(xi), i=1,...,N
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2012, 15:21
Ответы с готовыми решениями:

Шаблон функции нахождения максимума и минимума
Пожалуйста кто хорошо осведомлён в теме Шаблоны Объясните как написать функцию с использованием...

Реализовать последовательный симплекс метод для нахождения минимума функции двух переменных
Здравствуйте! Необходимо реализовать последовательный симплекс метод для нахождения минимума...

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

Метод Ньютона для нахождения максимума/минимума.
Уважаемые форумчане помогите сделать задание в MathCAD. так как я вообще не знаю как в нем работать...

4
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
02.12.2012, 09:52  [ТС] 2
Может, кто-нибудь посмотрит? Я попыталась проиллюстрировать метод.
Сам метод хорошо понимаю, x[3] нашла.
x[3]=(y[2] - y[1] + 180*(x[2] + x[1])) / (2*180);
В частном случае (конкретно по графику моей функции) можно дальше выбрать x[4].
x41=(y[1]-y[3]+M*(x[1]+x[3]))/(2*M);
x42=(y[3]-y[2]+M*(x[2]+x[3]))/(2*M);
if ((y[3]-M*fabs(x41-x[3])) <(y[3]-M*fabs(x42-x[3])))
x[4]=x41;
else
x[4]=x42;
А в общем случае непонятно, как выбирать следующие точки.
Миниатюры
Метод ломаных нахождения минимума многоэкстремальной функции   Метод ломаных нахождения минимума многоэкстремальной функции   Метод ломаных нахождения минимума многоэкстремальной функции  

Метод ломаных нахождения минимума многоэкстремальной функции   Метод ломаных нахождения минимума многоэкстремальной функции  
0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 9
28.05.2018, 23:27 3
Добрый вечер!
У вас осталось решение этой задачи?
0
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
29.05.2018, 02:35  [ТС] 4
Нет
0
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
29.05.2018, 05:08  [ТС] 5
Нашла

А во вложении на фортране

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
const int N=26;
const double M=180;
double func(double x)
{
double y;
y=pow(x,4)-8*pow(x,3)-8*pow(x,2)+96*x-3;
return y;
}
int minpos(double a[N+1], int n)
{
  int imin;
  double min;
  imin=1;
  min=a[1];
  for (int i=2; i<=n; i++)
  {
     if (a[i]<min)
     {
       min=a[i];
       imin=i;
     }
  }
  return imin;
}
double min(double a[N+1],int n)
{
  double min;
  min=a[1];
  for (int i=2; i<=n; i++)
  {
     if (a[i]<min)
     {
       min=a[i];
     }
  }
  return min;
}
double InterPoint(double InterPoint[3],double x1, double y1, double x2, double y2)
{
 double Temp;
 Temp = (y1 - y2)/(2*M) + (x1 + x2)/2;
 InterPoint[1] = Temp;
 InterPoint[2] = y1 + M*x1 - M*Temp;
 return *InterPoint;
}
 
int main(int argc, char* argv[])
{
 double a=-3, b=7;
 double x[N+1];
 double y[N+1];
 double ymin;
 int i, imin, j;
 printf ("Metod perebora:\n");
 for (i=1;i<=N;i++)
 {
  x[i]=a+(2*i-1)*(b-a)/(2*N);
 }
 for (i=1; i<=N; i++)
 y[i]=func(x[i]);
 ymin=y[1];
 for (i=1; i<=N; i++)
 {
    if (y[i]<=ymin)
     {
         ymin=y[i];
     imin=i;
     }
 
 }
 printf("Naim. znacheniye f: %f\n\n", ymin);
 printf ("Metod lomanyh:\n");
 double Theor, Fact;
 double Inter[3];
 double minPhix[N], minPhiy[N];
 int minNum;
 x[1] = a;
 x[2] = b;
 y[1] = func(x[1]);
 y[2] = func(x[2]);
 InterPoint(Inter,x[1], y[1], x[2], y[2]);
 minPhix[1] = Inter[1];
 minPhiy[1] = Inter[2];
 for( i = 3; i<=N;i++)
 {
   minNum = minpos(minPhiy,i-2);
   for(j = 1;j<=(i-minNum-1);j++)
   {
     x[i-j+1] = x[i-j];
     y[i-j+1] = y[i-j];
   }
   x[minNum+1] = minPhix[minNum];
   y[minNum+1] = func(x[minNum+1]);
   for (j = 1; j<=(i-minNum-1); j++)
   {
     minPhix[i-j] = minPhix[i-j-1];
     minPhiy[i-j] = minPhiy[i-j-1];
   }
   InterPoint(Inter,x[minNum], y[minNum], x[minNum+1], y[minNum+1]);
   minPhix[minNum] = Inter[1];
   minPhiy[minNum] = Inter[2];
   InterPoint(Inter,x[minNum+1], y[minNum+1], x[minNum+2], y[minNum+2]);
   minPhix[minNum+1] = Inter[1];
   minPhiy[minNum+1] = Inter[2];
 }
 ymin = min(y,N);
 Fact = fabs(ymin-(-147));
 Theor = ymin - min(minPhiy,N);
 printf("Naim. znacheniye f: %f\n", ymin);
 printf("Theor. precision is: %f\n", Theor);
 printf("Fact. precision is: %f\n", Fact);
 getch();
 return 0;
}
Вложения
Тип файла: txt лаба 2 в82.txt (2.8 Кб, 73 просмотров)
1
29.05.2018, 05:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2018, 05:08
Помогаю со студенческими работами здесь

Есть ли vb функции для нахождения минимума в массиве?
есть ли vb функции для нахождения минимума в массиве (в delphi мне cказали есть)

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

Составить программу для нахождения минимума функции на отрезке
Всем привет, не могу составить программу для нахождения минимума функции, помогите пожалуйста:...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru