Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
maya18
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 8
#1

Метод градиентного спуска - C++

01.03.2013, 20:50. Просмотров 467. Ответов 0
Метки нет (Все метки)

подскажите пожалуйта вводить эти данные в программу,чтобы узнать ответ?:
x1=3-0.05*x2-0.04*x3
x2=4-0.04*x1+0.07*x3
x3=7-0.02*x1+0.03*x3

программа:

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
//methgradspuska
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define nmax 10
double fun(double xx1,double xx2)
{
       double ee,ff;
       ee=exp(xx1*xx1+xx2*xx2);
       ff=ee+2.*xx1-3.5*xx2;
       return ff;
       }int main()
       {
       double x1[nmax],x0[nmax],chpf0[nmax];
            double eps,step,alf,gradnor,fmin,f0,f1,s,e1;
            unsigned int i,n; unsigned long k;
            eps=0.00001;step=0.1;
            alf=step;
            printf("input n-count of args\n");
            scanf("%i",&n);
            printf("Count of args\n"); 
            printf("n=%i",n);
            printf("\n");
            printf("Precision \n");
            printf("eps=%1 f\n",eps);
            k=0;
            for(i=1;i<=n;i++)
            x0[i]=0;
            f0=fun(x0[1],x0[2]);
            do
            {
                                e1=exp(x0[1]*x0[1]+x0[2]*x0[2]);
                                chpf0[1]=e1*2.*x0[1]+2.;
                                chpf0[2]=e1*2.*x0[2]-3.5;
                                for(i=1,s=0;i<=n;i++)
                                {s+=chpf0[i]*chpf0[i];}
                                gradnor=sqrt(s);
                                T1:
                                  for(i=1;i<=n;i++)
                                  {
                                                   x1[i]=x0[i]-alf*chpf0[i];
                                                   }
                                                   f1=fun(x1[1],x1[2]);
                                                   if(f1<=f0) goto T2;
                                                   else
                                                   {alf=alf*0.5;
                                                   goto T1;
                                                   }
                                                   T2:
                                                        for(i=1;i<=n;i++)
                                                        x0[i]=x1[i];
                                                        f0=f1;
                                                        k+=1;                                                                                                          }
                                                        while(gradnor>=eps);
                                                        fmin=fun(x1[1],x1[2]);
                                                        printf("fmin=%1f\n",fmin);
                                                        printf("k=%i",k);
                                                        getch();
                                                        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2013, 20:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод градиентного спуска (C++):

Метод градиентного спуска - C++
Доброго времени суток! прошу прощения за подъём старой темы, которую здесь многократно пытались оббъяснить, но помогите Задание: ...

СЛАУ методом градиентного спуска - C++
доброго времени суток! задали ргр по числ.методам: решение СЛАУ методом наискорейшего градиентного спуска. язык- с++, среда...

Программирование метода градиентного спуска - проверка кода на корректность - C++
Здравствуйте! мне необходимо сдать лабораторную работу по методу градиентного спуска. я запрограммировал этот метод поиска минимума...

Найти экстремум функции двух переменных методом градиентного спуска - C++
Ругается на cout &lt;&lt; setw(4) &lt;&lt; setprecision(5) &lt;&lt; x; и clrscr(); Разные библиотеки пробовал но запустить не получилось... ошибка и всё, в...

Метод покоординатного спуска - C++
Помогите пожалуйста Разработать программу(С++) для реализации Метода координатного спуска многомерного поиска и найти минимум заданной...

Метод наискорейшего спуска - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2013, 20:50
Привет! Вот еще темы с ответами:

Метод наискорейшего спуска - C++
Доброго времени суток! Возникла проблема с реализацией программы. Не понимаю ни алгоритма, ни к чему нужна матрица, ни, соответсвенно,...

Метод наискорейшего спуска зацикливает - C++
Код: #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstdio&gt; #include &lt;iostream&gt; #ifndef GRADIENTSP_H #define GRADIENTSP_H...

Метод скорейшего спуска для решения СЛАУ - C++
Доброго времени суток всем! Столкнулся с проблемой. Нужно написать программу решения СЛАУ методом скорейшего спуска. В Паскале не силен....

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++


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

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

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