81
правка
Изменения
Новая страница: «Короче, смотрите, всё не так сложно как кажется. Первый и главный совет — почитайте презен...»
Короче, смотрите, всё не так сложно как кажется.
Первый и главный совет — почитайте презенташку Антона и посмотрите видео! Очень жаль, что лекториум именно в этот момент переезжает.
Ну дык вот.
Проблема — операции связанные с числами с плавающей точкой нифига не точны. Мы хотим оценить сверху эту самую неточность. В данном случае речь идёт об оценке знака векторного произведения.
19 слайд презенташки — тут даны определения операций с соответствующими погрешностями, которые собственно делает компьютер . <tex>\delta</tex> — погрешность конкретной операции, она различная для каждой операции, но мы её можем оценить как <tex>|\delta| \le \epsilon</tex>.
Смотрим следующее утверждение. Тут задается операция векторного произведения для трех точек, как она рассчитывается в компьютере. Мы же хотим оценить эталонные вычисления (операции будут не в кружочках).
Для начала выделим достаточное условие. Мы утверждаем, что если <tex>|\tilde v - v| \le |\tilde v|</tex>, то этого достаточно для того, чтобы у <tex>\tilde v</tex> и <tex>v</tex> был одинаковый знак. Проверяется это непосредственно, эта штука должна быть эквивалентна тому утверждению, что одномерный шар радиуса <tex>|\tilde v - v|</tex> с центром в точке <tex>\tilde v</tex> не пересекался с нулём. Нарисуйте картинку и всё осознаете. {{TODO| t = запилите рисунок, где есть 0, ось X, и на ней описанный шар!}}
Окей, у нас есть подобное условие.
теперь раскроем <tex>|\tilde v - v|</tex> по нашим определениям. Следующим шагом будет раскрытие знаков в кружочке (смотрите 23 слайд).
Следующий переход (на том же 23 слайде) скорей всего вам не понятен. Поясню, выражение <tex>|\tilde v - v|</tex> перегруппировали таким образом, чтобы с помощью правил <tex>|a - b| \le |a| + |b| </tex> и <tex>|a*b| = |a|*|b| </tex> мы смогли оценить сверху <tex>|\tilde v - v|</tex> именно таким образом, каким он там оценён.
Заметим, что выражение, обозванное в презенташке как <tex>e</tex>, вычисляется в операциях не компьютерных, а абсолютных. Это плохо, мы не умеем вычислять абсолютно :) Следующий шаг — оцениваем это выражение сверху в модели floating-point(кружочки!). Собственно, там куча промежуточных вычислений, которые я не могу пока привести. И в итоге (смотрите презентацию!) мы получим оценку погрешности вычисления нашей штуки.
{{ODO| t=пилить эту штуку до удобоваримого состояния.}}
Первый и главный совет — почитайте презенташку Антона и посмотрите видео! Очень жаль, что лекториум именно в этот момент переезжает.
Ну дык вот.
Проблема — операции связанные с числами с плавающей точкой нифига не точны. Мы хотим оценить сверху эту самую неточность. В данном случае речь идёт об оценке знака векторного произведения.
19 слайд презенташки — тут даны определения операций с соответствующими погрешностями, которые собственно делает компьютер . <tex>\delta</tex> — погрешность конкретной операции, она различная для каждой операции, но мы её можем оценить как <tex>|\delta| \le \epsilon</tex>.
Смотрим следующее утверждение. Тут задается операция векторного произведения для трех точек, как она рассчитывается в компьютере. Мы же хотим оценить эталонные вычисления (операции будут не в кружочках).
Для начала выделим достаточное условие. Мы утверждаем, что если <tex>|\tilde v - v| \le |\tilde v|</tex>, то этого достаточно для того, чтобы у <tex>\tilde v</tex> и <tex>v</tex> был одинаковый знак. Проверяется это непосредственно, эта штука должна быть эквивалентна тому утверждению, что одномерный шар радиуса <tex>|\tilde v - v|</tex> с центром в точке <tex>\tilde v</tex> не пересекался с нулём. Нарисуйте картинку и всё осознаете. {{TODO| t = запилите рисунок, где есть 0, ось X, и на ней описанный шар!}}
Окей, у нас есть подобное условие.
теперь раскроем <tex>|\tilde v - v|</tex> по нашим определениям. Следующим шагом будет раскрытие знаков в кружочке (смотрите 23 слайд).
Следующий переход (на том же 23 слайде) скорей всего вам не понятен. Поясню, выражение <tex>|\tilde v - v|</tex> перегруппировали таким образом, чтобы с помощью правил <tex>|a - b| \le |a| + |b| </tex> и <tex>|a*b| = |a|*|b| </tex> мы смогли оценить сверху <tex>|\tilde v - v|</tex> именно таким образом, каким он там оценён.
Заметим, что выражение, обозванное в презенташке как <tex>e</tex>, вычисляется в операциях не компьютерных, а абсолютных. Это плохо, мы не умеем вычислять абсолютно :) Следующий шаг — оцениваем это выражение сверху в модели floating-point(кружочки!). Собственно, там куча промежуточных вычислений, которые я не могу пока привести. И в итоге (смотрите презентацию!) мы получим оценку погрешности вычисления нашей штуки.
{{ODO| t=пилить эту штуку до удобоваримого состояния.}}