Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Dionisius
2 / 2 / 0
Регистрация: 19.10.2013
Сообщений: 159
1

Нахождение минимума квадратичной функции

22.12.2016, 21:59. Просмотров 500. Ответов 0
Метки нет (Все метки)

Дана квадратичная функция
a11*x1*x1+2*a12*x1*x2+2*a13*x1*x3+a22*x2*x2+2*a23*x2*x3+a33*x3*x3+2*a14*x1+2*a24*x2+2*a34*x3 -> min
где:
a11=1.2475;
a12=0.847;
a13=0.4332;
a22=1.0135;
a23=-0.0556;
a33=0.739;
a14=-1.6227;
a24=-1.2001;
a34=-0.6323;

Использовать для неё методы:
- Ньютона;
- сопряжённых градиентов;
- градиентный метод с дроблением шага.

На текущем этапе код получается таким:
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 <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
#include <fstream>
#include <stdlib.h>
 
using namespace std;
//исходная функция
double f(double a11, double a12, double a13, double a14, double a22, double a23, double a24, double a33, double a34, double x1, double x2, double x3)
{
    return a11*x1*x1+2*a12*x1*x2+2*a13*x1*x3+a22*x2*x2+2*a23*x2*x3+a33*x3*x3+2*a14*x1+2*a24*x2+2*a34*x3;
}
//производная по x1
double ffx1(double a11, double a12, double a13, double a14, double a22, double a23, double a24, double a33, double a34, double x1, double x2, double x3)
{
    return 2*a11*x1+2*a12*x2+2*a13*x3+a14; 
}
//производная по x2
double ffx2(double a11, double a12, double a13, double a14, double a22, double a23, double a24, double a33, double a34, double x1, double x2, double x3)
{
    return 2*a12*x2+2*a22*x2+a23*x2+2*a24;
}
//производная по x3
double ffx3(double a11, double a12, double a13, double a14, double a22, double a23, double a24, double a33, double a34, double x1, double x2, double x3)
{
    return 2*a13*x1+a23*x2+2*a33*x3+2*a34;
}
int main()
{
    setlocale( LC_ALL,"Russian" );
    double x1;
    double x2;
    double x3;
    double a11=1.2475;
    double a12=0.847;
    double a13=0.4332;
    double a22=1.0135;
    double a23=-0.0556;
    double a33=0.739;
    double a14=-1.6227;
    double a24=-1.2001;
    double a34=-0.6323;
    double eps;
    cout << "Выберите метод решения квадратичной функции:\n" << endl;
    cout << "1) Градиентный метод\n" << endl;
    cout << "2) Метод Ньютона\n" << endl;
    cout << "3) Метод сопряжённых градиентов\n" << endl;
    int k;
    cin>>k;
    if ((k!=1)&&(k!=2)&&(k!=3))
    cout << "Неверный выбор!" << endl;
    else 
    {
        cout << "Введите точность eps" << endl;
        cin >> eps;
    }
    system("PAUSE");
}
Проверьте, правильно ли я вычислил производные.

Добавлено через 1 час 56 минут
Нашел кое-что: https://basegroup.ru/community/articles/conjugate
https://sfedu.ru/www/umr_main.umr_download?p_umr_id=103911

Описанные там методы нужно перевоплотить в код)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2016, 21:59
Ответы с готовыми решениями:

Непрерывные функции и нахождение минимума на отрезке
Помогите реализовать функцию Solve из данной задачи: Задается непрерывная функция f(x)....

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

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

Нахождение минимума функции одной переменной методом кубической параболы
Допущена ошибка в коде.Предполагаю,что неверно выбран x1 в самой функции метода.Также возможна...

Нахождение локального минимума
Здравствуйте!!!! Напишите программу или алгоритм для нахождения локального минимума. Заранее...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2016, 21:59

Нахождение минимума k в матрице
подскажите пожалуйста какой код будет для нахождения минимума k в матрице

Нахождение локального минимума
Написать программу: дана последовательность вещественных чисел. Найти и вывести на экран все...

Рекурсия, нахождение минимума в массиве
В общем, в названии темы само задание. int min(int a,int n) { int minim=a; if(minim&gt;a)...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.