Я пытаюсь вычислить значение х ^ х. Я рассчитал, что это производная, и яиспользуя метод Ньютона-Рафсона, чтобы найти корень f (x) = x ^ xa для заданного a.
Это функция, которую я использую для вычисления следующего приближения:
double xkp1(double xk, double a){
double lnxp1 = log(xk) +1;
return xk -( (fx(xk, a)) / (exp(xk*log(xk)) * (log(xk) + 1) ));
}
, где функция fx определяется следующим образом:
double fx(double x, double a){
return exp(x*log(x))-a;
}
Теперь этот подход работает правильнотолько если начальное значение xk уже близко к корню. Если он отличается на + -0,5, xk просто взрывается до действительно высокого значения, а f (x) становится бесконечностью. Теперь я думаю, что здесь может быть не так - производная от x ^ x очень мала по сравнению с фактическим значением x ^ x, поэтому целое (fx(xk, a)) / (exp(xk*log(xk)) * (log(xk) + 1) )
просто становится + бесконечностью - касательная пересекает корень. Это означает, что мне нужна более высокая двойная точность, но возможно ли это как-нибудь? Если нет, можно ли что-то изменить в методе, чтобы сделать его применимым в этой ситуации?