Итак, я пытаюсь использовать метод Ньютона-Рафсона, чтобы найти квадратный корень BigInteger.Как использовать метод Ньютона-Рафсона для поиска квадратного корня BigInteger в C#
Вот мой код:
private void sqrRt(BigInteger candidate)
{
BigInteger epsilon = new BigInteger(0.0001);
BigInteger guess = candidate/2;
while (BigInteger.Abs(guess * guess - candidate) >= epsilon)
{
// guess = guess - (((guess**2) - y)/(2*guess))
guess = BigInteger.Subtract(guess, BigInteger.Divide(BigInteger.Subtract(BigInteger.Multiply(guess, guess), candidate), BigInteger.Multiply(2, guess)));
MessageBox.Show(Convert.ToString(guess));
}
}
Проблема, кажется, что BigInteger не является достаточно точной, чтобы подпадать степень точности эпсилона в то время цикла - то есть он должен десятичное место. Мой вопрос в том, что/как/где я конвертирую в double, чтобы цикл while в конечном итоге возвращал false?
ummm a BigInteger - это целые числа, а не математика с плавающей запятой. –
Возможный дубликат [Вычислить квадратный корень из BigInteger (System.Numerics.BigInteger)] (http://stackoverflow.com/questions/3432412/calculate-square-root-of-a-biginteger-system-numerics-biginteger) – AlexH
Итак, как бы я сделал математику с плавающей запятой на очень больших количествах? – Gerald