Текущий архив: 2008.04.06;
Скачать: CL | DM;
Вниз
Вопрос к обсуждению (о вещественном типе данных) Найти похожие ветки
← →
Alex (2008-03-08 13:52) [0]Предлогаю вопрос к обсуждению. Максимальная точность (т.е. размер вводимого-выводимого числа), даже в вещественном типе данных не превышает 15-16 знаков. Для некоторых инженерно-научных расчётов это не густо. Есть ли возможность раздвинуть эти пределы, или нужно обращаться к другим компилляторам или мат-пакетам?
← →
Семеныч (2008-03-08 14:09) [1]1. "Родной" тип extended дает не 15-16, а 19-20 знаков.
2. BCD. Сам не юзал, но не сомневаюсь, что модули для работы с BCD в Delphi есть и что найти их несложно.
3. Главное. Инженерно-научные расчёты, как правило, предполагают достаточно длинные цепочки вычислений, при которых погрешность заметно накапливается. Еще один источник погрешности (быть может, главный) - это достоверность (а нередко и плохая численная обусловленность) самой математической модели. Плюс погрешность метода ее численного решения.
Поэтому возникает вопрос - зачем иметь, скажем, 40 знаков, если верными из них являются, например, только первые 8 (цифра более-менее реальная, да и добиться точности даже в 8 знаков бывает ой как непросто).
Реально, тот же самый результат (8 верных знаков) даст и extended, но скорость счета при этом получится намного выше.
← →
Alex (2008-03-08 14:17) [2]Например, нужно проанализировать уравнение, результат которого возрастает большими скачками(переменная (х) находится в показателе степени). Вещественного типа хватает на 5-10 результатов. Тут мало даже Extended и др.
← →
Семеныч (2008-03-08 14:19) [3]Кстати, забыл упомянуть еще один источник погрешности (притом нередко весьма существенный) - погрешность исходных данных.
Вы когда-нибудь встречали справочники (например, по свойствам веществ и материалов), в которых бы приводились данные с точностью хотя бы 6 знаков? Я не встречал.
А если исходные данные имет точность в N знаков, то ясно, что точность результатов расчета выше N быть никак не может, только ниже. Тогда зачем же хранить еще 5N совершенно бесполезных знаков? Вполне достаточно пары-тройки запасных, и все.
← →
Семеныч (2008-03-08 14:21) [4]> Alex (08.03.08 14:17) [2]
Тогда причем тут точность? Надо говорить о диапазоне, а не о точности. Тип extended дает диапазон от 3.6E-4951 до 1.1E+4932 - неужели этого мало?
← →
DrPass © (2008-03-08 14:24) [5]
> Есть ли возможность раздвинуть эти пределы, или нужно обращаться
> к другим компилляторам или мат-пакетам?
Другие компиляторы тут не помогут. Extended - это "аппаратный" тип, 80-битовое вещественное число. Самый емкий тип данных, с которым способен обращаться процессор компьютера. Если тебе нужно работать с бОльшей точностью и разрядностью, необходимо использовать дополнительные математические библиотеки, которые оперируют с такими числами по частям. Конечно, это удовольствие будет не бесплатным - быстродействие таких вычислений будет меньше на порядок (если не на несколько порядков), чем при работе с Extended
← →
Alex (2008-03-08 14:46) [6]То-то и оно что нужно точное значение (до единицы-для математики это существенно ) каждого результата, даже если результат 20-30 знаков (чтобы можно было и их обобщить, если получиться). Кстати, что такое BCD?
← →
Alex (2008-03-08 16:11) [7]DrPass
> необходимо использовать дополнительные математические библиотеки,
> которые оперируют с такими числами по частям
Нельзя ли поподробнее?
← →
mv (2008-03-08 16:15) [8]BigInteger - пиши на Java =)
← →
Семеныч (2008-03-08 16:37) [9]> mv (08.03.08 16:15) [8]
1. BigInteger - это целый тип, а нужен вещественный.
2. Никакая Java не сможет сделать то, что не умеет делать CPU, если не использовать программную эмуляцию. А если ее использовать, то и Java не нужна, такие библиотеки существуют и для других языков.
3. Писать на Jav"е сложную математику - не самый лучший выбор (мягко говоря).
← →
DrPass © (2008-03-08 16:47) [10]
> Alex (08.03.08 16:11) [7]
> DrPass
> > необходимо использовать дополнительные математические
> библиотеки,
> > которые оперируют с такими числами по частям
> Нельзя ли поподробнее?
Например, скачай модуль BigFloat.pas
← →
Alex (2008-03-08 16:57) [11]> DrPass
> Например, скачай модуль BigFloat.pas
Благодарю, это на Borland-овском сайте или на специальном для Delphi?
← →
DrPass © (2008-03-08 17:22) [12]На torry.net должен быть. И гугль еще десяток других мест подскажет
Страницы: 1 вся ветка
Текущий архив: 2008.04.06;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.006 c