Участник:System29a/Вычисление погрешностей
Короче, смотрите, всё не так сложно как кажется.
Первый и главный совет — почитайте презенташку Антона и посмотрите видео! Очень жаль, что лекториум именно в этот момент переезжает.
Ну дык вот.
Проблема — операции связанные с числами с плавающей точкой нифига не точны. Мы хотим оценить сверху эту самую неточность. В данном случае речь идёт об оценке знака векторного произведения.
19 слайд презенташки — тут даны определения операций с соответствующими погрешностями, которые собственно делает компьютер .
— погрешность конкретной операции, она различная для каждой операции, но мы её можем оценить как .Смотрим следующее утверждение. Тут задается операция векторного произведения для трех точек, как она рассчитывается в компьютере. Мы же хотим оценить эталонные вычисления (операции будут не в кружочках).
Для начала выделим достаточное условие. Мы утверждаем, что если TODO: запилите рисунок, где есть 0, ось X, и на ней описанный шар!
, то этого достаточно для того, чтобы у и был одинаковый знак. Проверяется это непосредственно, эта штука должна быть эквивалентна тому утверждению, что одномерный шар радиуса с центром в точке не пересекался с нулём. Нарисуйте картинку и всё осознаете.Окей, у нас есть подобное условие. теперь раскроем
по нашим определениям. Следующим шагом будет раскрытие знаков в кружочке (смотрите 23 слайд).Следующий переход (на том же 23 слайде) скорей всего вам не понятен. Поясню, выражение
перегруппировали таким образом, чтобы с помощью правил и мы смогли оценить сверху именно таким образом, каким он там оценён.Заметим, что выражение, обозванное в презенташке как
, вычисляется в операциях не компьютерных, а абсолютных. Это плохо, мы не умеем вычислять абсолютно :) Следующий шаг — оцениваем это выражение сверху в модели floating-point(кружочки!). Собственно, там куча промежуточных вычислений, которые я не могу пока привести. И в итоге (смотрите презентацию!) мы получим оценку погрешности вычисления нашей штуки.