首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >梯度下降算法

梯度下降算法
EN

Stack Overflow用户
提问于 2012-04-11 21:55:33
回答 2查看 193关注 0票数 1

这是我在梯度下降算法上的工作

代码语言:javascript
复制
#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。有人能解释一下为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 21:59:21

abs仅为int和long类型定义。对于浮点数,请使用fabs

票数 2
EN

Stack Overflow用户

发布于 2012-04-11 21:56:47

powf更改为pow,尽管我不确定这是否能解决您的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10107406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档