Я делаю калькулятор смешанных чисел для моего класса C++. Мы должны хранить все в специальном смешанном классе чисел с целым числом, числителем и знаменателем. Из-за этого иррациональные ответы должны быть аппроксимированы перед преобразованием в смешанные числа. Моя проблема в том, что если я построю результат 2^(1/2), он вернет смешанное число, которое действительно близко к 2, но не 2 точно. Я хочу знать, есть ли способ сделать (a^(1/n))^n возвращать a для всех положительных a. ТИА.квадратный корень C++
ответ
Я предполагаю, что вы понимаете, что квадратный корень из двух не является рациональным числом. Следовательно, не существует двух целых чисел, коэффициент квадратов которых равен двум. У вас есть два основных варианта:
Вы можете округлять все результаты, которые действительно действительно близки к целому числу с этим целым. В некоторых случаях это даст неправильный ответ. Но вы уже должны были признать, что вы не всегда можете дать точный ответ на все возможные проблемы, потому что вы представляете как рациональные некоторые цифры, которые не могут быть представлены именно таким образом.
Вы можете добавить дополнительную информацию в дополнение к двум целым числам в представлении. Например, если что-то является результатом повышения целого числа до мощности, вы можете указать его как таковое. Если позже он будет повышен, вы можете использовать округление, как указано выше, или просто восстановить исходное целое число.
В принципе, решите, что вы хотите, и закодируйте его.
У меня сложилось впечатление о возможности достижения этого, потому что многие из научных калькуляторов могут возвращать a для (a^(1/n))^n. Теперь я вижу, как они могут это сделать, используя флаги вместо другого механизма, о котором я не знал. Спасибо, что поняли меня. – giraid
Это было бы возможно для любого выражения, мы бы получили «автоматическую теорему».
Но, к сожалению, было доказано, что доказательство теоремы не является решением, разрешающим МТ.
Что вы можете сделать, это обеспечить некоторое символическое представление часто используется выражение (Обратите внимание, что рациональное число является символическим представлением a/b
), например, для a^b
, exp(a/b)
, log(a/b)
и т.д., чем сочетание экспрессии и алгоритма для упрощения хорошо известных комбинаций.
Таким образом, 2^(2/2) будет 2 после упрощения выражения.
Результат будет довольно сложным кодом, не обязательно быстрым, который работает только для случаев, когда вы предоставили «решение». Но всегда есть способ написать выражение в запутанном виде, которого вы не предсказывали.
В этот момент вы должны принять в любом случае ограничение конечного представления. Рациональная или с плавающей точкой, какая бы она ни была.
- 1. C++ отрицательный квадратный корень
- 2. Квадратный корень алгоритм C
- 3. C++ Квадратный корень с рекурсией
- 4. nlogn vs квадратный корень n, не квадратный корень медленнее?
- 5. Квадратный корень отрицательного нуля
- 6. Квадратный корень отрицательных чисел
- 7. Swift Отрицательный квадратный корень
- 8. Бенчмаркинг math.h квадратный корень и квадратный корень Quake
- 9. Как получить квадратный корень?
- 10. Квадратный корень в PHP
- 11. обратный квадратный корень python
- 12. Digit рецидивы квадратный корень
- 13. Рабочая матрица Квадратный корень
- 14. Flash AS3 квадратный корень?
- 15. Уплотненный квадратный корень рекурсии
- 16. Ассамблея 8086 квадратный корень
- 17. квадратный корень из Rational
- 18. Python3.3: Квадратный корень оптимизации
- 19. Упростить квадратный корень
- 20. Квадратный корень натуральных чисел?
- 21. Найти квадратный корень из числа в C++
- 22. Квадратный корень на языке программирования C++
- 23. C# математика квадратный корень. находящаяся в районе
- 24. C# - получить квадратный корень и ближайший простой
- 25. Квадратный корень в деревьях выражений
- 26. Плоский квадратный корень в контуре
- 27. Quake обратный квадратный корень: точность
- 28. Общий квадратный корень в Swift
- 29. Квадратный корень типа int32 переменной
- 30. Квадратный корень константы (masm, fasm)
Используете ли вы числа с плавающей запятой для представления данных? Если это так, то здесь происходит неточность. –
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – IdeaHat
@BrianCain Он прямо сказал, что использует рациональные числа. (Но, конечно, '2^(1/2)' не имеет точного решения по множеству рациональных чисел. Это его проблема.) –