gpt4 book ai didi

c++ - 牛顿法返回 NaN

转载 作者:行者123 更新时间:2023-11-28 00:52:24 25 4
gpt4 key购买 nike

我写了牛顿法的简单递归版本:

#include <cmath>

using namespace std;

double DeriveAt(double (*f)(double), double x){
return( (f(x+0.001)-f(x-0.001))/0.002 );
};

double FindRoot(double (*f)(double), double x0){
double corr=f(x0)/DeriveAt(f,x0);
if(abs(corr) > 1.E-7)
FindRoot(f, x0-corr);
else return(x0);
};

如果我调用我的函数,例如FindRoot(sin, 4),返回NaN。我通过在每一步之后打印 x0 的值来检查函数,并且在最后一次迭代之前一切似乎都正常工作。出于某种原因,函数调用自身的次数超过了实际应调用的次数,可能在计算最后一个 corr 时创建了类似 0/0 的内容。

最佳答案

如果我改变

if(abs(corr) > 1.E-7)
FindRoot(f, x0-corr);

if(abs(corr) > 1.E-7)
return FindRoot(f, x0-corr);

然后 FindRoot(sin, 4) 返回近似于 Pi 的值。

关于c++ - 牛顿法返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com