|
17 / 7 / 0
Регистрация: 20.08.2012
Сообщений: 51
|
|||||||||||
Точность действительных чисел14.10.2012, 13:22. Показов 4920. Ответов 22
Метки нет (Все метки)
Написав функцию численного интегрирования...
То есть, вычисляя...
Как это скорректировать?
0
|
|||||||||||
| 14.10.2012, 13:22 | |
|
Ответы с готовыми решениями:
22
Список действительных чисел Дано 8 действительных чисел. Вычислить сумму квадратов разностей корней из модулей действительных чисел
|
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
|
| 14.10.2012, 14:25 | |
|
Се есть особенность вычислений с плавающей точкой, которая от языка не зависит. Выход - отказаться от Float и представлять дробные числа в виде, например, отношения целых (модуль Data.Ratio).
1
|
|
|
17 / 7 / 0
Регистрация: 20.08.2012
Сообщений: 51
|
|
| 14.10.2012, 15:02 [ТС] | |
|
Ну это, как бы, ограничение общности.
0
|
|
|
|
||
| 14.10.2012, 15:41 | ||
|
Если не веришь, напиши функцию, сравнивающую два действительных (в нашем обычном понимании) числа за конечное время. Или проще: попробуй определить, а что же вообще из себя представляет действительное число.
0
|
||
|
17 / 7 / 0
Регистрация: 20.08.2012
Сообщений: 51
|
||
| 14.10.2012, 15:48 [ТС] | ||
|
0
|
||
|
|
||||||
| 14.10.2012, 16:28 | ||||||
|
У нас на матане действительные числа вводились как целое число + бесконечная последовательность цифр 0..9. Потом мы ввели понятие равенства:
где (x)n — рациональное число, получаемое путём "отрезания" всех чисел с n после запятой. Далее мы перешли к фактормножетву, то есть отождествили +0 и -0, 0.99... и 1.00... и так далее. Была ещё теорема, что двоякое представление возможно, только если с некоторого момента начинаются только нули или только девятки. Так было в матане, где многое доказывалось от противного (пример: доказательство несчётности R). Было другое определение R, как топологического пополнения Q. Далее я могу немного приврать, поэтому к дальнейшему стоит относиться с осторожностью. В книге Гейтинга «Интуиционизм» в главе 2.2, посвященной дейтсвительным числам, вводится другое определение числа, которое, вообще говоря, отличается от первого. Понятие числа вводится как генератор действ. чисел, то есть последовательность рациональных чисел, фундаментальную в смысле Коши. Это определение похоже на второе определение (пополнение Q), только здесь все утверждение должны быть конструктивными. Имея последовательности (x,y :: [a]), вы никогда не напишите функцию, за конечное время определяющую, равны ли x и y. Вы также никогда не напишите функцию, имеющую тип
Поэтому Ctrl и предложил Вам использовать Ratio.
0
|
||||||
|
Супер-модератор
|
||
| 14.10.2012, 16:31 | ||
|
Действительное число - это (в общем случае) множество всех десятичных дробей (включая, конечные, периодические и непериодические). Компьютерное вещественное - это не математическое вещественное (т.к. в мантиссе конечных размеров нельзя разместить даже периодическую дробь). Непонимание этой разницы приводит к неприятным сюрпризам.
Например, составьте программу вычисления синуса разложением в ряд с заданной точностью. А потом попробуйте посчитать знач. синуса при x=10, 20, 100, 1000, 1000 и т.д. И увидите, что при малых значениях аргумента точность будет очень хорошей, а при больших синус окажется больше единицы. Причина - накопление погрешности. Добавлено через 2 минуты
0
|
||
|
|
||
| 14.10.2012, 16:46 | ||
|
Не по теме: Intel как раз не виноват. Он делает то, что он делает (простите капитанство)
0
|
||
|
17 / 7 / 0
Регистрация: 20.08.2012
Сообщений: 51
|
|
| 14.10.2012, 17:14 [ТС] | |
|
Mysterious Light, это все конечно очень мило, но как уже заметил выше Catstail, компьютерное вещественное число - всего лишь симуляция математического вещественного с максимально возможным правдоподобием. Разумеется, я понимаю, что округление при рассчетах в числах с плавающей точкой неизбежны, но не до такой же степени!
В моем тестовом примере рассчеты идут с точностью до 0.1. Уверяю вас, какой-нибудь вшивый РНР, в данной задаче, выдаст абсолютно правильный результат. Я все же склонен полагать, что виноват именно Хаскел.
0
|
|
|
17 / 7 / 0
Регистрация: 20.08.2012
Сообщений: 51
|
||||||
| 14.10.2012, 17:49 [ТС] | ||||||
|
Пожалуйста. Вот функциональность, копирующая мой пример на Хаскеле...
0
|
||||||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 14.10.2012, 18:18 | |
|
0
|
|
| 14.10.2012, 18:36 | |
|
Не по теме: А я думал это ошибка пентиумов, связанная с ошибочным переводом двоичного числа в десятичное и наоборот. Не по теме: Да, я это сообщение жёстко заредактировал.
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 14.10.2012, 18:39 | |
|
На самом деле, это вполне ожидаемый результат, связанный с неточностью представления чисел с плавающей точкой и с ошибками арифметических операций над ними. Такой же результат должен быть получен во всех языках, в которых действительные числа реализованы в соответствии со стандартом IEEE 754. То есть почти во всех существующих ЯП.
1
|
|
|
17 / 7 / 0
Регистрация: 20.08.2012
Сообщений: 51
|
|
| 14.10.2012, 18:42 [ТС] | |
|
0
|
|
| 14.10.2012, 18:45 | |
|
Не по теме: Я думаю, что если программно реализовать решение этой проблемы (свои операции, с блюскрином и октетами), то всё будет считаться точно... но вот только медленнее, чем при использовании стандартных процессорных команд. Не по теме: Про честность... это в пхп у автора округляется результат что-ли?
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
| 14.10.2012, 18:49 | ||||||
|
flammberg, ну так замечание ~OhMyGodSoLong~ тут как раз к месту. print в первом случае выводит округленный результат, а при форматировании уже получаются честные 0.99999999999999989.
А вариант без форматирования аналогичен хаскельному:
0
|
||||||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 14.10.2012, 18:49 | ||
|
1
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 14.10.2012, 19:01 | |
|
А вообще, обычно ошибки в вычислениях с плавающей точной настолько малы, что на них вполне спокойно можно забить (если, конечно, мы не занимаемся денежными расчетами или управлением АЭС). В противном случае используем рациональные числа или числа с фиксированной точкой.
0
|
|
| 14.10.2012, 19:26 | |
|
Не по теме: Nameless One, так и представил:
0
|
|
| 14.10.2012, 19:26 | |
|
Помогаю со студенческими работами здесь
20
Вычислить сумму с точность до e. Точность достигается, когда очередное слагаемое получается <= e Оператор Until. Вычислить сумму с точность до e. Точность достигается, когда очередное слагаемое получается <= e
В заданном массиве из 5 действительных чисел определите количество чисел, не попадающих в интервал от -1 до 1.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|