2012-04-11 1 views
1

はここ勾配下降アルゴリズムに私の仕事ですグラデーション下降アルゴリズム

#include<iostream> 
#include<math.h> 
#include<float.h> 
using namespace std; 
double f_prime(double x) 
{ 

    return (double)(4.0*powf(x,3)-9.0*powf(x,2)); 


} 
void gradient() 
{ 
    double x_old=0; 
    double x_new=6; 
    double eps=0.01; 
    double precision=0.00001; 
    while(abs(x_new-x_old)>precision) 

    { 
     x_old=x_new; 
    x_new=x_old-eps*f_prime(x_old); 


    } 
    cout<<" local minimum at : "<<x_new<<endl; 

} 
int main() 
    { 

     gradient(); 



     return 0; 
} 

上記のコードは、私に浮くために、二重の不正解の変換、データの損失の可能性の警告を与えます未定義の値は-1.INDです。誰がこれがなぜなのか説明できますか?

答えて

2

absは、int型とlong型に対してのみ定義されています。浮動小数点数はfabsを使用します。

1

powfからpowに変更しても問題は解決しません。

+0

私はバグを発見しました - 、私は持っていた+それは問題だった、ありがとう –

関連する問題