Ім'я файлу: Лб1 (ЧМ) Калита.docx Розширення: docx Розмір: 140кб. Дата: 28.03.2021 скачати Пов'язані файли: ОсСАПР 3 лр (2) (3).docx ОсСАПР 2лб (2) (3).docx МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ КАФЕДРА СИСТЕМОТЕХНІКИ ЛАБОРАТОРНА РОБОТА №1 з дисципліни «Чисельні методи» на тему: «РОЗВ’ЯЗАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ» Виконав: ст. гр. АКТСІу-18-2 Калита Е.О. Перевірив: Климова І.М. 2018 РОЗВ’ЯЗАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ Мета роботи Закріплення практичних навичок розв’язання систем лінійних алгебраїчних рівнянь (СЛАР) точними і наближеними методами. 1.2 Постановка задачі Розробити алгоритм заданого методу для розв'язування СЛАР, запрограмувати його засобами обраної алгоритмічної мови. 1.3 Опис методу розв'язання задачі. Метод Гауса – алгоритм розв'язування систем лінійних алгебраїчних рівнянь. Зазвичай під цим алгоритмом розуміють деяку послідовність операцій, що виконують над відповідною матрицею коефіцієнтів, для приведення її до трикутного вигляду, з наступним вираженням базисних змінних через небазисні. Цей метод також можливо використовувати для знаходження рангу матриці, для обчислення визначника матриці, а також для обчислення обернення невиродженої квадратної матриці. Метод Гауса є найбільш розповсюдженим прийомом розв’язування СЛАР. Суть методу складається в послідовному виключенні змінних. 1.4 Схема алгоритму розв'язання задачі. Рисунок 1.1 – Схема алгоритму розв’язування задачі 1.5. Програмна реалізація #include "stdafx.h" #include #include #include using namespace std; int main() { int i, j, n, m; //создаем массив cout << "Number of equations: "; cin >> n; cout << "Number of variables: "; cin >> m; m += 1; float **matrix = new float *[n]; for (i = 0; i matrix[i] = new float[m]; //инициализируем for (i = 0; i for (j = 0; j { cout << " Element " << "[" << i + 1 << " , " << j + 1 << "]: "; cin >> matrix[i][j]; } //выводим массив cout << "matrix: " << endl; for (i = 0; i { for (j = 0; j cout << matrix[i][j] << " "; cout << endl; } cout << endl; //Метод Гаусса //Прямой ход, приведение к верхнетреугольному виду float tmp; int k; float *xx = new float [m]; for (i = 0; i { tmp = matrix[i][i]; for (j = n; j >= i; j--) matrix[i][j] /= tmp; for (j = i + 1; j { tmp = matrix[j][i]; for (k = n; k >= i; k--) matrix[j][k] -= tmp*matrix[i][k]; } } /*обратный ход*/ xx[n - 1] = matrix[n - 1][n]; for (i = n - 2; i >= 0; i--) { xx[i] = matrix[i][n]; for (j = i + 1; j } //Выводим решения for (i = 0; i cout << xx[i] << " "; cout << endl; delete[] matrix; system("pause"); return 0; } 1.6. Результати розв’язання СЛАР за допомогою програми. Рисунок 1.2 – Результат розв’язання СЛАР за допомогою програми 1.7. Результати перевірки знайденого розв’язку СЛАР за допомогою Mathcad. Рисунок 1.3 – Результат знайденого розв’язку СЛАР з Mathcad 1.8. Аналіз результатів і висновки по роботі. На даній лабораторній роботі були закріплені навички розв'язання систем лінійних алгебраїчних рівнянь (СЛАР). Розв'язання було проведено точним методом, а саме, методом Гауса. Також у програмній частини представлений розв'язок СЛАР за допомогою С++. Результати вирішення за допомогою програми цілком збігаються з вирішенням СЛАР у системі Mathcad. |