Решение упражнения 2.15 из SICP

22 January, 2008 (21:06) | Решения упражнений

Мы немножко забежали вперед в предыдущем упражнении и получили на примерах подтверждение утверждения Евы о том, что вторая процедура расчета сопротивления для параллельных резисторов (par2) дает более точные результаты при работе с пакетом интервальной арифметики, разработанным Лизой.

Но вернемся к более общей идее Евы о том, что формула для вычисления интервалов, которая использует Лизину систему, будет давать более узкие границы погрешности, если ее удастся записать так, чтобы ни одна переменная, представляющая неточную величину, не повторялась. Попробуем привести соображения, обосновывающие это утверждение (подчеркну, что это именно соображения, а не строгое доказательство).

В двух предыдущих упражнениях мы установили, что погрешность произведения и частного равна сумме погрешностей их аргументов (множителей или делимого/делителя соответственно).

Несложно вывести, что погрешность суммы или разности находится в пределах погрешностей их аргументов (между меньшей и большей погрешностями слагаемых для суммы либо уменьшаемого/вычитаемого для разности).

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

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

Comments

Comment from Sergey Khenkin
Date: February 19, 2008, 4:47 pm

В комментариях к следующему упражнению thror высказывает очень интересные мысли по теме. Рекомендую почитать.

Comment from gorilych
Date: July 18, 2008, 5:39 am

Всё гораздо проще.

Автор специально привел пример – A/A – чтобы всё стало ясно. Часть выражения принимает максимум при минимальном A, другая часть принимает максимум при минимуме A. Потом эти максимумы бездумно перемножаются. А ведь А не может одновременно появлятся в выражении в разных значениях.

Это как если бы мы вычисляли параллельное сопротивление, при этом в числителе ставили величину для сопротивления больше, а в знаменателе меньше, что физически означает что у нас сопротивление одномоментно и больше и меньше. Вот вешу я в пределах от 60 до 80, но когда встаю на весы, у меня стрелка два значения сразу не показывает 🙂

Иначе и получается абсурд, из выражения, тождественно равного единице _всегда_ (А/А) получаем размытый интервал.

Comment from gorilych
Date: July 18, 2008, 5:41 am

“Часть выражения принимает максимум при минимальном A, другая часть принимает максимум при минимуме A”
я хотел сказать
“Часть выражения принимает максимум при минимальном A, другая часть принимает максимум вместе с максимумом A”

Write a comment