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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Скормить С код С++ компилятору? http://www.cyberforum.ru/cpp-beginners/thread798219.html
Здравствуйте. Ради интереса я решал следующую задачку: Выражения языка L записываются по обычным правилам и строятся с помощью знаков арифметических действий +, –, *, / и круглых скобок. Операнды...
C++ Решение линейного и квадратного уравнения #include <iostream> #include <math.h> using namespace std; double Lin_riv(double a, double b); double Kvad_riv(double a, double b, double c); int num; void main(){ double a, b, c; http://www.cyberforum.ru/cpp-beginners/thread798200.html
C++ gcc в c++ VS
void MakeStrRef(RCString* sref,char* data){ asm("pushl %%eax\n" "call %%edx" : :"a"(data),"c"(sref),"d"(GameBase+0x011300) : ); } как это...
Разработать структуру для представления информации о группе C++
Помогите, как разработать структуру для представления информации о группе, а именно: ф.и.о., адрес, дата рождения, средняя успеваемость в диапазоне от 1 до 10 баллов. Создать массив структур для...
C++ работа с классом http://www.cyberforum.ru/cpp-beginners/thread798160.html
пишу класс быстрой математики (знаю что многие делали в инете дофига всего, но всё же) сделал таблицу корней в общем то всё работает (привожу код) файл .h typedef float Real; class Math {...
C++ Install C++ Вот на следующей неделе в технаре начинаем изучать С++, решил посмотреть, что да как пораньше. Киньте ссылку на нормальный install. Вот еще такой прикол, как с Turbo Pascal и Pascal ABC, они же как... подробнее

Показать сообщение отдельно
maya18
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 8

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

01.03.2013, 20:50. Просмотров 459. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru