Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Curves.doc
Скачиваний:
51
Добавлен:
01.09.2019
Размер:
4.51 Mб
Скачать

Примеры Вычислений

Два примера, один с простыми узлами, другой с множественными, будут довольно подробно рассмотрены на этой странице.

Простые Узлы

Допустим, узловой вектор равен U = { 0, 0.25, 0.5, 0.75, 1 }. Отсюда, m = 4 и u0 = 0, u1 = 0.25, u2 = 0.5, u3 = 0.75 и u4 = 1. Базисные функции 0 степени простые. Таких функций четыре: N0,0(u), N1,0(u), N2,0(u) и N3,0(u), определенные на узловых интервалах [0,0.25,), [0.25,0.5), [0.5,0.75) и [0.75,1), соответственно, как показано ниже.

Следующая таблица дает результат всех Ni,1(u):

Базисная Функция

Границы

Уравнение

N0,1(u)

[0, 0.25)

4u

[0.25, 0.5)

2(1 - 2u)

N1,1(u)

[0.25, 0.5)

4u - 1

[0.5, 0.75)

3 - u

N2,1(u)

[0.5, 0.75)

2(2u - 1)

[0.75, 1)

4(1 - u)

Вот графики этих базисных функций.

Из функций Ni,1(u), можно вычислить базисные функции второй степени. Так как m = 4, p = 2, а m = n + p + 1, то n = 1 и есть всего две базисные функции второй степени N0,2(u) и N1,2(u). Следующая таблица - это результат:

Базисная Функция

Границы

Уравнение

N0,2(u)

[0, 0.25)

8u2

[0.25, 0.5)

-1.5 + 12u - 16 u2

[0.5, 0.75)

4.5 - 12u + 8 u2

N1,2(u)

[0.25, 0.5)

0.5 - 4u + 8u2

[0.5, 0.75)

-1.5 + 8u - 8u2

[0.75, 1)

8(1 - u)2

Следующий рисунок показывает две базисные функции. Три вертикальные синие линии указывают положения узлов. Заметьте, что каждая базисная функция является составной кривой, состоящей из трех отрезков кривых 2 степени. Например, N0,2(u) это зеленая линия, являющаяся объединением трех парабол, построенных на отрезках [0,0.25), [0.25, 0.5) и [0.5,0.75). Три этих отрезка кривых объединяются вместе, образуя форму колокола. Как упоминалось на предыдущей странице, в узлах сложная кривая является C1-непрерывной.

Множественные Узлы

Если узловой вектор содержит множественные узлы, мы сталкиваемся с ситуацией 0/0, как будет видно позже. Таким образом, принимаем 0/0 равным 0. К счастью, это только для вычислений вручную. Для компьютерного представления существует эффективный алгоритм без такой проблемы. Кроме того, если ui - узел множественности k (т.e., ui = ui+1 = ... = ui+k-1), то узловые интервалы [ui,ui+1), [ui+1,ui+2), ..., [ui+k-2,ui+k-1) не существуют, и в итоге Ni,0(u), Ni+1,0(u), ..., Ni+k-1,0(u) являются нулевыми функциями.

Возьмем узловой вектор U = { 0, 0, 0, 0.3, 0.5, 0.5, 0.6, 1, 1, 1 }. Таким образом, 0 и 1 множественности 3 (т.e., 0(3) и 1(3) ), а 0.5 множественности 2 (т.e., 0.5(2) ). Отсюда, m = 9 и значения узлов таковы:

u0

u1

u2

u3

u4

u5

u6

u7

u8

u9

0

0

0

0.3

0.5

0.5

0.6

1

1

1

Вычислим Ni,0(u). Заметьте, так как m = 9, а p = 0 (базисные функции 0 степени), получаем n = m - p - 1 = 8. Как видно из таблицы ниже, есть только четыре ненулевых базисных функции: N2,0(u), N3,0(u), N5,0(u) и N6,0(u).

Базисная Функция

Границы

Уравнение

Комментарии

N0,0(u)

все u

0

так как [u0, u1) = [0,0) не существует

N1,0(u)

все u

0

так как [u1, u2) = [0,0) не существует

N2,0(u)

[0, 0.3)

1

N3,0(u)

[0.3, 0.5)

1

N4,0(u)

все u

0

так как [u4, u5) = [0.5,0.5) не существует

N5,0(u)

[0.5, 0.6)

1

N6,0(u)

[0.6, 1)

1

N7,0(u)

все u

0

так как [u7, u8) = [1,1) не существует

N8,0(u)

все u

0

так как [u8, u9) = [1,1) не существует

Теперь перейдем к базисным функциям степени 1. Так как p равно 1, то n = m - p - 1 = 7. Следующая таблица показывает результат:

Базисная Функция

Границы

Уравнение

N0,1(u)

все u

0

N1,1(u)

[0, 0.3)

1 - (10/3)u

N2,1(u)

[0, 0.3)

(10/3)u

[0.3, 0.5)

2.5(1 - 2u)

N3,1(u)

[0.3, 0.5)

5u - 1.5

N4,1(u)

[0.5, 0.6)

6 - 10u

N5,1(u)

[0.5, 0.6)

10u - 5

[0.6, 1)

2.5(1 - u)

N6,1(u)

[0.6, 1)

2.5u - 1.5

N7,1(u)

все u

0

Следующий рисунок показывает графики этих базисных функций.

Рассмотрим конкретные вычисления, скажем, N1,1(u). Это рассчитывается по следующему выражению:

N1,1(u) = (u - u1) / (u2 - u1) N1,0(u) + (u3 - u) / (u3 - u2) N2,0(u)

Подставляя u1 = u2 = 0 и u3 = 0.3 в это уравнение, получим:

N1,1(u) = (u/0) N1,0(u) + (1 - (10/3)u) N2,0(u)

Так как N1,0(u) везде равно нулю, первый член становится равным 0/0 и поэтому, как мы приняли, равен нулю. Таким образом, только второй член влияет на результат. Так как N2,0(u) равно 1 на [0,0.3), N1,1(u) равно 1 - (10/3)u на [0,0.3).

Далее, вычислим все Ni,2(u). Так как p = 2, имеем n = m - p - 1 = 6. Следующая таблица содержит все Ni,2(u):

Базисная Функция

Границы

Уравнение

N0,2(u)

[0, 0.3)

(1 - (10/3)u)2

N1,2(u)

[0, 0.3)

(20/3)(u - (8/3)u2)

[0.3, 0.5)

2.5(1 - 2u)2

N2,2(u)

[0, 0.3)

(20/3)u2

[0.3, 0.5)

-3.75 + 25u - 35u2

N3,2(u)

[0.3, 0.5)

(5u - 1.5)2

[0.5, 0.6)

(6 - 10u)2

N4,2(u)

[0.5, 0.6)

20(-2 + 7u - 6u2)

[0.6, 1)

5(1 - u)2

N5,2(u)

[0.5, 0.6)

12.5(2u - 1)2

[0.6, 1)

2.5(-4 + 11.5u - 7.5u2)

N6,2(u)

[0.6, 1)

2.5(9 - 30u + 25u2)

Следующий рисунок показывает все базисные функции степени 2.

Возьмем следующие типичные вычисления в качестве примера, скажем, N3,2(u). Выражение для расчета такое:

N3,2(u) = (u - u3) / (u5 - u3) N3,1(u) + (u6 - u) / (u6 - u4) N4,1(u)

Подставляя в u3 = 0.3, u4 = u5 = 0.5 и u6 = 0.6, имеем

N3,2(u) = (5u - 1.5) N3,1(u) + (6 - 10u) N4,1(u)

Так как N3,1(u) не равно нулю на [0.3, 0.5) и равно 5u - 1.5, то первый член, (5u - 1.5)2, является ненулевой частью N3,2(u) на [0.3, 0.5). Так как N4,1(u) не равно нулю на [0.5, 0.6) и равно 6 - 10u, то второй член, (6 - 10u)2, является ненулевой частью N3,2(u) на [0.5, 0.6).

Давайте исследуем непрерывность в узле 0.5(2). Так как его множественность равна 2, а степень этих базисных функций равна 2, базисная функция N3,2(u) является C0-непрерывной в 0.5(2). Вот почему N3,2(u) имеет острый угол в 0.5(2). Для узлов не на концах, скажем, в 0.3, C1-непрерывность выдерживается, так как все они являются простыми.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]