Изменения
Перейти к:
навигация
,
поиск
← Предыдущая правка
Следующая правка →
Погрешность предиката левый поворот
4824 байта добавлено
,
03:06, 30 января 2012
Нет описания правки
{{в разработке}}
hello
Пусть две точки заданны абсолютно точно, а одна - точка внешнего касания двух окружностей <tex>(o_1(x1, y1), r_1)</tex> и <tex>(o_2(x2, y2), r_2).</tex>
Обозначим точку касания как <tex>c.</tex> Тогда:
<tex>\overrightarrow{o_1c} = \frac{r_1}{r_1 + r_2} \cdot \overrightarrow{o_1o_2}, \\
\overrightarrow{o_1o_2} = (x_2 - x_1, y_2 - y_1) \\
c_x = \frac{r_1}{r_1 + r_2} \cdot (x_2 - x_1) + x_1 = \frac{r_1}{r_1 + r_2} \cdot x_2 + \frac{r_2}{r_1 + r_2} \cdot x_1\\
c_y = \frac{r_1}{r_1 + r_2} \cdot (y_2 - y_1) + y_1 = \frac{r_1}{r_1 + r_2} \cdot y_2 + \frac{r_2}{r_1 + r_2} \cdot y_1</tex>
Обозначим
<tex> v = (b - a) \times (c - a) = \\
= (b_x - a_x) (\frac{r_1}{r_1 + r_2} \cdot y_2 + \frac{r_2}{r_1 + r_2} \cdot y_1 - a_y) - \\
- (b_y - a_y) (\frac{r_1}{r_1 + r_2} \cdot x_2 + \frac{r_2}{r_1 + r_2} \cdot x_1 - a_x) = \\</tex>
<tex dpi = 140> = \frac{(b_x - a_x) (r_1 y_2 + r_2 y_1 - a_y (r_1 + r_2)) - (b_y - a_y) (r_1 x_2 + r_2 x_1 - a_x (r_1 + r_2))}{r_1 + r_2}</tex>.
Так как <tex> r_1 + r_2 > 0, </tex> то мы можем оценивать знак выражения <tex>k = v \cdot (r_1 + r_2)</tex>
<tex>k = (b_x - a_x) (r_1 (y_2 - a_y) + r_2 (y_1 - a_y)) - (b_y - a_y) (r_1 (x_2 - a_x) + r_2 (x_1 - a_x)) = \\
= (b_x - a_x) r_1 (y_2 - a_y) + (b_x - a_x) r_2 (y_1 - a_y) - \\
- (b_y - a_y) r_1 (x_2 - a_x) - (b_y - a_y) r_2 (x_1 - a_x)</tex>
Теперь распишем это выражение в дабловой арифметике.
Для сокращения обозначим произведение <tex>(1 + \delta_{p_1}) \cdot (1 + \delta_{p_2}) \cdot \ldots \cdot (1 + \delta_{p_n})</tex> за
<tex>F(p_1, p_2, \ldots , p_n)</tex>
<tex>\tilde{k} = (b_x \ominus a_x) \otimes (r_1 \otimes (y_2 \ominus a_y) \oplus r_2 \otimes (y_1 \ominus a_y)) \ominus \\
\ominus (b_y \ominus a_y) \otimes (r_1 \otimes (x_2 \ominus a_x) \oplus r_2 \otimes (x_1 \ominus a_x)) = \\
= [(b_x - a_x) (r_1 (y_2 - a_y)F(1, 2) + r_2 (y_1 - a_y)F(3, 4))F(5, 6, 7) - \\
- (b_y - a_y) (r_1 (x_2 - a_x)F(8, 9) + r_2 (x_1 - a_x)F(10, 11))F(12, 13, 14)]F(15) = \\
= (b_x - a_x) r_1 (y_2 - a_y)F(1, 2, 5, 6, 7, 15) + \\
+ (b_x - a_x) r_2 (y_1 - a_y)F(3, 4, 5, 6, 7, 15) - \\
- (b_y - a_y) r_1 (x_2 - a_x)F(8, 9, 12, 13, 14, 15) - \\
- (b_y - a_y) r_2 (x_1 - a_x)F(10, 11, 12, 13, 14, 15)
</tex>
<tex> |\delta_i| \leq \varepsilon_m </tex>
Заметим, что <tex> k\approx \tilde{k} </tex>
Теперь оценим абсолютную погрешность <tex> \epsilon = |k - \tilde{k}|. </tex>
<tex> |k - \tilde{k}| = \\
=|r_1(b_x - a_x)(y_2 - a_y) + \\
+ r_2(b_x - a_x)(y_1 - a_y) - \\
- r_1(b_y - a_y)(x_2 - a_x) - \\
- r_2(b_y - a_y)(x_1 - a_x) - \\
- r_1(b_x - a_x)(y_2 - a_y) \cdot F(1, 2, 5, 6, 7, 15) - \\
- r_2(b_x - a_x)(y_1 - a_y) \cdot F(3, 4, 5, 6, 7, 15) + \\
+ r_1(b_y - a_y)(x_2 - a_x) \cdot F(8, 9, 12, 13, 14, 15) + \\
+ r_2(b_y - a_y)(x_1 - a_x) \cdot F(10, 11, 12, 13, 14, 15)| = \\
= |r_1(b_x - a_x)(y_2 - a_y) \cdot (F(1, 2, 5, 6, 7, 15) - 1) - \\
- r_2(b_x - a_x)(y_1 - a_y) \cdot (F(3, 4, 5, 6, 7, 15) - 1) + \\
+ r_1(b_y - a_y)(x_2 - a_x) \cdot (F(8, 9, 12, 13, 14, 15) - 1) + \\
+ r_2(b_y - a_y)(x_1 - a_x) \cdot (F(10, 11, 12, 13, 14, 15) - 1)| \leq \\
\leq |r_1(b_x - a_x)(y_2 - a_y)| \cdot |(F(1, 2, 5, 6, 7, 15) - 1)| + \\
+ |r_2(b_x - a_x)(y_1 - a_y)| \cdot |(F(3, 4, 5, 6, 7, 15) - 1)| + \\
+ |r_1(b_y - a_y)(x_2 - a_x)| \cdot |(F(8, 9, 12, 13, 14, 15) - 1)| + \\
+ |r_2(b_y - a_y)(x_1 - a_x)| \cdot |(F(10, 11, 12, 13, 14, 15) - 1)| = \\
</tex>
Пусть <tex> t = (|(b_x - a_x) (c_y - a_y)| + |(b_y - a_y) (c_x - a_x)|).</tex> Получаем, что
<tex> \epsilon = |v - \tilde{v}| \leq t \cdot (4 \varepsilon_m + 6 \varepsilon_m^2 + 4 \varepsilon_m^3 + \varepsilon_m^4). </tex>
<tex>\tilde {t} = (|(b_x - a_x) (c_y - a_y) (1 + \delta_1) (1 + \delta_2) (1 + \delta_3)| + \\
+ |(b_y - a_y) (c_x - a_x) (1 + \delta_4) (1 + \delta_5) (1 + \delta_6)|) (1 + \delta_7) \geq \\
\geq |(b_x - a_x) (c_y - a_y) (1 - \varepsilon_m)^3)|(1 - \varepsilon_m) + \\
+ |(b_y - a_y) (c_x - a_x) (1 - \varepsilon_m)^3)|(1 - \varepsilon_m) = \\
= |(b_x - a_x) (c_y - a_y)| (1 - \varepsilon_m)^4 + |(b_y - a_y) (c_x - a_x)| (1 - \varepsilon_m)^4 = \\
= (|(b_x - a_x) (c_y - a_y)| + |(b_y - a_y) (c_x - a_x)|) (1 - \varepsilon_m)^4 = t \cdot (1 - \varepsilon_m)^4</tex>
Итого:
<tex> t \leq \tilde{t} \frac{1}{(1 - \varepsilon_m)^4} = \tilde{t} (1 + 4 \varepsilon_m + 10 \varepsilon_m^2 + 20 \varepsilon_m^3 + \cdots) </tex>
<tex> \epsilon = |v - \tilde{v}| \leq \tilde{\epsilon} \leq \tilde{t} (1 + 4 \varepsilon_m + 10 \varepsilon_m^2 + 20 \varepsilon_m^3 + \cdots) (4 \varepsilon_m + 6 \varepsilon_m^2 + 4 \varepsilon_m^3 + \varepsilon_m^4) </tex>
Анонимный участник
192.168.0.2
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
Варианты
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная статья
Справка
Инструменты
Спецстраницы