Есть у меня один знакомый, занимается вопросами искусственного интеллекта и возможности безлимитного ресурса для любого устройства при должном уходе, а также несколькими другими сферами деятельности. В процессе написания очередной статьи по этому поводу возникла следующая задача: Есть система k линейных уравнений с переменными x1, x2, ... , xk. Вид уравнений:
Речь идет о нескольких тысячах таких уравнений (и, соответственно, переменных). Числа a, b, c, ..., defgh, defghi имеют вид (y + 0,000 000 000 z); y Є (0,3) , z Є (0,9). При этом a, b, c, ..., defgh, defghi от уравнения к уравнению мало отличаются один от другого (разница в том же девятом-десятом разряде). Внимание, вопрос: посчитает ли машина точно значения x1, x2, ... , xk? Если нет, то с какой погрешностью? Интересует не конкретный софт (MathCAD, MathLab и т.п.), хотя возможность его применения будет считаться плюсом; имеется ввиду именно теоретическая способность работы компьютера с большим количеством разрядов (знаков после запятой). С первого взгляда, кажется, что проблем возникнуть не должно. Но так ли это на самом деле? Если есть какие-либо ссылки по данному вопросу, буду благодарен (тематические форумы очень приветствуются). Вообще буду благодарен за любую инфу.
_________________ Никто не знает столько, сколько не знаю я.
Moderator
Статус: Не в сети Регистрация: 27.06.2008 Откуда: Таганрог
БезСерця Посчитает, проблем быть не должно, машине то особо разницы нет считать в большую или меньшую сторону без запятой. Попытайся написать программу в том же С++ или ещё каком нибудь языке, должен переварить без проблем.
Последний раз редактировалось MaD!CaT 03.08.2009 21:00, всего редактировалось 1 раз.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
БезСерця, почитайте, как работает FPU и формат его данных. Число состоит из мантиссы и порядка. Практически при любом действии происходит потеря точности. Например, разрядность мантиссы 3 десятичных числа. Первое число было 850e10 (мантисса 850, порядок 10), второе - 111e9 (м=111? порядок 9). Например, их надо сложить. Для этого они приводятся к одному порядку (я тут утрирую, но не суть), т.е. складываем 850e10 с 011.1e10 В сумме будет 861.1е10, правильно? Правильно, но не так, в мантиссе только три разряда и '0.1' потеряется и будет 861е10. Поэтому числа в FPU априори неточные.
FPU может хранить (да и вычислять) числа разной размерности, от 80 бит (64 бита мантисса, 16 порядок) до 32бит. Точность соответственно.
Спасибо всем за ответы. serj А как же ПО для математических операций? Там что, постоянно разряды теряются? Не верю. (Про мантиссу и сопр знаю). Просто на тысячах уравнений с числами << 0 такая точность неприемлима. Megagad 64М? 64 000 000 знаков после запятой? MaD!CaT ПО не нужно, интересует только теоретическая часть.
_________________ Никто не знает столько, сколько не знаю я.
Member
Статус: Не в сети Регистрация: 16.11.2007 Откуда: Крым, Земля! Фото: 4
БезСерця Как я и гвоорил - всё зависит ОТ СОФТА! Вот только время расчёта такой системы уравнений будет ну очень большим. Кстати, а вы не пробывали эту систему в матрицу превратить? С ней и работать легче, и обрабатывать проще.
_________________ Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было. Hi Jack - Hi! Hijack - Hi! Broni всех стран объединяйтесь!
Member
Статус: Не в сети Регистрация: 30.07.2006 Откуда: Москва-Ярик
Аппаратно "большие числа" FPU вычислять не может, а программно - можно считать и очень-очень большие числа: на 64-битных CPU, они ограничиваются объёмом памяти, а некоторые вычисления порой можно "распараллелить". Оперирование даже одним большим числом (весом в мегабайты), требует от CPU множества затратных операций в т.ч. обращения к памяти. Кстати, по поводу числа Pi, кажется там уже знаков насчитали больше, чем размер среднестатистического HDD?
_________________ Плавайте поездами Аэрофлота! И синий BSOD нам заменяет небосвод...
Member
Статус: Не в сети Регистрация: 16.11.2007 Откуда: Крым, Земля! Фото: 4
alpet
Цитата:
Текущий рекорд — 1 241 100 000 000 десятичных знаков, установлен Канадой и его группой в 2002 году
всего 1.2ТБ(если цыфра - один байт) - влезет на "полторушник". ВОт только интересно - тхт-шник с этим числом сколько часов будет в блокноте открываться?
_________________ Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было. Hi Jack - Hi! Hijack - Hi! Broni всех стран объединяйтесь!
Member
Статус: Не в сети Регистрация: 30.07.2006 Откуда: Москва-Ярик
Megagad писал(а):
всего 1.2ТБ
Давний рекорд, я думал он уже устарел. Дрожь пробирает, когда думаю как они его считали - это-ж одно число наверное приходилось на огромном количестве хостов держать в памяти, и между этими хостами нехилый трафик был... А если на классическом современном ПК считать такой объём - свопинг убьет сотни винтов в массивах
_________________ Плавайте поездами Аэрофлота! И синий BSOD нам заменяет небосвод...
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Если используются неповреждающие команды (+, -, *) и целочисленная арифметика, то погрешности нет. Во всех остальных случаях при вычислениях погрешность только растет. Например - ТЕОРИЯ ПОГРЕШНОСТЕЙ
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения