Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6

Программа для поиска минимального значения функции

03.04.2011, 02:42. Показов 2084. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Помогите разобраться и найти ошибку в коде программы. В задачу входило скомпилировать программу на С++, которая ищет оптимальные значения X (минимум) в уравнении, содержащем эффекты линейного взаимодействия x2*x3, x2*x5 и квадратичный эффект x4^2
Уравнение выглядит следующим образом:
y=226,17 + 57,72x1 + 17,51x4 + 22,92x5 - 11,43x1x3 + 15,22x2x3 + 29,83x2x5 + 6,86x4^2

Проект создавал в Visual Studio 2008 как консольное приложение. Программа вроде бы работает, но оптимальные параметры x определяются неправильно (см. скриншот).


Cобственно ниже исходный код программы. Что может быть не так? Сколько ни ковырял, не пойму в чем косяк. Походу работает только 1й цикл, а остальные 4 не выполняются..
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
#include <stdio.h>
 
int main(void)
{
    double Y,x1,x2,x3,x4,x5,Ynim,Xnim1,Xnim2,Xnim3,Xnim4,Xnim5;
    int i1,i2,i3,i4,i5;
    Ynim=1000;
    for(i1=0;i1<=10;i1++)
    {
     x1=0.2*i1-1;
     for(i2=0;i2<=10;i2++)
     {
      x2=0.2*i2-1;
      for(i3=0;i3<=10;i3++)
      {
       x3=0.2*i3-1;
       for(i4=0;i4<=10;i4++)
       {
        x4=0.2*i4-1;
        for(i5=0;i5<=10;i5++)
        {
         x5=0.2*i5-1;
        
        
        Y = 226.17 + 57.72*x1 + 17.51*x4 + 22.92*x5 - 11.43*x1*x3 + 15.22*x2*x3 + 29.83*x2*x5 + 6.86*x4*x4;
        if (Y<Ynim)
        { 
         Ynim=Y;
         Xnim1=x1;
         Xnim2=x2;
         Xnim3=x3;
         Xnim4=x4;
         Xnim5=x5;
        }
        }
       }
      }
     }
    }
    
    printf("x1 = %f; x2 = %f; x3 = %f; x4 = %f; x5 = %f; Ymin = %f\n",Xnim1,Xnim2,Xnim3,Xnim4,Xnim5,Ynim);
        
    return 0;
}
Миниатюры
Программа для поиска минимального значения функции  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2011, 02:42
Ответы с готовыми решениями:

Программа для поиска минимального и максимального значения массива
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;clocale&gt; #include &lt;memory.h&gt; #include &lt;stdlib.h&gt; ...

программа для нахождения минимального положительного значения
программа считывает последовательность из целых положительных чисел.потом выдает минимальное среди этих.при вводе 0 программа завершит...

Программа поиска минимального элемента. В чем ошибка?
Прога должна найти минимальный элемент в двухмерном массиве. Почему то не работает, где ошибка? #include &lt;iostream&gt; #include...

13
 Аватар для romanriddick
36 / 36 / 6
Регистрация: 06.07.2010
Сообщений: 152
03.04.2011, 03:17
какаято у вас странная прога получилась ... а что за алгоритм использовали???
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6
03.04.2011, 04:03  [ТС]
хмм. почему странный? а что не так? в плане какой алгоритм?
использовал 5 циклов for, так как изменяющихся факторов 5- x1,x2,x3,x4,x5.
0
 Аватар для romanriddick
36 / 36 / 6
Регистрация: 06.07.2010
Сообщений: 152
03.04.2011, 04:19
хм...уже давно придуманы алгоритмы для безусловной оптимизации ... зачем выдумывать что то новое... кроме того минимум все ровно будет локальный , а где у вас вводятса промежутки ... не понятно

Добавлено через 5 минут
впринципе можно еще использовать производную , но формула там другая... ваша идея в была етом ???
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
03.04.2011, 06:00
Х - вектор размерностью 5?
Нужно найти значения Xi, которые обеспечивают минимум функционала У?
Берем частные производные и решаем систему уравнений (в данном случае, похоже, линейных уравнений).
1
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
03.04.2011, 06:39
///////////////////////////
Миниатюры
Программа для поиска минимального значения функции  
1
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
03.04.2011, 06:49
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <iomanip>
using namespace std;
 
int main() 
{   double x2 = -22.92/29.83;
    double x3 = 57.72/11.43;
    double x4 = -17.51/13.72;
    double x1 = 15.22*x2/11.43;
    double x5 = -15.22*x3/29.83;
 
    double y = 226.17+57.72*x1+17.51*x4+22.92*x5-11.43*x1*x3+15.22*x2*x3+29.83*x2*x5+6.86*x4*x4;
 
    cout<<fixed<<setprecision(4)<<"x1 = "<<x1<< "\tx2 = "<<x2<<"\tx3 = "<<x3
        <<"\tx4 = "<<x4<<"\tx5 = "<<x5<<"\n";
 
    cout<<"Ymin = "<<y<<"\n";
        
    cin.sync(); cin.get();
    return 0;
}
Миниатюры
Программа для поиска минимального значения функции  
1
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6
03.04.2011, 08:03  [ТС]
IrineK, большое спасибо! Задача заключалась именно в этом, только вы предложили решение алгебраическим методом, а мне необходим метод сканирования, т.е. отыскания значения функции в каждой экспериментальной точке, сравнения его с предыдущим значением, и выбора минимального.
Попробую конечно поковырять еще, если не получится, решу через частные производные, только вот смыслу от программы тогда нет, на калькуляторе проще сосчитать =)
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
03.04.2011, 15:17
Тогда делайте перебор в районе найденных значений Хi, и шаг нужно выбрать поменьше: 0,1 или даже 0,01.
1
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6
04.04.2011, 11:36  [ТС]
Новая проблема!

IrineK, после оценки значимости коэффициентов по t-критерию Стьюдента, коэффициенты парного взаимодействия отбросились, и уравнение приняло вид:
y=226,17 + 57,72x1 + 38,62x2 + 17,51x4 + 22,92x5 + 6,86x4^2

Вопрос: как в таком случае отыскать частные производные?
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
04.04.2011, 11:58
Чтобы У был минимальным:
Для х4 - по-прежнему х4 = -17,51/13,72 = -1,2762
А для х1,х2,х5 - чем меньше,тем лучше. Они же чем-то ограничены?
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6
04.04.2011, 12:27  [ТС]
получается x1,x2,x5 нулю будут равны? нет, ограничений никаких нет.
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
04.04.2011, 17:45
Вы считаете нечто отвлеченное, или это - конкретные параметры.
Что это? Экономика, химия, физика, или просто упражнение по математике?
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6
04.04.2011, 19:21  [ТС]
Это моделирование систем.
В частности в данном случае, моделируем трехфазную систему массового обслуживания с конкретными параметрами T1,T2,T3,T4,T5

T1= 2+0,3*x1
T2= 2+0,3*x2
T3= 1+0,15*x3
T4= 1-0,15*x4
T5= 1,5+(-)0,225*X5

параметры T должны быть оптимизированы, чтобы критерий оценки системы был минимальным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2011, 19:21
Помогаю со студенческими работами здесь

Написать программу ввода в массив 10 чисел и поиска в нем минимального значения
Написать программу ввода в массив 10 чисел и поиска в нем минимального значения

Функции поиска максимального и минимального элементов массива
Всем доброго времени суток. Очень прошу помочь написать программу. Задание звучит так: &quot;Написать функции, которые определяют...

Перегруженные функции поиска минимального элемента массива
Написати реализацию перезагруженых функций: long func(long* arr, int length); float func(float* arr, int length); Функция func ищет...

Программа для поиска седловых точек матрицы перестала работать после добавления функции ввода
есть программа для на поиска седловых точек матрицы (Максимальный элемент в рядке и максимальный в столбце одновременно), после ввода...

Табулирование заданной функции и определение максимального и минимального значения функции в таблице
Разработать консольное приложение, производящее табулирование заданной функции и определение максимального и минимального значения функции...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru