Трикутний вигляд матриці. Матриці

1. Нехай дана матриця рангу. Введемо такі позначення для послідовних головних мінорів цієї матриці:

.

Допустимо, що мають місце умови здійсненності алгоритму Гауса:

Позначимо через матрицю коефіцієнтів системи рівнянь (18), до якої наводиться система рівнянь

шляхом виключення Гауса. Матриця має верхню трикутну форму, причому елементи її перших рядків визначаються формулами (13), а елементи останніх рядківвсі рівні нулю:

.

Перехід від матриці до матриці здійснювався за допомогою кількох операцій наступного типу: до -й рядку матриці додавалася -я () рядок, попередньо помножена на деяке число. Така операція рівносильна множенню матриці, що перетворюється, зліва на матрицю.

. (31)

У цій матриці на головній діагоналі стоять одиниці, проте інші елементи, крім елемента , дорівнюють нулю.

Таким чином

,

де кожна матриця має вигляд (31) і, отже, є нижньою трикутною матрицею з діагональними елементами, рівними 1.

. (32)

Матрицю називатимемо перетворюючої матрицею для матриці методом виключення Гаусса. Обидві матриці і однозначно визначаються завданням матриці . З (32) випливає, що нижня трикутна матриця з діагональними елементами, рівними 1 (див. стор. 28).

Оскільки - неособлива матриця, то з (33) знаходимо:

Ми представили матрицю у вигляді добутку нижньої трикутної матриці на верхню трикутну матрицю. Питання про розкладання матриці на множники такого типу повністю з'ясовується наступною теоремою:

Теорема 1. Будь-яку матрицю рангу, у якої перші послідовних очних мінорів відмінні від нуля,

, (34)

можна подати у вигляді добутку нижньої трикутної матриці на верхню трикутну матрицю

. (35)

Першим діагональним елементам матриць можна дати довільні значення, що задовольняють умовам (36).

Завдання перших діагональних елементів матриць і однозначно визначає елементи перших стовпців матриці і перших r рядків матриці . Для цих елементів мають місце формули

, (37)

У випадку останніх стовпців матриці можна всі елементи покласти різними нулю, а останніх рядках матриці всім елементам дати довільні значення, чи навпаки, останні рядків матриці заповнити нулями, а останні стовпців матриці взяти довільними.

Доказ. Можливість подання матриці, яка задовольняє умові (34), у вигляді твору (35) була доведена вище [див. (33")]

Нехай тепер і довільні нижня і верхня трикутні матриці, добуток яких дорівнює . Користуючись формулою для мінорів твори двох матриць, знайдемо:

Оскільки - верхня трикутна матриця, то перші стовпці матриці містять тільки один відмінний від нуля мінор-го порядку . Тому рівність (38) може бути записана так:

Покладемо спочатку тут. Тоді отримаємо:

звідки вже витікають співвідношення (36).

Не порушуючи нерівності (35), ми можемо в ньому помножити матрицю праворуч на особливу довільну діагональну матрицю , одночасно помножуючи матрицю зліва на . Це рівносильно множенню стовпців матриці відповідно і рядків матриці на . Тому діагональним елементам , , можна надати будь-які значення, що задовольняють умовам (36).

,

тобто перші формули (37). Абсолютно аналогічно встановлюються другі формули (37) для елементів матриці .

Звернемо увагу на те, що при перемноженні матриць та елементи останніх стовпців матриці та елементи останніх рядків матриці перемножуються між собою. Ми бачили, що всі елементи останніх рядків матриці можна вибрати рівними нулю. Тоді елементи останніх шпальт матриці можна вибрати довільними. Зрозуміло, що добуток матриць і не зміниться, якщо останні стовпців матриці візьмемо нульовими, а елементи останніх рядків матриці довільними.

Теорему доведено.

З доведеної теореми випливає низка цікавих наслідків.

Наслідок 1. Елементи перших стовпців матриці та перших рядків матриці пов'язані з елементами матриці рекурентними співвідношеннями:

(41)

Співвідношення (41) безпосередньо випливають із матричного рівності (35) ними зручно користуватися для фактичного обчислення елементів матриць і .

Наслідок 2. Якщо - неособлива матриця , що задовольняє умові (34), то у поданні (35) матриці визначаються однозначно, як тільки діагональні елементи цих матриць обрані відповідно до умов (36).

Наслідок 3. Якщо - симетрична матриця рангу та

,

де - нижня трикутна матриця, в якій

2. Нехай у поданні (35) у матриці елементи останніх стовпців дорівнюють нулю. Тоді можна покласти:

, , (43)

де – нижня, а – верхня трикутна матриця; при цьому перші діагональних елементів у матриць і дорівнюють 1, а елементи останніх стовпців матриці та останніх рядків матриці обрані довільно. Підставляючи в (35) вирази (43) для і використовуючи рівності (36), прийдемо до наступної теореми:

Теорема 2. Будь-яка матриця рангу, у якої

,

Представимо у вигляді добутку нижньої трикутної матриці, діагональної та верхньої трикутної:

(44)

, (45)

а, довільні при; .

3. Метод виключення Гауса, будучи застосований до матриці рангу, для якої , дає нам дві матриці: нижню трикутну матрицю з діагональними елементами 1 та верхню трикутну матрицю , у якої перші діагональних елементів рівні , а останні рядки заповнені нулями. - Гаусова форма матриці, - Перетворююча матриця.

Для конкретного обчислення елементів матриці можна рекомендувати наступний прийом.

Ми отримаємо матрицю, якщо до одиничної матриці застосуємо всі ті перетворення (що задаються матрицями), які ми в алгоритмі Гауса робили над матрицею (у цьому випадку замість твору, рівного, ми матимемо твір, рівний). Тому до матриці приписуємо праворуч одиничну матрицю :

. (46)

Застосовуючи до цієї прямокутної матриці всі перетворення алгоритму Гаусса, отримаємо прямокутну матрицю, що складається з двох квадратних матриць:

Таким чином, застосування алгоритму Гаусса до матриці (46) дає одночасно матрицю і матрицю .

Якщо - неособлива матриця, т. е. то і . В цьому випадку з (33) випливає . Оскільки матриці і визначені за допомогою алгоритму Гаусса, то знаходження зворотної матриці зводиться до визначення і множення на .

Трикутні матриці та характеристичне рівняння

Квадратна матриця, яка має всі елементи, розташовані нижче або вище головної діагоналі, дорівнюють нулю, називається трикутною. Трикутна матриця може бути верхньої та нижньої будови. Верхня та нижня формимають відповідно вигляд:

, .

Трикутні матриці мають ряд важливих у практичному відношенні властивостей:

1) Визначник трикутної матриці дорівнює творуїї діагональних елементів:

Отже, трикутна матриця не є особливою тільки тоді, коли всі елементи її головної діагоналі відмінні від нуля.

2) Сума і добуток трикутних матриць однакової будови є також трикутною матрицею тієї ж будови.

3) Неособлива трикутна матриця легко звертається, та її зворотна матрицязнову має трикутну структуру тієї самої будови.

4) Будь-яка неособлива матриця за допомогою елементарних перетворень лише над рядками або лише над стовпцями може бути приведена до трикутної матриці. Як приклад розглянемо відому в теорії стійкості матрицю Гурвіца

.

Для переходу до верхнього трикутного виглядупроробимо наступні елементарні перетворення. З кожного елемента другого рядка віднімемо елемент першого рядка, що стоїть над ним, попередньо помножений на . Замість рядка з елементами отримаємо рядок з елементами де , , , ... і т.д.

Виконаємо аналогічні операції в інших рядках нижче. Потім віднімемо з кожного елемента третього рядка перетвореної матриці елементи рядка, що стоять над нею, помножені на , і повторимо аналогічні операції в інших рядках. Продовжимо процес за цією процедурою доти, доки m-му кроціне отримаємо верхню трикутну матрицю

.

Такі перетворення по суті еквівалентні множенню матриці праворуч (або зліва) на іншу допоміжну матрицю.

Визначник матриці Гурвіца

.

Існує теорема про розкладання будь-якої квадратної матриціу твір двох трикутних. Відповідно до цієї теореми, будь-яка квадратна матриця може бути представлена ​​у вигляді добутку нижньої та верхньої трикутних матриць:

,

за умови, що її діагональні мінори відмінні від нуля:

, , .

Це розкладання єдине, якщо зафіксувати діагональні елементи однієї з трикутних матриць (наприклад, покласти їх рівними одиниці). Розкладання будь-якої квадратної матриці у добуток двох трикутних з розпорядженими діагональними елементами широко використовується у обчислювальних методах при вирішенні задач за допомогою ЕОМ.

Однозначне уявлення матриці як твори двох трикутних може бути узагальнено на клітинні матриці. У таких матрицях самі елементи є матрицями. При цьому матриця може бути розкладена у добуток нижньої та верхньої квазітрикутних матриць.

Визначник квазітрикутної матриці дорівнює добутку її діагональних клітин.

На відміну від діагональних матриць операція множення трикутних матриць загальному випадкуне комутативна.

У обчислювальних методах теорії управління істотну роль грають як трикутні, а й звані майже трикутні матриці. Багато методів використовують розкладання матриці у вигляді добутку двох матриць, одна з яких має трикутну будову. Матриця А називається правою (лівою) майже трикутною або матрицею Хессенберга, якщо для її елементів а ij виконуються співвідношення:

Наприклад, матриця Хессенберга правої майже трикутної форми розмірності (4x4) має вигляд

Зазначимо корисні особливостірозглянутих матриць, які використовуються у обчислювальних методах:

а) сума майже трикутних матриць однакової будови буде трикутною матрицею тієї самої будови, а добуток – ні;

б) побудова характеристичного полінома майже трикутних матриць економічно, оскільки вимагає набагато меншого обсягу обчислень, ніж за довільної форми матриці. Число операцій множень складає , додавань - ;

в) майже трикутна матриця може бути розкладена у добуток двох трикутних, причому в розкладанні одна з матриць матиме більше просту структуру, А саме, буде дводіагональною.

У сучасних інженерних методах, закладених у системи автоматизованого проектування, широко використовується мультиплікативне подання матриць, наприклад, QR-подання. Його сутність полягає в тому, що будь-яку квадратну матрицю А можна подати у вигляді твору ортогональної та майже трикутної форм

Або , (4.4)

де Q - ортогональна матриця; R - права (верхня) трикутна форма; L – ліва (нижня) трикутна форма матриці.

Подання (4.4) називається QR-розкладанням (у разі нижньої трикутної матриці QL-розкладанням) і для матриці А є єдиним.

QR- і QL-алгоритми дуже мало різняться. Їх використання залежить від цього, як розташовані елементи матриці. Якщо вони зосереджені в правому нижньому кутку, ефективніше використовувати QL-алгоритм. Якщо елементи матриці зосереджені у лівій верхній частині, доцільніше використовувати QR-алгоритм. При правильної реалізації на ЕОМ помилки округлення у часто не надають великого впливу точність обчислення.

У цій темі розглянемо поняття матриці, і навіть види матриць. Оскільки в цій темі багато термінів, то я додам короткий змістщоб орієнтуватися в матеріалі було простіше.

Визначення матриці та її елемента. Позначення.

Матриця- Це таблиця з $ m $ рядків і $ n $ стовпців. Елементами матриці може бути об'єкти абсолютно різноманітної природи: числа, змінні чи, наприклад, інші матриці. Наприклад, матриця $\left(\begin(array) (cc) 5 & 3 \\ 0 & -87 \\ 8 & 0 \end(array) \right)$ містить 3 рядки і 2 стовпці; Елементами її є цілі числа. Матриця $\left(\begin(array) (cccc) a & a^9+2 & 9 & \sin x \\ -9 & 3t^2-4 & u-t & 8\end(array) \right)$ містить 2 рядки та 4 стовпці.

Різні способи запису матриць: показати\сховати

Матриця може бути записана у круглих, а й у квадратних чи подвійних прямих дужках. Тобто, вказані нижче записи означають ту саму матрицю:

$$ \left(\begin(array) (cc) 5 & 3 \ 0 & -87 \ 8 & 0 \end(array) \right);\;\; \left[ \begin(array) (cc) 5 & 3 \\ 0 & -87 \\ 8 & 0 \end(array) \right]; \;\; \left \Vert \begin(array) (cc) 5 & 3 \\ 0 & -87 \\ 8 & 0 \end(array) \right \Vert $$

Твір $m\times n$ називають розміром матриці. Наприклад, якщо матриця містить 5 рядків та 3 стовпці, то говорять про матрицю розміру $5\times 3$. Матриця $\left(\begin(array)(cc) 5 & 3\0 & -87\8 & 0\end(array)\right)$ має розмір $3 \times 2$.

Зазвичай матриці позначаються великими літерами латинського алфавіту: $A$, $B$, $C$ і так далі. Наприклад, $B=\left(\begin(array) (ccc) 5 & 3 \ 0 & -87 \ 8 & 0 \end(array) \right)$. Нумерація рядків йде зверху донизу; стовпців - зліва направо. Наприклад, перший рядок матриці $B$ містить елементи 5 та 3, а другий стовпець містить елементи 3, -87, 0.

Елементи матриць зазвичай позначаються дрібними літерами. Наприклад, елементи матриці $A$ позначаються $a_(ij)$. Подвійний індекс $ij$ містить інформацію про положення елемента у матриці. Число $i$ це номер рядка, а число $j$ - номер стовпця, на перетині яких знаходиться елемент $a_(ij)$. Наприклад, на перетині другого рядка і п'ятого стовпця матриці $A=\left(\begin(array) (cccccc) 51 & 37 & -9 & 0 & 9 & 97 \1 \ -17 & -15 & -13 & -11 & -8 & -5 \\ 52 & 31 & -4 & -1 & 17 & 90 \end(array) \right)$ розташований елемент $a_(25)= 59$:

Так само на перетині першого рядка і першого стовпця маємо елемент $a_(11)=51$; на перетині третього рядка та другого стовпця - елемент $a_(32)=-15$ тощо. Зауважу, що запис $a_(32)$ читається як "а три два", але не "а тридцять два".

Для скороченого позначення матриці $A$, розмір якої дорівнює $m\times n$, використовується запис $A_(m\times n)$. Можна записати і більш розгорнуто:

$$ A_(m\times n)=(a_(ij)) $$

де запис $(a_(ij))$ означає позначення елементів матриці $A$. У повністю розгорнутому вигляді матрицю $A_(m\times n)=(a_(ij))$ можна записати так:

$$ A_(m\times n)=\left(\begin(array)(cccc) a_(11) & a_(12) & \ldots & a_(1n) \\ a_(21) & a_(22) & \ldots & a_(2n) \\ \ldots & \ldots & \ldots & \ldots \\ a_(m1) & a_(m2) & \ldots & a_(mn) \end(array) \right) $$

Введемо ще один термін - рівні матриці.

Дві матриці однакового розміру $A_(m\times n)=(a_(ij))$ і $B_(m\times n)=(b_(ij))$ називаються рівними, якщо відповідні елементи рівні, тобто. $a_(ij)=b_(ij)$ для всіх $i=\overline(1,m)$ і $j=\overline(1,n)$.

Пояснення до запису $i=\overline(1,m)$: показати\приховати

Запис "$i=\overline(1,m)$" означає, що параметр $i$ змінюється від 1 до m. Наприклад, запис $i=\overline(1,5)$ говорить про те, що параметр $i$ приймає значення 1, 2, 3, 4, 5.

Отже, для рівності матриць потрібно виконання двох умов: збіг розмірів та рівність відповідних елементів. Наприклад, матриця $A=\left(\begin(array)(cc) 5 & 3\0 & -87\8 & 0\end(array)\right)$ не дорівнює матриці $B=\left(\ begin(array)(cc) 8 & -9\\0 & -87 \end(array)\right)$, оскільки матриця $A$ має розмір $3\times 2$, а розмір матриці $B$ становить $2\times 2 $. Також матриця $A$ не дорівнює матриці $C=\left(\begin(array)(cc) 5 & 3\98 & -87\\8 & ​​0\end(array)\right)$, оскільки $a_( 21) \ neq c_ (21) $ (тобто $ 0 \ neq 98 $). А ось для матриці $F=\left(\begin(array)(cc) 5 & 3\0 & -87\8 & 0\end(array)\right)$ можна сміливо записати $A=F$ оскільки і розміри, і відповідні елементи матриць $A$ та $F$ збігаються.

Приклад №1

Визначити розмір матриці $A=\left(\begin(array) (ccc) -1 & -2 & 1 \\ 5 & 9 & -8 \\ -6 & 8 & 23 \\ 11 & -12 & -5 \ \ 4 & 0 & -10 \\\end(array) \right)$. Вказати, чому рівні елементи $a_(12)$, $a_(33)$, $a_(43)$.

Дана матриця містить 5 рядків і 3 стовпці, тому розмір $5\times 3$. Для цієї матриці можна також використовувати позначення $A_(5\times 3)$.

Елемент $a_(12)$ знаходиться на перетині першого рядка та другого стовпця, тому $a_(12)=-2$. Елемент $a_(33)$ знаходиться на перетині третього рядка та третього стовпця, тому $a_(33)=23$. Елемент $a_(43)$ знаходиться на перетині четвертого рядка та третього стовпця, тому $a_(43)=-5$.

Відповідь: $a_(12)=-2$, $a_(33)=23$, $a_(43)=-5$.

Види матриць залежно від їхнього розміру. Головна та побічна діагоналі. Слід матриці.

Нехай задана певна матриця $A_(m\times n)$. Якщо $m=1$ (матриця складається з одного рядка), то за дану матрицюназивають матриця-рядок. Якщо $n=1$ (матриця складається з одного стовпця), то таку матрицю називають матриця-стовпець. Наприклад, $\left(\begin(array) (ccccc) -1 & -2 & 0 & -9 & 8 \end(array) \right)$ - матриця-рядок, а $\left(\begin(array) (c) -1 \\ 5 \\ 6 \end(array) \right)$ - матриця-стовпець.

Якщо для матриці $A_(m\times n)$ вірна умова $m\neq n$ (тобто кількість рядків не дорівнює кількості стовпців), то часто кажуть, що $A$ - прямокутна матриця. Наприклад, матриця $\left(\begin(array) (cccc) -1 & -2 & 0 & 9 \\ 5 & 9 & 5 & 1 \end(array) \right)$ має розмір $2\times 4$, тобто. містить 2 рядки та 4 стовпці. Так як кількість рядків не дорівнює кількості стовпців, то ця матриця прямокутна.

Якщо для матриці $A_(m\times n)$ правильна умова $m=n$ (тобто кількість рядків дорівнює кількості стовпців), то кажуть, що $A$ - квадратна матриця порядку $n$. Наприклад, $\left(\begin(array) (cc) -1 & -2 \\ 5 & 9 \end(array) \right)$ - квадратна матриця другого порядку; $\left(\begin(array) (ccc) -1 & -2 & 9 \\ 5 & 9 & 8 \\ 1 & 0 & 4 \end(array) \right)$ - квадратна матриця третього порядку. У загальному виглядіквадратну матрицю $A_(n\times n)$ можна записати так:

$$ A_(n\times n)=\left(\begin(array)(cccc) a_(11) & a_(12) & \ldots & a_(1n) \\ a_(21) & a_(22) & \ldots & a_(2n) \\ldots & \ldots & \ldots & \ldots \\ a_(n1) & a_(n2) & \ldots & a_(nn) \end(array) \right) $$

Говорять, що елементи $a_(11)$, $a_(22)$, $\ldots$, $a_(nn)$ знаходяться на головної діагоналіматриці $A_(n\times n)$. Ці елементи називаються головними діагональними елементами(чи просто діагональними елементами). Елементи $a_(1n)$, $a_(2 \; n-1)$, $\ldots$, $a_(n1)$ знаходяться на побічної (другорядної) діагоналі; їх називають побічними діагональними елементами. Наприклад, для матриці $C=\left(\begin(array)(cccc)2&-2&9&1\\5&9&8& 0\\1& 0 & 4 & -7 \\ -4 & -9 & 5 & 6\end(array) \right)$ маємо:

Елементи $c_(11)=2$, $c_(22)=9$, $c_(33)=4$, $c_(44)=6$ є головними діагональними елементами; елементи $c_(14)=1$, $c_(23)=8$, $c_(32)=0$, $c_(41)=-4$ - побічні діагональні елементи.

Сума головних діагональних елементів називається слідом матриціі позначається $\Tr A$ (або $\Sp A$):

$$ \Tr A=a_(11)+a_(22)+\ldots+a_(nn) $$

Наприклад, для матриці $ C = \ left ( \ begin (array) (cccc) 2 & -2 & 9 & 1 \ -9 & 5 & 6 \end(array)\right)$ маємо:

$$ \Tr C=2+9+4+6=21. $$

Поняття діагональних елементів також використовується для неквадратних матриць. Наприклад, для матриці $B=\left(\begin(array) (ccccc) 2 & -2 & 9 & 1 & 7 \\ 5 & -9 & 8 & 0 & -6 \\ 1 & 0 & 4 & - 7 & -6 \end(array) \right)$ головними діагональними елементами будуть $b_(11)=2$, $b_(22)=-9$, $b_(33)=4$.

Види матриць залежно від значень їх елементів.

Якщо всі елементи матриці $A_(m\times n)$ дорівнюють нулю, то така матриця називається нульовийі зазвичай позначається буквою $O$. Наприклад, $\left(\begin(array) (cc) 0 & 0 \\ 0 & 0 \\ 0 & 0 \end(array) \right)$, $\left(\begin(array) (ccc) 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end(array) \right)$ - нульові матриці.

Нехай матриця $A_(m\times n)$ має такий вигляд:

Тоді цю матрицю називають трапецієподібної. Вона може і не містити нульових рядків, але якщо вони є, то розташовуються в низу матриці. У більш загальному вигляді трапецієподібну матрицю можна записати так:

Повторюся, наявність нульових рядків наприкінці не є обов'язковою. Тобто. формально можна виділити такі умови для трапецієподібної матриці:

  1. Усі елементи, розташовані нижче головної діагоналі, дорівнюють нулю.
  2. Всі елементи від $a_(11)$ до $a_(rr)$, що лежать на головній діагоналі, не дорівнюють нулю: $a_(11)\neq 0, \; a_(22)\neq 0, \ldots, a_(rr)\neq 0$.
  3. Або всі елементи останніх $m-r$ рядків дорівнюють нулю, або $m=r$ (тобто нульових рядків немає взагалі).

Приклади трапецієподібних матриць:

Перейдемо до наступного визначення. Матрицю $A_(m\times n)$ називають ступінчастоюякщо вона задовольняє таким умовам:


Наприклад, ступінчастими матрицямибудуть:

Для порівняння, матриця $\left(\begin(array) (cccc) 2 & -2 & 0 & 1 \\0 & 0 & 8 & 7\\0 & 0 & 4 & -7\\0 & 0 & 0 & 0 \end(array)\right)$ не є ступінчастою, оскільки у третього рядка нульова частина така сама, як і у другого рядка. Тобто, порушується принцип "чим нижче рядок - тим більша нульова частина". Додам, що трапецієподібна матриця є окремий випадокступінчастої матриці.

Перейдемо до наступного визначення. Якщо всі елементи квадратної матриці, розташовані під головною діагоналлю, дорівнюють нулю, то таку матрицю називають верхньою трикутною матрицею. Наприклад, $\left(\begin(array) (cccc) 2 & -2 & 9 & 1 \\ 0 & 9 & 8 & 0 \\ 0 & 0 & 4 & -7 \\ 0 & 0 & 0 & 6 \end(array) \right)$ - Верхня трикутна матриця. Зауважте, що у визначенні верхньої трикутної матриці нічого не сказано про значення елементів, які розташовані над головною діагоналлю або на головній діагоналі. Вони можуть бути нульовими чи ні – це несуттєво. Наприклад, $\left(\begin(array) (ccc) 0 & 0 & 9 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end(array) \right)$ - теж верхня трикутна матриця.

Якщо всі елементи квадратної матриці, розташовані над головною діагоналлю, дорівнюють нулю, то таку матрицю називають нижньою трикутною матрицею. Наприклад, $\left(\begin(array) (cccc) 3 & 0 & 0 & 0 \\ -5 & 1 & 0 & 0 \\ 8 & 2 & 1 & 0 \\ 5 & 4 & 0 & 6 \ end(array) \right)$ - нижня трикутна матриця. Зверніть увагу, що у визначенні нижньої трикутної матриці нічого не сказано про значення елементів, розташованих під або на головній діагоналі. Вони можуть бути нульовими чи ні – це неважливо. Наприклад, $\left(\begin(array) (ccc) -5 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 9 \end(array) \right)$ і $\left(\begin (array) (ccc) 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end(array) \right)$ - теж нижні трикутні матриці.

Квадратна матриця називається діагональноїякщо всі елементи цієї матриці, що не лежать на головній діагоналі, дорівнюють нулю. Приклад: $\left(\begin(array) (cccc) 3 & 0 & 0 & 0 \\ 0 & -2 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 6 \ end(array) \right)$. Елементи на головній діагоналі можуть бути будь-якими (рівними нулю чи ні) – це несуттєво.

Діагональна матриця називається одиничною, якщо всі елементи цієї матриці, розташовані на головній діагоналі, дорівнюють 1. Наприклад, $\left(\begin(array) (cccc) 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end(array)\right)$ - одинична матриця четвертого порядку; $\left(\begin(array) (cc) 1 & 0 \\ 0 & 1 \end(array)\right)$ - одинична матриця другого порядку.

Сторінка 2


Трикутною матрицею називається матриця, яка має всі елементи з одного боку від головної чи побічної діагоналі рівні нулю. Чому дорівнює визначник трикутної матриці?  

Трикутною матрицею називається матриця, у якої всі елементи, що стоять по один бік від головної або побічної діагоналі, дорівнюють нулю. Чому дорівнює визначник трикутної матриці?  

Операції з виконання прямого ходуметоду Гауса відповідно до теорем лінійної алгебри не змінюють величини визначника. Очевидно, що визначник трикутної матриці дорівнює добутку її діагональних елементів.  

Це інтуїтивне уявлення знаходить у деяких випадках точне кількісний вираз. Наприклад, ми знаємо (див. (6) з § 1), що визначник трикутної матриці (верхньої чи нижньої) дорівнює добутку елементів, що стоять на головній діагоналі.  

Трикутні матриці мають багато чудових властивостей, в силу яких вони широко використовуються в побудові самих різних методіврозв'язання задач алгебри. Так, наприклад, для квадратних матриць сума і добут однойменних трикутних матриць є трикутна матриця того ж найменування, визначник трикутної матриці дорівнює добутку діагональних елементів, власні значення трикутної матриці збігаються з її діагональними елементами, трикутна матриця легко звертається і зворотна.  

Раніше вже зазначалося, що безпосереднє перебуваннявизначника вимагає великого обсягу обчислень. Разом про те легко обчислюється визначник трикутної матриці: він дорівнює добутку її діагональних елементів.  

Чим більше нулів серед елементів матриці А і чим краще вони розташовані, тим легше обчислювати визначник det А. Це інтуїтивне уявлення в деяких випадках знаходить точне кількісне вьфажение. Наприклад, ми знаємо (див. (6) з § 1), що визначник трикутної матриці (верхньої чи нижньої) дорівнює добутку елементів, що стоять на головній діагоналі.  

Наприклад, множення визначника на скаляр еквівалентне множенню елементів будь-якого рядка або будь-якого стовпця матриці на цей скаляр. З рівняння (40) і з того, що розкладання застосовується до алгебраїчному доповненнютак само, як до визначника, слід, що визначник трикутної матриці дорівнює добутку її діагональних елементів.  

Ця можливість випливає із трьох основних властивостей визначників. Додавання кратного одного рядка до іншого не змінює визначника. Переставлення двох рядків змінює знак визначника. Визначник трикутної матриці дорівнює просто добутку її діагональних елементів. DECOMP використовує останню компонент вектора провідних елементів, щоб помістити туди значення 1, якщо було зроблено парне числоперестановок і значення - 1, якщо непарне. Щоб отримати визначник, це значення потрібно помножити на добуток діагональних елементів вихідної матриці.  

Якщо верхня трикутна матриця має n 2 елементів, приблизно половина є нульовими і немає необхідності зберігати їх явно. Конкретно, якщо ми віднімаємо n діагональних елементів із суми n 2 елементів, то половина елементів, що залишилися, є нульовими. Наприклад, при n=25 є 300 елементів зі значенням 0:

(n 2 -n) / 2 = (25 2 -25) / 2 = (625-25) / 2 = 300

Сума або різницю двох трикутних матриць А і В виходить в результаті складання або віднімання відповідних елементів матриць. Результуюча матриця є трикутною.

Додавання С = А + В

Віднімання С = А - В

де С - це трикутна матриця з елементами C i, j = A i, j + B i, j.

Множення С = А * В

Результуюча матриця С - це трикутна матриця з елементами C i , j значення яких обчислюються з елементів рядка i матриці А і стовпця j матриці В:

C i , j =(A i ,0 *B 0, j)+ (A i ,1 *B 1, j)+ (A i ,2 *B 2, j)+…+ (A i , n -1 * B n -1, j)

Для загальної квадратної матриці детермінант є складною обчислення функцією, проте обчислити детермінант трикутної матриці не складно. Просто отримайте добуток елементів на діагоналі.

Зберігання трикутної матриці

Застосування для зберігання верхньої трикутної матриці стандартного двовимірного масиву вимагає використання всієї пам'яті розміром n 2 незважаючи на прогнозовані нулі, розташовані нижче діагоналі. Для виключення цього простору ми зберігаємо елементи трикутної матриці в одновимірному масиві М. Всі елементи нижче головної діагоналі не зберігаються. Таблиця 3.1 показує кількість елементів, що зберігаються у кожному рядку.

Зберігання трикутної матриці

Таблиця 1

Алгоритму збереження потрібна функція доступу, яка повинна визначати місце розташування в масиві М елементу A i , j . Для j< i элемент A i , j является равным 0 и не сохраняется в М. Для j ³ i функция доступа использует информацию о числе сохраняемых элементов в каждой строке вплоть до строки i. Эта информация может быть вычислена для каждой строки i и сохранена в массиве (rowTable) для использования функцией доступа.

приклад 4.

З урахуванням того, що елементи трикутної матриці зберігаються рядково в масиві М, функція доступу для A i j використовує такі параметри:

Індекси i та j,

Масив rowTable

Алгоритм доступу до елемента A i j полягає в наступному:

Якщо j

Якщо j³i, то виходить значення rowTable[i], яке є кількістю елементів, що зберігаються в масиві М, для елементів до рядка i. У рядку i перші i елементів є нульовими і зберігаються в М. Елемент A i , j міститься в M+(j-i)].

Приклад 5.

Розглянемо трикутну матрицю Х з прикладу 3.4:

1.Х 0,2 = M = М = М = 0

2.X 1,0 не зберігаються

3.Х 1,2 = M + (2-1)] = М = М = 1

Клас TriMat

Клас TriMat реалізує низку операцій трикутної матриці. Віднімання та множення трикутної матриці залишено для вправ у кінці розділу. Враховуючи те обмеження, що ми повинні використовувати лише статичні масиви, наш клас обмежує розмір рядка та стовпця числом 25. При цьому ми матимемо 300=(25 2 -25)/2 нульових елементів, тому масив М має містити 325 елементів.

Специфікація класу TriMat

ОГОЛОШЕННЯ

#include

#include

// максимальна кількість елементів та рядків

// верхньої трикутної матриці

const int ELEMENTLIMIT = 325;

const int ROWLIMIT = 25;

// Закриті дані-члени

int rowTable; // Початковий індекс рядка в М

int n; // розмір рядка/колонки

double М;

// Конструктор із параметрами TriMat(int matsize);

//Методи доступу до елементів матриці

void PutElement (double item, int i, int j);

double GetElement(int i, int j) const;

// матричні арифметичні операції

TriMat AddMat(const TriMat&A) const;

double DelMat(void) const;

// матричні операції введення/виводу

void ReadMat(void);

void WriteMat(void) const;

// отримати розмірність матриці

int GetDimension(void) const;

ОПИС

Конструктор приймає число рядків та стовпців матриці. Методи PutEle-ment та GetElement зберігають та повертають елементи верхньої трикутної матриці. GetElement повертає 0 для елементів нижче діагоналі. AddMat повертає суму матриці з поточним об'єктом. Цей метод не змінює значення поточної матриці. Оператори введення/виводу ReadMat та WriteMat працюють з усіма елементами матриці n x n. Сам метод ReadMat зберігає лише верхньо-трикутні елементи матриці.

#include trimat.h // увімкнути клас TriMat

TriMat A (10), (10), С (10); // Трикутні матриці 10x10

A.ReadMat(); // Ввести матриці А і В

З = A. AddMat (В); // Обчислити С = А + В

C.WriteMat(); // Друкувати

Реалізація класу TriMat

Конструктор ініціалізує закритий член n параметром matsize. Таким чином задається число рядків та стовпців матриці. Цей же параметр використовується для ініціалізації масиву rowTable, який використовується для доступу до елементів матриці. Якщо matsize перевищує ROWLIMIT, видається повідомлення про помилку та виконання програми переривається.

// ініціалізація n та rowTable

TriMat::TriMat (int matsize)

int storedElements = 0;

// Перервати програму, якщо matsize більше ROWLIMIT

if (matsize > ROWLIMIT)

cerr<< "Превышен размер матрицы" << ROWLIMIT << "x" << ROWLIMIT << endl;

// задати таблицю

for (int i = 0; i< n; i++)

rowTable [i] = storedElements;

викладені елементи += n - i;

Матричні методи доступу. Ключовим моментом під час роботи з трикутними матрицями є можливість ефективного зберігання ненульових елементів у лінійному масиві. Щоб досягти такої ефективності і все ж таки використовувати звичайні двовимірні індекси i і j для доступу до елемента матриці, нам необхідні функції PutElement і GetElement для збереження та повернення елементів матриці в масиві.

Метод GetDimension надає клієнту доступ до розміру матриці. Ця інформація може використовуватися для забезпечення того, щоб методам доступу передавалися параметри, що відповідають правильному рядку та стовпцю:

// Повернути розмірність матриці n

int TriMat::GetDimension(void) const

Метод PutElement перевіряє індекси i та j. Якщо j ³ i, ми зберігаємо значення даних М, використовуючи функцію доступу до матриці для трикутних матриць: Якщо i чи j немає у діапазоні 0 . . (n-1), то програма закінчується:

// записати елемент матриці масив М

void TriMat::PutElement (double item, int i, int j)

// Перервати програму, якщо індекси елемента поза

// Індексного діапазону

if ((i< 0 || i >= n) | (j< 0 |1 j >= n))

cerr<< "PutElement: индекс вне диапазона 0-"<< n-1 << endl;

// Усі елементи нижче діагоналі ігноруються if (j >= i)

M + j-i] = item;

Для отримання будь-якого елемента метод GetElement перевіряє індекси i та j. Якщо i чи j немає у діапазоні 0…(n - 1), програма закінчується. Якщо j

// отримати матричний елемент масиву М

double TriMat::GetElement(int i, int j) const

// Перервати програму, якщо індекси поза індексним діапазоном

if ((i< 0 || i >= п) | (j< 0 |I j >= n))

cerr<< "GetElement: индекс вне диапазона 0-"<< n-1 << endl;

// Повернути елемент, якщо він вище діагоналі

return M+j-i];

// Елемент дорівнює 0, якщо він нижче діагоналі

Введення/виведення матричних об'єктів. Зазвичай, введення матриці передбачає, що дані вводяться рядково з повним набором значень рядків, і стовпців. В об'єкті TriMat нижня трикутна матриця є нульовою та значення не зберігаються в масиві. Тим не менш, користувачеві пропонується ввести ці нульові значення для збереження звичайного матричного введення.

// всі (n x n) елементів

void TriMat::ReadMat (void)

for(i = 0; i

for(j = 0; j

//Порядкова видача в потік елементів матриці

void TriMat::WriteMat (void) const

// Встановлення режиму видачі

cout. setf (ios::fixed);

cout.precision (3);

cout.setf (ios:: showpoint) ;

for (i = 0; i< n; i++)

for (j = 0; j< n; j++)

cout<< setw(7) << GetElement (i,j);

cout<< endl;

Матричні операції. Клас TriMat має методи для обчислення суми двох матриць та детермінанту матриці. Метод AddMat приймає єдиний параметр, який є правим операндом у сумі. Поточний об'єкт відповідає лівому операнду. Наприклад, сума трикутних матриць X та Y використовує метод AddMat для об'єкта X. Припустимо, сума зберігається в об'єкті Z. Для обчислення

Z = Х + Y використовуйте оператор

Z = X.AddMat(Y);

Алгоритм складання двох об'єктів типу TriMat повертає нову матрицю з елементами B i , j = CurrentObjecty i , j + A i , j:

// Повертає суму поточної та матриці А.

// Поточний об'єкт не змінюється

TriMat TriMat::AddMat (const TriMat& A) const

double itemCurrent, itemA;

TriMat B(A.n); // В буде шукана сума

for (i = 0; i< n; i++) // цикл по строкам

for (j = i; j< n; j++) // пропускать элементы ниже диагонали

itemCurrent = GetElement i, j);

itemA = A. GetElement (i, j);

B. PutElement (itemCurrent + itemA, i, j);

Метод DetMat повертає детермінант поточного об'єкта. Значення, що повертається - це дійсне число, яке є добутком елементів діагоналі. Повний текст коду для реалізації класу TriMat можна знайти у програмній програмі.