You are on page 1of 14

Міністерство освіти і науки України

Вінницький національний технічний університет


Факультет інтелектуальних інформаційних технологій та автоматизації
Кафедра КН

Лабораторна робота №1
з дисципліни «ММДО»
Розробка алгоритму і програми для розв’язання систем лінійних алгебраїчних
рівнянь (СЛАР) методом Жордана–Гаусса.

Виконав: ст. гр. КН-22мс. Бойко А.В.


Перевірив асистент: Ваховська Л.М.

Вінниця 2022
Мета: набути практичних навичок знаходження коренів СЛАР, обчислення
визначника та оберненої матриці методом Жордана–Гаусса та його програмної
реалізації.

Хід роботи

Практичні завдання

Варіант 3, 6, 9.

1) Знайти корені СЛАР методом Жордана–Гаусса.


2) Знайти визначник матриці, методом Жордана–Гаусса.

3) Обчислити обернену матрицю методом Жордана–Гаусса.


Блок-схема програми для обчислення визначника матриці:
Опис програми

Дана програма призначена для обчислення визначника квадратної


матриці будь-якої розмірності методом Жордана-Гаусса. Інтерфейс програми
розроблено за допомогою веб-технологій, а саме HTML, CSS та Svelte.
Програма містить функцію виведення блока вхідної матриці динамічної
розмірності, метод отримання даних із вхідної матриці та функція обчислення
визначника.

Рис. 2 – Результат тестування програми.

Висновки: на лабораторній роботі було набуто практичних навичок


знаходження коренів СЛАР, обчислення визначника та оберненої матриці
методом Жордана–Гаусса та його програмної реалізації.
Додаток 1

Інструкція користувача

Для початку роботи із програмою необхідно вписати бажану розмірність


матриці. Розмірність матриці вписується у поле зображене на рисунку 3.

Рис. 3 – поле розмірності матриці.

Справа від даного поля виведено номінальне значення розмірності матриці.

Можливості програми штучно обмежено до взаємодії з матрицею максимальної


розмірності 6.

Після обрання необхідної розмірності матриці необхідно ввести значення


матриці у поля зображені у рисунку 4.
Для отримання результату необхідно натиснути на кнопку “Розрахувати”
Додаток 2

Лістинг програми
<script>

let n = 1;

let inputArrayStyles;

function GetDiv(){

inputArrayStyles = document.querySelector(".inputArray");

if(inputArrayStyles != null)inputArrayStyles.style.gridTemplateColumns =
"repeat("+n+", 50px)";

if(inputArrayStyles != null)inputArrayStyles.style.gridTemplateRows =
"repeat("+n+", 50px)";

let determinant = 1;

function Calculate(){

let matrix = GetMatrix()

let d=0;

let c;

let currentRow;

let divider;

while(d < n){

determinant *= matrix[d][d];

c = d;

if(matrix[d][d] != 1){

divider = matrix[d][d];

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

matrix[d][i] /= divider;

}
currentRow = matrix[d].slice();

d++;

let multiple;

for(let i = d; i < n; i++){

if(matrix[i][c] == 0) continue;

else multiple = -(matrix[i][c] / currentRow[c]);

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

matrix[i][j] += currentRow[j] * multiple;

c++;

document.querySelector(".determinantArea").style.display = "flex";

function GetMatrix(){

let matrix = []

for(let i = 0; i<n; i++) matrix[i] = Array(n);

let inputArray = document.querySelectorAll(".inputArrayElem");

let i = 0;

for(let r = 0; r < n; r++){

for(let c = 0; c < n; c++){

matrix[r][c] = Number(inputArray[i].value);

i++;

return matrix;

</script>
<header>

<h1>Знаходження визначника матриці методом Жордана-Гаусса</h1>

<h2>Бойко А.В. КН-22мс</h2>

</header>

<main>

<div class="sizeArray">

<input type="number" bind:value={n} min=1 max=6 on:input={GetDiv}>

<div class="label">Розмірність масиву: {n}</div>

</div>

<div class="workArea">

<div class="inputArray">

{#key n}

{#each Array(n*n) as elem, id}

<input type="number" class="inputArrayElem">

{/each}

{/key}

</div>

<div class="determinantArea">

<div class="determinant">{Math.round(determinant)}</div>

</div>

</div>

<button on:click={Calculate}>Розрахувати</button>

</main>

<style>

header {

width: 100%;

display: flex;

flex-direction: column;

align-items: center;

margin-bottom: 150px;

}
main {

width: 60%;

margin: 0 auto;

display: flex;

flex-direction: column;

.sizeArray {

display: flex;

flex-direction: row;

justify-content: space-between;

margin-bottom: 100px;

.sizeArray input{

width: 42px;

.workArea{

display: flex;

flex-direction: row;

justify-content: space-between;

align-items: center;

margin-bottom: 150px;

.determinantArea{

background-color: lightblue;

width: 100px;

height: 100px;

display: none;

justify-content: center;
align-items: center;

.inputArray {

display: grid;

grid-template-columns: 50px;

grid-template-rows: 50px;

</style>

You might also like