如何从自身的力量等于n的na数中获得?

1 c++ math pow

我有一个整数n,我想得到一个数字,它提升到自身的力量等于n.我怎样才能做到这一点?

Sal*_*lba 5

所以我们想解决这个问题x^x = n.这与找到相当于的n = n的n的根是完全不同的y^n = n.

查看权力时要做的第一件事就是现在使用自然日志来考虑日志 x ln x = ln n.这对我们没有多大帮助,并且它不是标准函数,因此需要某种形式的收敛程序,我们想要解决f(x) = x ln x - ln n = 0.这个函数很好地单调增加比x快一点,所以它应该很容易解决.

我们可以使用牛顿的方法.首先找到衍生物 f'(x) = log x + 1.从猜测开始,x1将会有更新的猜测x2 = x1 - f(x1) / f'(x).如果你这样做了几次它应该很好地收敛.在我的实验发现x,使得x^x = 21它仅仅用了不到6个itterations收敛.

在psudocode

x[0] = ln(n);
for(i=0; i<6;++i ) {
    fx = x[i] * ln( x[i] ) - ln(n); 
    df = ln( x[i] ) + 1;
    x[i+1] = x[i] - fx / df;
}
println(x[6], pow(x[6], x[6]))
Run Code Online (Sandbox Code Playgroud)