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

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

Восстановить пароль Регистрация
 
maya18
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 8
01.03.2013, 20:50     Метод градиентного спуска #1
подскажите пожалуйта вводить эти данные в программу,чтобы узнать ответ?:
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();
                                                        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2013, 20:50     Метод градиентного спуска
Посмотрите здесь:

Программирование метода градиентного спуска - проверка кода на корректность C++
Нахождение всех возможных путей для спуска с вершины матрицы C++
СЛАУ методом градиентного спуска C++
Алгоритм рекурсивного спуска C++
Метод наискорейшего спуска C++
Программа рекурсивного спуска выражения и перевода в постфиксный вид C++
C++ Метод градиентного спуска
C++ Метод покоординатного спуска

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

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

Текущее время: 16:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru