DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Розв’язання систем лінійних алгебраїчних рівнянь (СЛАР) прямими методами. Звичайний метод Гауса та метод квадратних коренів.

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
ІСМ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2023
Тип роботи:
Лабораторна робота
Предмет:
Чисельні методи

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України НТУУ «Київський політехнічний інститут ім. Ігоря Сікорського» Кафедра АПЕПС Лабораторна робота №1  з дисципліни «Чисельні методи в моделюванні енергетичних процесів» «Розв’язання систем лінійних алгебраїчних рівнянь (СЛАР) прямими методами. Звичайний метод Гауса та метод квадратних коренів.» Варіант 15 Завдання / Розв’язати систему рівнянь з кількістю значущих цифр m = 6. Використати метод Гауса для парних варіантів шляхом зведення матриці до верхньої трикутної побудованої на побічній діагоналі, для непарних - шляхом зведення до діагональної матриці. Вивести всі проміжні результати (матриці А, що отримані в ході прямого ходу методу Гауса, матрицю зворотного ходу методу Гауса та розв’язок системи. Навести результат перевірки: вектор нев’язки r = b – Ax, де x - отриманий розв’язок. Порівняти корені рівнянь, отримані у Mathcad, із власними результатами за допомогою методу середньоквадратичної похибки. Для варіанту 15 матриця має такий вигляд: / Прямий хід методу Гауса: / / / Зворотній хід: / / Відповідь: / Вектор нев’язки: 7,590085 = 7,59 (0,000085) 3,210024 = 3,21 (0,000024) 2,880229 = 2,88 (0,000229) 6,250004 = 6,25 (0,000004) 6,349953 = 6,35 (0,000047) Розвязок через калькулятор: / / / / / Середньоквадратична похибка: / Код програми: #include <iostream> #include <iomanip> #include <windows.h> #define SIZE 5 using namespace std; void matOutput(float(*mat)[6], int rows, int colums) { for (int i = 0; i < rows; i++) { for (int j = 0; j < colums; j++) { cout << setw(9) << fixed << setprecision(4) << mat[i][j]; } cout << endl; } cout << endl; } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); const int rows = 5; const int columns = 6; float mat[rows][columns] = { {6.18, 1.12, 0.95, 1.32, 0.83, 7.59}, {1.12, 3.28, 2.12, 0.57, 0.91, 3.21}, {0.95, 2.12, 7.13, 1.29, 1.57, 2.88}, {1.32, 0.57, 1.29, 3.57, 1.25, 6.25}, {0.83, 0.91, 1.57, 1.25, 6.21, 6.35} }; float result[rows]; cout << "Початкова матриця:" << endl; matOutput(mat, rows, columns); cout << "Прямий хід:" << endl << endl; cout << "Поділимо 1 рядок на " << mat[0][0] <<" :" << endl << endl; float temp = mat[0][0]; for (int i = 0; i < columns; i++) { mat[0][i] /= temp; } matOutput(mat, rows, columns); cout << "Помножимо 1 рядок на " << -mat[1][0] << " і додамо до 2 :" << endl << endl; temp = -mat[1][0]; for (int i = 0; i < columns; i++) { mat[1][i] += (mat[0][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 1 рядок на " << -mat[2][0] << " і додамо до 3 :" << endl << endl; temp = -mat[2][0]; for (int i = 0; i < columns; i++) { mat[2][i] += (mat[0][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 1 рядок на " << -mat[3][0] << " і додамо до 4 :" << endl << endl; temp = -mat[3][0]; for (int i = 0; i < columns; i++) { mat[3][i] += (mat[0][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 1 рядок на " << -mat[4][0] << " і додамо до 5 :" << endl << endl; temp = -mat[4][0]; for (int i = 0; i < columns; i++) { mat[4][i] += (mat[0][i] * temp); } matOutput(mat, rows, columns); cout << "Поділимо 2 рядок на " << mat[1][1] << endl << endl; temp = mat[1][1]; for (int i = 0; i < columns; i++) { mat[1][i] /= temp; } matOutput(mat, rows, columns); cout << "Помножимо 2 рядок на " << -mat[2][1] << " і додамо до 3 :" << endl << endl; temp = -mat[2][1]; for (int i = 0; i < columns; i++) { mat[2][i] += (mat[1][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 2 рядок на " << -mat[3][1] << " і додамо до 4 :" << endl << endl; temp = -mat[3][1]; for (int i = 0; i < columns; i++) { mat[3][i] += (mat[1][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 2 рядок на " << -mat[4][1] << " і додамо до 5 :" << endl << endl; temp = -mat[4][1]; for (int i = 0; i < columns; i++) { mat[4][i] += (mat[1][i] * temp); } matOutput(mat, rows, columns); cout << "Поділимо 3 рядок на " << mat[2][2] << endl << endl; temp = mat[2][2]; for (int i = 0; i < columns; i++) { mat[2][i] /= temp; } matOutput(mat, rows, columns); cout << "Помножимо 3 рядок на " << -mat[3][2] << " і додамо до 4 :" << endl << endl; temp = -mat[3][2]; for (int i = 0; i < columns; i++) { mat[3][i] += (mat[2][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 3 рядок на " << -mat[4][2] << " і додамо до 5 :" << endl << endl; temp = -mat[4][2]; for (int i = 0; i < columns; i++) { mat[4][i] += (mat[2][i] * temp); } matOutput(mat, rows, columns); cout << "Поділимо 4 рядок на " << mat[3][3] << endl << endl; temp = mat[3][3]; for (int i = 0; i < columns; i++) { mat[3][i] /= temp; } matOutput(mat, rows, columns); cout << "Помножимо 4 рядок на " << -mat[3][3] << " і додамо до 5 :" << endl << endl; temp = -mat[4][3]; for (int i = 0; i < columns; i++) { mat[4][i] += (mat[3][i] * temp); } matOutput(mat, rows, columns); cout << "Поділимо 5 рядок на " << mat[4][4] << endl << endl; temp = mat[4][4]; for (int i = 0; i < columns; i++) { mat[4][i] /= temp; } matOutput(mat, rows, columns); cout << endl << "Зворотній хід:" << endl << endl; cout << "Помножимо 5 рядок на " << -mat[3][4] << " і додамо до 4 :" << endl << endl; temp = -mat[3][4]; for (int i = 0; i < columns; i++) { mat[3][i] += (mat[4][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 5 рядок на " << -mat[2][4] << " і додамо до 3 :" << endl << endl; temp = -mat[2][4]; for (int i = 0; i < columns; i++) { mat[2][i] += (mat[4][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 5 рядок на " << -mat[1][4] << " і додамо до 2 :" << endl << endl; temp = -mat[1][4]; for (int i = 0; i < columns; i++) { mat[1][i] += (mat[4][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 5 рядок на " << -mat[0][4] << " і додамо до 1 :" << endl << endl; temp = -mat[0][4]; for (int i = 0; i < columns; i++) { mat[0][i] += (mat[4][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 4 рядок на " << -mat[2][3] << " і додамо до 3 :" << endl << endl; temp = -mat[2][3]; for (int i = 0; i < columns; i++) { mat[2][i] += (mat[3][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 4 рядок на " << -mat[2][3] << " і додамо до 3 :" << endl << endl; temp = -mat[2][3]; for (int i = 0; i < columns; i++) { mat[2][i] += (mat[3][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 4 рядок на " << -mat[1][3] << " і додамо до 2 :" << endl << endl; temp = -mat[1][3]; for (int i = 0; i < columns; i++) { mat[1][i] += (mat[3][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 4 рядок на " << -mat[0][3] << " і додамо до 1 :" << endl << endl; temp = -mat[0][3]; for (int i = 0; i < columns; i++) { mat[0][i] += (mat[3][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 3 рядок на " << -mat[1][2] << " і додамо до 2 :" << endl << endl; temp = -mat[1][2]; for (int i = 0; i < columns; i++) { mat[1][i] += (mat[2][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 3 рядок на " << -mat[0][2] << " і додамо до 1 :" << endl << endl; temp = -mat[0][2]; for (int i = 0; i < columns; i++) { mat[0][i] += (mat[2][i] * temp); } matOutput(mat, rows, columns); cout << "Помножимо 2 рядок на " << -mat[0][1] << " і додамо до 1 :" << endl << endl; temp = -mat[0][1]; for (int i = 0; i < columns; i++) { mat[0][i] += (mat[1][i] * temp); } matOutput(mat, rows, columns); cout << "Відповідь:" << endl << endl; for (int i = 0; i < rows; i++) { cout << "x" << i+1 << " = " << mat[i][columns - 1] << endl; } return 0; }
Антиботан аватар за замовчуванням

03.05.2023 17:40

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!