Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2011, 16:03   #1
Альмира
Новичок
Джуниор
 
Регистрация: 03.04.2011
Сообщений: 2
По умолчанию с++

нужна программа по методу градиентного спуска, я написала, но не правильно
#include "stdafx.h"
#include <cmath>
#include <iostream>
#define eps 0.0000001
using namespace std;

double f(double x, double y, double z)
{
return x*x+y*y+z*z;
}

int _tmain(int argc, _TCHAR* argv[])
{
int n, i;
double x, x0, y0,z0,px,py,pz,k,grad,mx,my,mz;

cout<<"vvedite delta x: "<<endl;
cin>>x;
cout<<"vvedite k: "<<endl;
cin>>k;
cout<<"vvedite x0"<<endl;
cin>>x0;
cout<<"vvedite y0"<<endl;
cin>>y0;
cout<<"vvedite z0"<<endl;
cin>>z0;

do
{
px=(f(x0+x,y0,z0)-f(x0-x,y0,z0))/2*x;
mx=x0-k*px;
x0=mx;
py=(f(x0,y0+x,z0)-f(x0,y0-x,z0))/2*x;
my=y0-k*py;
y0=my;
pz=(f(x0,y0,z0+x)-f(x0-x,y0,z0+x))/2*x;
mz=z0-k*pz;
z0=mz;

grad=pow(px*px+py*py+pz*pz,1/2);

}
while (abs(grad)>eps);

cout<<"y(pri n)= "<<mx<<endl;
cout<<"y(pri 2n)= "<<my<<endl;
cout<<"pogreshnost`= "<<mz<<endl;


return 0;

}
Альмира вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц