Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Визначник. Дії над матрицями. Обчислення оберненої матриці




 

Поняття визначника виникло у зв’язку з проблемою знаходження формул для невідомих в системі лінійних рівнянь. Розглянемо систему n рівнянь з n невідомими.

де aij – коефіцієнти системи;

i = 1, n – номер рівняння;

j = 1, n – номер невідомого.

Коефіцієнти системи являють собою квадратну матрицю порядку n та вміщують n2 елементів.

Визначником (детермінантом) даної системи є число ∆.

, де aij – елементи визначника.

Визначник складається тільки з квадратної матриці.

Розглянемо властивості визначника n-го порядку.

1. Визначник не змінюється при транспонуванні матриці (обертання матриці навколо головної діагоналі).

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

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

4. Якщо визначник має два однакових рядки або стовпці, то він дорівнює нулю.

5. Загальний множник усіх елементів деякого рядка можна виносити за знак визначника:

6. Якщо усі елементи одного рядка (стовпця) пропорційні відповідним елементам другого рядка (стовпця), то визначник дорівнює нулю.

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

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

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

Авторами запропоновано універсальну функцію розрахунку визначника n-го порядку, фрагмент якої приведено нижче.

 

#include <iostream>

#include <cmath>

using namespace std;

 

# define delta 0.00000001

// ФУНКЦІЯ ЗНАХОДЖЕННЯ ВИЗНАЧНИКА ПОРЯДКУ N

 

//Перетворення нижнього трикутника визначника в 0

double mopred(double*k, int n)

{

int i,j,xx,r,kol_el;

double p,t,vv;

kol_el = n*n;

double*kk = new double[kol_el];

 

//Перезапис елементів масиву

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

kk[i] = k[i];

 

for(i=n-1;i>=0;i--)

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

{

if (fabs(kk[i*n+j+1])<delta)

{

// Перестановка стовпців якщо елемент

// праворуч нульовий

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

{

vv = kk[xx*n+j];

kk[xx*n+j]=kk[xx*n+j+1];

kk[xx*n+j+1] = -vv;

}

continue;

}//endif

 

//Якщо поточний елемент нульовий або отримався

//завдяки перестановці стовпців,

//переходимо до наступного елемента

if (fabs(kk[i*n+j])<delta)continue;

//знаходимо результат від ділення двох сусідніх

.. //ненульових елементів

t = kk[i*n+j]/kk[i*n+j+1];

//перетворюємо поточний елемент в 0 –

//використовуючи властивості визначника

//множимо поточний стовпчик на число(результат

//від ділення) та додаємо наступний стовпчик.

//при цьому визначник не змінюється

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

kk[r*n+j]=kk[r*n+j]-kk[r*n+j+1]*t;

}

 

p = 1;

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

p*=kk[i*n+i];

 

delete[]kk;

 

return p;

}

 

У даній функції mopred() відбувається перевірка нижнього трикутника матриці. Йде перевірка елементів по кожному рядку, починаючи з останнього. Алгоритм побудований наступним чином:

1. Якщо нульові елементи вже мають місце, вони будуть здвигатися вліво (за рахунок перестановки стовпців матриці).

2. Перераховуються тільки відмінні від нуля сусідні елементи, таким чином, щоб елемент, з яким іде робота, у результаті арифметичних перетворень дорівнював би нулю (використовуючи сьому властивість визначника).

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


Поделиться:

Дата добавления: 2014-12-30; просмотров: 166; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты