如果x的x次幂结果为10(如图所示),你能计算出x的近似值吗?
显然,这个值是介于2和3之间的一个数字。
可以使用牛顿迭代公式进行求解,因为是逼近算法可以大大减少运算次数
public static void main(String[] args) {
int i = 0;
double x1 = 2.5;
while (true) {
i++;
//x^x - 10 = 0
//这一步是牛顿迭代公式
double x2 = x1 - (Math.pow(x1, x1) - 10) / (Math.pow(x1, x1) * (Math.log(x1) + 1));
if (Math.abs(x2 - x1) < 0.00000001) {
System.out.println(String.format("通过运算%d次,得到结果为%.6f",i,x2));
break;
}
x1 = x2;
}
}
运行结果
通过运算3次,得到结果为2.506184