Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » расхождения в вычислениях на С++ !

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

student

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как побороть такое:
есть source либа с алгоритмами (типа SVD - singular value decomposition, не важно)
если ее компилить в VC7 / VC6/ GCC-Linux, GCC-Win, IntelCC-Linux и т.д. а потом считать ими, то результаты - у всех отличаются
частично проблема решается если компилеру сказать не использовать extended precision (80-bit) а только double .
но остается маленький регион со стабильными различиями в результатах
(проблема  еще в том что не известен верный результат...)
 
Подкиньте идей  Как же побороть различия ?

Всего записей: 47 | Зарегистр. 07-11-2002 | Отправлено: 00:33 08-10-2004
CamTracer

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Естессно, отличаются. Каждый компилятор работет с цифрами по-разному. Я в свое время тоже сталкивался, но бороться не стал - прокатило и так...:-) Главное преподу объяснить, в чем фигня.
Можно, конечно загрубить вычисления (переход от precision к double), но это плохая мысль, поскольку напоминает обычную подгонку.

Всего записей: 264 | Зарегистр. 07-07-2004 | Отправлено: 09:10 08-10-2004
OldGopher



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Необходимо реализовывать специальные алгоритмы высоких точностей.
Но это сложно...
 
Надо выяснить, где именно происходит развал точностей. К правило, это вычисления сложных функций с участием многих тригонометрий...


----------
Женщина - это такая баба, с которой хочется заняться сексом немедленно... (с) 2006

Всего записей: 3802 | Зарегистр. 25-10-2001 | Отправлено: 16:02 08-10-2004
student

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CamTracer

Цитата:
Главное преподу объяснить, в чем фигня

Препод - фигня! Я разобраться  хочу!
 
OldGopher

Цитата:
Необходимо реализовывать специальные алгоритмы высоких точностей.

Где про это почитать?
 

Цитата:
Надо выяснить, где именно происходит развал точностей.

пока именно это и делаю
 
есть ли рекомендации как этого избегать ?!
 
PS линки welcome!
 
Добавлено
CamTracer

Цитата:
Естессно, отличаются. Каждый компилятор работет с цифрами по-разному.

вообще-то --  это баги. и их надо править

Всего записей: 47 | Зарегистр. 07-11-2002 | Отправлено: 17:54 08-10-2004
CamTracer

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
вообще-то --  это баги. и их надо править

 
Сие не баги, сие естественные вещи, поскольку разрядность компутера ограничена, а возникающая из-за этого ошибка имеет свойство накапливаться. А каждый компилятор их ловит по-разному. Или вообще не ловит.
На самом деле, ошибки - это целая проблема. Интересное направление - методы "цифра за цифрой". Это методы из разряда "невероятно, но работает".... Сходимость офигенская - для моих задач хватало десяти шагов. Я честно говоря, так и не смог разобраться, откуда взялись там формулы, по-моему, авторы (Меджит и компания) либо гении, либо делали чисто эмпирический подбор. Я освоил только алгоритм.
Можно конечно решать эту задачу "в лоб", но это означает, что придется жертвовать скоростью вычислений - с увеличением количества байт, отводимого под каждое число, скорость работы алгоритма уменьшается в геометрической прогрессии.

Всего записей: 264 | Зарегистр. 07-07-2004 | Отправлено: 16:54 11-10-2004
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
student
вычисли с погрешностью
так и получится: результат такой-то +- погрешность

----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 17:30 11-10-2004
student

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CamTracer

Цитата:
...методы "цифра за цифрой"...

СПАСИБО!!  
 
J. E. Meggitt    Digit-by-digit methods for polynomials  ?
будем искать/читать
 
есть еще умные подходы какие ?
 

Всего записей: 47 | Зарегистр. 07-11-2002 | Отправлено: 19:47 13-10-2004
CamTracer

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
J. E. Meggitt    Digit-by-digit methods for polynomials

Но только эти методы существуют не только для полиномов, но и для тригонометрических функций и для логарифмов и еще фиг знает для чего. Так что этой книжулины мало для полноценных расчетов. Хотя если у тебя все ограничено исключительно полиномами, тогда конечно...

Всего записей: 264 | Зарегистр. 07-07-2004 | Отправлено: 11:33 15-10-2004
OldGopher



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В принципе, точность тригонометрии гарантируется для двух основных квадрантов.
Поскольку точность задания Пи ограничена, то чем больше модуль аргумента, тем ниже точность. Ибо приходится вычитать Пи, помноженное на большой коэффициент...
 
Цифра-за-цифрой или потребует сверхдолгих вычислений, или опять таки развалится на высоких аргументах (ИМХО, т.к. последний раз этим занимался лет 15 назад)...


----------
Женщина - это такая баба, с которой хочется заняться сексом немедленно... (с) 2006

Всего записей: 3802 | Зарегистр. 25-10-2001 | Отправлено: 14:49 15-10-2004
bytehunter



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
OldGopher

Цитата:
Поскольку точность задания Пи ограничена

Есть много программ//библиотек, вычисляющих Пи до любого знака...

Всего записей: 883 | Зарегистр. 03-02-2004 | Отправлено: 15:02 15-10-2004
CamTracer

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Цифра-за-цифрой потребует сверхдолгих вычислений

Я моделировал движение по круговой траектории для шестикоординатного робота год назад. Скорость вполне приемлемая - на весь расчет уходило около 0.05сек. Считал до 4-го знака. На 11-ом и 12-ом шагах в 4-ом знаке цифры совпадали.
Насчет аргументов, честно говоря не знаю, все, что больше пи/2 сводил к первому квадранту формулами приведения.

Всего записей: 264 | Зарегистр. 07-07-2004 | Отправлено: 15:24 15-10-2004
OldGopher



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
bytehunter
Теперь прикиньте, насколько точно надо вычислить Пи, чтобы взять до последнего гарантированного знака синус от 10Е100?  
А если таких синусов надо брать много?

----------
Женщина - это такая баба, с которой хочется заняться сексом немедленно... (с) 2006

Всего записей: 3802 | Зарегистр. 25-10-2001 | Отправлено: 22:56 15-10-2004
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » расхождения в вычислениях на С++ !


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru