Это не официальный сайт wikipedia.org 01.01.2023

Матрица жёсткости — Википедия

Матрица жёсткости (матрица Дирихле) — матрица особого вида, использующаяся в методе конечных элементов для решения дифференциальных уравнений в частных производных. Она применяется при решениях задач электродинамики и механики.

Обычно матрица жёсткости получается разреженной, то есть содержащая большое количество нулей. Для работы с подобным типом матриц созданы специальные библиотеки (mtl4, SparseLib++, SPARSPAK и другие)

ОпределениеПравить

Элементы матрицы жёсткости A k   в общем случае равны

A i j = Ω φ i φ j d x .  

Например, если дано уравнение Пуассона

2 u = f  

в пространстве Ω   и граничные условия — это u = 0.  

Представим функцию как ряд:

u u h = u 1 φ 1 + + u n φ n .  
u i   — это известные значения функции в узлах, а φ   — некие базисные функции

то

A i j [ k ] = t r i a n g l e φ i φ j d x .  

Создание матрицыПравить

Для одного треугольникаПравить

Пусть дан один конечный элемент, для простоты — треугольный. Матрица жёсткости, по сути, задаёт связи между узлами. Так как у элемента три узла (в локальной нумерации — 0, 1 и 2), то матрица будет иметь вид

[ S 00 S 01 S 02 S 10 S 11 S 12 S 20 S 21 S 22 ]  

В дальнейшем матрицу для одного треугольника будем называть локальной, для всей сетки сразу - глобальной.

В общем случае, элементы S i j   определяются через линейные функции

α 1 = 1 2 A ( ( x 1 y 2 + x 2 y 1 ) + ( y 1 y 2 ) x + ( x 2 x 1 ) y ) .  
где
A   — площадь треугольного элемента.

α 2   и α 3   получаются из α 1   цикличной перестановкой индексов. Удобно искать A   как определитель матрицы

A = det [ 1 x 1 y 1 1 x 2 y 2 1 x 3 y 3 ]  

Сами S i j = ( α i ) ( α j ) d S i , j = 0 , 1 , 2  

В описываемом случае для каждого треугольника составляется такая матрица:

[ S 00 = 0 S 01 = ( y 1 y 2 ) ( y 2 y 0 ) + ( x 2 x 1 ) ( x 0 x 2 ) 2 A S 02 = ( y 2 y 1 ) ( y 1 y 0 ) + ( x 1 x 2 ) ( x 0 x 1 ) 2 A S 10 = ( y 0 y 2 ) ( y 2 y 1 ) + ( x 2 x 0 ) ( x 1 x 2 ) 2 A S 11 = 0 S 12 = ( y 2 y 0 ) ( y 0 y 1 ) + ( x 0 x 2 ) ( x 1 x 0 ) 2 A S 20 = ( y 0 y 1 ) ( y 1 y 2 ) + ( x 1 x 0 ) ( x 2 x 1 ) 2 A S 21 = ( y 1 y 0 ) ( y 0 y 2 ) + ( x 0 x 1 ) ( x 0 x 2 ) 2 A S 22 = 0 ]  

Первый вид обобщения на несколько треугольниковПравить

Для того, чтобы сделать из многих раздельных матриц, полученных выше, одну большую матрицу, описывающую отношения между узлами всей области расчёта, необходимо произвести процедуру объединения матриц. Пусть символ d   обозначает разделённые элементы (рис. а), а символ c   — объединённые элементы (рис. б).

Обозначим u d T = [ u 1 u 2 u 3 u 4 u 5 u 6 ]   — вектор-строку значений функции в вершинах двух треугольников (см.рис). Символ u T   обозначает транспонирование матрицы u .   То есть, это вектор значений функции в шести узлах треугольников. Очевидно, что при объединении оных получится вектор u c  , содержащий только четыре компоненты.

Преобразование происходит по схеме

u d = C u c [ u 1 u 2 u 3 u 4 u 5 u 6 ] = [ 1 1 1 1 1 1 ] [ u 1 u 2 u 3 u 4 ]  

Нумерация, конечно же, произвольная: необходимо равенство функции в соответствующих вершинах. Матрицу C   называют матрицей преобразования, а само уравнение называют связанной системой.

Запишем теперь матрицу жёсткости для двух треугольников:

S d = [ S ( 1 ) 0 0 S ( 2 ) ] [ S 00 S 01 S 02 S 10 S 11 S 12 S 20 S 21 S 22 S 33 S 34 S 35 S 43 S 44 S 45 S 53 S 54 S 55 ]  

Результирующая матрица S g l o b a l = C T S d C =  

= [ S 00 ( 1 ) + S 55 ( 2 ) S 01 ( 1 ) + S 53 ( 2 ) S 02 ( 1 ) S 54 ( 2 ) S 10 ( 1 ) + S 35 ( 2 ) S 11 ( 1 ) + S 33 ( 2 ) S 12 ( 1 ) S 34 ( 2 ) S 20 ( 1 ) S 20 ( 1 ) S 22 ( 1 ) 0 S 45 ( 2 ) S 43 ( 2 ) 0 S 44 ( 2 ) ]  

То есть, на каждом следующем шаге необходимо добавлять новые элементы к уже существующим.

Второй вид обобщения на несколько треугольниковПравить

Пусть есть область, представленная и разбитая на треугольники так, как представлено на рисунке. Пусть данная сетка содержит N   узлов. Создадим глобальную матрицу S   (размера, очевидно, N × N  ) и заполним её нулями. Начнём строить локальные матрицы S   для треугольников, например, для Δ 036.  

Введём локальную нумерацию для данного треугольника: пусть его верхняя вершина имеет локальный номер 0  , далее по часовой стрелке 1   и 2  . Иначе говоря, пусть глобальным номерам 0 , 3 , 6   соответствуют локальные номера 0 , 1 , 2   соответственно.

Составим матрицу для этого треугольника так, как описано выше, получив что-то типа

S = [ S 00 S 01 S 02 S 10 S 11 S 12 S 20 S 21 S 22 ]  

Теперь заменим локальную нумерацию на глобальную. То есть запишем локальное число S 00   как глобальное число S 00  , S 01   - как S 03  , S 02   - как S 06   и так далее.

Получим

S = [ S 00 0 0 S 01 0 0 S 02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 S 10 0 0 S 11 0 0 S 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 S 20 0 0 S 21 0 0 S 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]  

С остальными треугольниками поступаем аналогично. Необходимо помнить, что надо "дописать" число в глобальную ячейку, то есть прибавить к уже существующему.

Учёт граничных условийПравить

Условия ДирихлеПравить

В случае граничных условий первого рода необходимо изменить матрицу S  .

Граничное условие гласит, что функция в узлах на границе равна нулю. Для узла u i , j   необходимо вычеркнуть i  -й столбец и j  -ю строку в матрице S  , а также вычеркнуть сам узел из массива узлов решётки.

Условия НейманаПравить

В случае граничных условий второго рода глобальная матрица не меняется.

ЛитератураПравить

  • Zienkiewicz, K. Morgan — Finite elements and approximation, 1983.
  • P.P. Silvester, R.L. Ferrari — Finite elements for electrical engineers, 1986.
  • E. Suli — Finite Element Methods for Partial Differential Equations, 2011
  • K.J. Bathe, E.L. Wilson — Numerical methods in finite element analysis, 1982