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
。任何人都可以解釋爲什麼這是?
我發現錯誤,而不是 - ,我有+所以這是問題,謝謝 – 2012-04-11 13:57:51