![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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; } |
![]() |
![]() |