Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];

Вниз

Вопрос к обсуждению (о вещественном типе данных)   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
2-1205311783
Andrewtitoff
2008-03-12 11:49
2008.04.06
Обновление и позиция формы


9-1168517407
akaValerius
2007-01-11 15:10
2008.04.06
Посмотреть на верх.


2-1204861213
Георгий
2008-03-07 06:40
2008.04.06
FormActivate


15-1203158175
Ламот
2008-02-16 13:36
2008.04.06
Аудио аппаратура.


2-1204986634
Sokolov
2008-03-08 17:30
2008.04.06
Как распечатать результат выполнения SQL запроса (одну запись)?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский