Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 22 • Страница 1 из 21  2  >
  Версия для печати (полностью) Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 12.08.2008
Есть у меня один знакомый, занимается вопросами искусственного интеллекта и возможности безлимитного ресурса для любого устройства при должном уходе, а также несколькими другими сферами деятельности. В процессе написания очередной статьи по этому поводу возникла следующая задача:
Есть система k линейных уравнений с переменными x1, x2, ... , xk. Вид уравнений:


x1+x2+...+x(k-2)+x(k-1)+0=a
x1+x2+...+x(k-2)+0+xk=b
x1+x2+...+0+x(k-1)+xk=c
...
x1+0+...+x(k-2)+x(k-1)+xk=defgh
0+x2+...+x(k-2)+x(k-1)+xk=defghi


Речь идет о нескольких тысячах таких уравнений (и, соответственно, переменных). Числа 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 раз.

 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
БезСерця
Ну, 64М после знака запятой вроде умеет считать :) А так - всё будет зависеть от программы - какие в неё заложены допуски точности.

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

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бит. Точность соответственно.


 

Member
Статус: Не в сети
Регистрация: 12.08.2008
Спасибо всем за ответы.
serj
А как же ПО для математических операций? Там что, постоянно разряды теряются? Не верю. (Про мантиссу и сопр знаю). Просто на тысячах уравнений с числами << 0 такая точность неприемлима.
Megagad
64М? 64 000 000 знаков после запятой? :insane:
MaD!CaT
ПО не нужно, интересует только теоретическая часть.

_________________
Никто не знает столько, сколько не знаю я.


 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
БезСерця писал(а):
64 000 000 знаков после запятой?

ага :) тест "суперПИ" - в публичном пользовании версия позволяющая считать до 32000000 знаков после запятой.

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

Member
Статус: Не в сети
Регистрация: 28.10.2007
БезСерця
Цитата:
А как же ПО для математических операций? Там что, постоянно разряды теряются?

Ну, потому оно так и называется, По для мат.выч., ибо там не все так просто;)
А вообще за теорией можно обратиться, например, на хобот.


 

Member
Статус: Не в сети
Регистрация: 12.08.2008
Megagad писал(а):
БезСерця писал(а):
64 000 000 знаков после запятой?

ага :) тест "суперПИ" - в публичном пользовании версия позволяющая считать до 32000000 знаков после запятой.


Не, ну то СуперПи, там может и алгоритм быть под него заточен (число всего _одно_), а вот случайные, по сути, числа, - это, ИМХО, другой вопрос...

Добавлено спустя 49 секунд:
derek_keiz
Вариант, щас зафлеймлю и там=)

_________________
Никто не знает столько, сколько не знаю я.


 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
БезСерця
Как я и гвоорил - всё зависит ОТ СОФТА! Вот только время расчёта такой системы уравнений будет ну очень большим. Кстати, а вы не пробывали эту систему в матрицу превратить? С ней и работать легче, и обрабатывать проще.

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

Moderator
Статус: Не в сети
Регистрация: 27.06.2008
Откуда: Таганрог
Если есть расчёт погрешности, по идее в ПО должны быть и алгоритмы исправления этой погрешности.


 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
Блин! Я слепой! Убейте меня - у вас и так получается матрица с нулями по диагонали(хоть у бейте - не поню название). Эх, зря я на "матане" спал :(

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
треугольная


 

Member
Статус: Не в сети
Регистрация: 12.08.2008
По матрицам:
http://ru.wikipedia.org/wiki/%D0%9C%D0% ... 1%86%D0%B0


Так какой же все-таки ответ? Есть теоретическая возможность точно посчитать или нет?

_________________
Никто не знает столько, сколько не знаю я.


 

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 нам заменяет небосвод...


 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
alpet
Ну, если верить вики - кластер из 64 узлов, имеющий 1ТБ оперативки!! Связь - 100% оптика(например 10Гб фибра)

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

Member
Статус: Не в сети
Регистрация: 05.01.2007
Теоретически можно считать число со сколь угодно малой погрешностью.


 

Member
Статус: Не в сети
Регистрация: 12.08.2008
Спасибо всем ответившим. Итак, окончательный ответ следующий:
Ruberus писал(а):
Теоретически можно считать число со сколь угодно малой погрешностью.

Я правильно понял?

_________________
Никто не знает столько, сколько не знаю я.


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Если используются неповреждающие команды (+, -, *) и целочисленная арифметика, то погрешности нет.
Во всех остальных случаях при вычислениях погрешность только растет.
Например - ТЕОРИЯ ПОГРЕШНОСТЕЙ


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 22 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: 4e_alex, Hump, LifeX, Vik321, ZnameZ и гости: 43


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan