С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.12.2022
Сообщений: 9

Метод Пауэлла

25.02.2023, 17:28. Показов 776. Ответов 1
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите исправить ошибке в коде

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
#include <math.h>
double Powell(double *a, double *b);
// Программа поиска минимума на интервале [a, b]
// методом квадратичной аппроксимации Пауэлла.
// Значение функции f(x) вычисляется в подпрограмме Fx(x)
// В результате интервал неопределённости уменьшается и
// его границы доступны в вызывающей программе.
// Также «наверх» передаётся минимальное значение функции.
extern double Fx(double);
double dx, x[4], f[4], xt, ft, dn, nm, tolerance = 0.001;
int j, k, s1, s2, s3;
double dx=0.05; // шаг
// Начать процесс с первых трёх точек
x[0] = *a;        f[0]=Fx(x[0]);
x[1]=*a + dx; f[1] = Fx(x[1]);
if (f[0] < f[1]) x[2] = *a - dx;
 else x[2] = *a + 2.0 * dx;
f[2] = Fx(x[2]);
//Первый интерполированный минимум
dn=(x[1] - x[2]) * f[0];
dn+=(x[2] - x[0]) * f[1] + (x[0] - x[1]) * f[2];
nm=(x[1] * x[1] - x[2] * x[2]) * f[0];
nm+=(x[2] * x[2] - x[0] * x[0]) * f[1];
nm+=(x[0] * x[0] - x[1] * x[1]) * f[2];
×[3]=nm / (2.0 * dn); f[3] = Fx(x[3]);
while(1) {//Бесконечный цикл интерполяции
    for(j = 0; j < 3; j++)
        for (k = 0; k < 4; k++) {
            if (f[j] > f[k]{//Упорядочить x и f
            xt = x[j]; x[j] = x[k]; x[k] = xt;
            ft = f[j]; f[j] = f[k]; f[k] = ft;
                }//Конец оператора if( )
        } // Конец циклов по ј и k
    if (fabs(x[0] - x[1]) < tolerance) {
        // Точность по величине интервала достигнута.
        // Выход из цикла интерполяции.
        goto EXIT;
            // Точность по интервалу не достигнута,
            // создаём новую точку
            s1 = sgn(x[1] - x[0]); //sgn() = 1, если скобки > 0
        s2 = sin(x[2] - x[0]); //sgn() = 0, если скобки =
        s3 = sgh(x[3] - x[0]); //sgn() = -1, если скобки < 0
        if (s1 == s2 && s1 == (-s3)) {
            x[2] = x[3];
            f[2] = f[3];
            // Делаем вторую интерполяцию и
            // переходим на упорядочивание
            dn = (x[1] - x[2]) * f[0] + (x[2] - x[0]) * f[1] + (x[0] -
                ×[1]) * f[2];
            ft = (f[0] - f[1]) / (2.0 * dn);
            ft *= (x[1] - x[2]) * (x[2] - x[0]);
            x[3] = (x[0] + x[1]) / 2.0 + ft;
            f[3] = Fx(x[3]);
        }//Конец бесконечного цикла интерполяции
    EXIT:
        *a = x[0];
        *b = x[1];
        return (f[0]);
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2023, 17:28
Ответы с готовыми решениями:

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

Метод итерации и метод Ньютона (метод касательных)
Помогите решить методом итерации и методом Ньютона выражение привиденное ниже: e(в степени Х) - e(в степени (-x)) - 2 = 0

Метод сопряженных градиентов и Метод Давидона-Флетчера-Пауэлла (matlab)
Нужно используя функцию Розенброка rb(x1,x2,1)=100*(x1-x1^2)^2 +(1-x1)^2 c произвольным начальным условием/исходными данными - точкой...

1
Лежебока
 Аватар для Donkix
328 / 244 / 95
Регистрация: 12.05.2021
Сообщений: 1,429
Записей в блоге: 2
26.02.2023, 00:43
Цитата Сообщение от Ekaterinaaaa Посмотреть сообщение
goto EXIT
Немного не по теме, но вместо этого можно просто использовать break
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2023, 00:43
Помогаю со студенческими работами здесь

Метод Пауэлла
Необходимо реализовать метод Пауэлла. Как сделать переход функции на следующие итерации? import math h = 0.01 x1 = -4 #f = x * x...

Метод Пауэлла
Каким алгоритмом можно выбрать наилучшие точки для метод Пауэлла (Квадратичная аппроксимация) X1 = -4 Функция f(x) =&gt; x*x*x*x - 12 *...

Метод Пауэлла
На любом языке программирования составить программу, по нахождению экстремумов функции Sin(x)+5Sin(3x) на интервале a=2 и b=3 методом...

Метод Пауэлла
Господа, я разбирался с методом оптимизации Пауэлла, и у меня возник вопрос: во всех попавшихся мне на глаза статьях и учебниках...

метод Дэвидона-Флетчера-Пауэлла
Как записать main, чтобы работал код ? можно как-то упростить данный код ? #include &lt;stdlib.h&gt; #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru