Минимизация вычислительной погрешности
От: BeastInXmel Россия  
Дата: 10.04.07 09:31
Оценка: :))
Здорово пацаны. В процессе вычислительной обработки определенной математической модели возникает так называемая вычилслительная погрешность. (используется тип double). Так вот вопрос, можно ли как то указать компилятору количество бит для мантиссы и експоненты числа. Или другой вопрос как минимизировать погрешность посредством изменения порядка вычислений? P. S. данный вопрос не является тривиальной, просьба новичкам оставить свое мнение при себе...
Re: Минимизация вычислительной погрешности
От: Programador  
Дата: 10.04.07 09:42
Оценка:
Здравствуйте, BeastInXmel, Вы писали:

MSDN

unsigned int _control87(
unsigned int new,
unsigned int mask
);
unsigned int _controlfp(
unsigned int new,
unsigned int mask
);

_MCW_PC (Precision control)

_PC_24 (24 bits)
_PC_53 (53 bits)
_PC_64 (64 bits)
Re: Минимизация вычислительной погрешности
От: Vzhyk  
Дата: 10.04.07 10:56
Оценка:
BeastInXmel wrote:
>
> Или
> другой вопрос как минимизировать погрешность посредством изменения
> порядка вычислений?
Насколько я помню. При сложении, вычитании чисел погрешность результата
представляет собой максимум погрешностей операндов. При умножении,
делении сумму погрешностей.
Еще надо учитывать специфику конкретного компилятора, процессора.
Еще учитывать конкретный алгоритм, устойчивость его.
Ну а дальше, основываясь на вышесказанном уже строить порядок вычислений
с целью минимизации погрешности. Общий совет тут дать трудно.

Да и еще к этому добавляется сложность чтения полученного кода и т.д.
Может оказаться, что затраты на подобную оптимизацию "не стоят выделки".
Posted via RSDN NNTP Server 2.0
Re: Минимизация вычислительной погрешности
От: Аноним  
Дата: 10.04.07 11:18
Оценка:
Здравствуйте, BeastInXmel, Вы писали:

P. S. данный вопрос не является тривиальной, просьба новичкам оставить свое мнение при себе...

Ну в общем да. Этот вопрос совсем не тривиальный.
Более того, он не зависит от языка.
Тебе может лучше учебники Самарского почитать.

В общем лучше расскажи о задаче.
То, что просишь, скорей всего не сильно тебе поможет.
Re: Минимизация вычислительной погрешности
От: Кодт Россия  
Дата: 10.04.07 16:36
Оценка:
Здравствуйте, BeastInXmel, Вы писали:

BIX> Или другой вопрос как минимизировать погрешность посредством изменения порядка вычислений?


BIX> P. S. данный вопрос не является тривиальной, просьба новичкам оставить свое мнение при себе...

Неслабый апломб... Но с такой постановкой вопроса ответы новичков и экспертов будут мало различаться Так что попробуй сам соответствовать.

Минимизировать погрешность — не просто можно, но и нужно.
Но это зависит от задачи.

Простой пример. Суммирование. Чтобы минимизировать ошибки денормализации, используется алгоритм Хаффмана.
Средний пример. Численное интегрирование (например, движение в переменном поле). Тут тебе и выбор метода интегрирования, и выбор частоты дискретизации.
Сложный пример. Моделирование сил взаимодействия большого числа объектов (объемный заряд, гравитация звездного скопления). Ещё и выбор подходящей модели — например, пространственное дерево.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: Минимизация вычислительной погрешности
От: ArtDenis Россия  
Дата: 10.04.07 16:49
Оценка:
Здравствуйте, BeastInXmel, Вы писали:

BIX>P. S. данный вопрос не является тривиальной, просьба новичкам оставить свое мнение при себе...


Хоть я не разбираюсь в данной проблеме, но всё-таки выскажу своё менение новичка
1. Для кардинальной минимизации погрешности при вычислениях, надо использовать алгоритмы, которые заточены под минимизацию погрешности
2. Если алгоритм, который оптимизирует погрешность вычисления не найден, то можно использовать различные классы для работы с числами очень высокой точности и обычные алгоритмы
3. Если не устраивает скорость работы пункта 2, то можно использовать отложенные вычисления (если конечно это подходит для решения твоей задачи). Отложенные вычисления — это когда объект (как правило — список) хранит все действия, которые с этим объектом производились, а затем за один проход вычисляет результат (при этом порядок выполнения операций оптимизируется для уменьшения погрешности).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re: Минимизация вычислительной погрешности
От: 0x8000FFFF Россия  
Дата: 10.04.07 20:20
Оценка:
Для увеличения производительности и точности используют целочисленную арифметику.
Re[2]: Минимизация вычислительной погрешности
От: 0x8000FFFF Россия  
Дата: 10.04.07 20:22
Оценка:
Нас в универе на каф. прикладной математики учили методам =)
А вообще целочисленная арифметика спасет отца русской демократии.
Re: Минимизация вычислительной погрешности
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 11.04.07 05:49
Оценка:
Hello, BeastInXmel!
You wrote on Tue, 10 Apr 2007 06:31:59 GMT:

B> Здорово пацаны. В процессе вычислительной обработки определенной

B> математической модели возникает так называемая вычилслительная
B> погрешность. (используется тип double). Так вот вопрос, можно ли как то
B> указать компилятору количество бит для мантиссы и експоненты числа. Или
B> другой вопрос как минимизировать погрешность посредством изменения
B> порядка вычислений? P. S. данный вопрос не является тривиальной, просьба
B> новичкам оставить свое мнение при себе...

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

With best regards, Slava Antonov. E-mail: deadbeef@so.yandex.ru
Posted via RSDN NNTP Server 2.0
Re[2]: Минимизация вычислительной погрешности
От: BeastInXmel Россия  
Дата: 12.04.07 05:36
Оценка:
Спасибо всем пацаны, общие идеи понятны.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.