Програмування базових алгоритмів

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

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

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

Рік:
2023
Тип роботи:
Розрахунково - графічна робота
Предмет:
Програмування

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА з дисципліни “Програмування алгоритмічних структур” Тема “Програмування базових алгоритмів” Варіант-15 Завдання на розрахунково-графічну роботу (РГР): 1.Розробити алгоритмиі написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих вдодатках1,2відповіднодо індивідуального варіанта. Варіант обрати за списком групи. 2.Розробити програмний проект в середовищі IntellijIDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками(наприклад, Excel, калькулятор, тощо). 3.Оформити РГР та вчасно надіслати викладачу на перевірку файл РГР та файл програми Завдання 1: Система лінійних алгебраїчних рівнянь (СЛАР) задана розширеною матрицею системи. Розв’язати СЛАР методом Гауса. Вивести на екран: початкову матрицю, трикутникову матрицю, вектор результатів. / Завдання 2: Розв’язати задачу згідно обраного варіанту. Вивести на екран початкові дані та результати обчислень Завдання виконати для трьох різних вхідних даних / Короткий опис рішення завдання: Завдання №1. Для Вирішення завдання 1, було створено три методи task11(), task12(),task13(). У методі task11() типу double[][] було розроблено прямий хід методу Гаусса (перетворення матриці у трикутникову). У цьому методі я організував цей алгоритм використовуючи цикли for і while. У результаті його виконання я повертаю трикутну матрицю, яку пізніше виводжу у методі task13(). У методі task12() типу double[] розроблено зворотній хід методу Гаусса (Розв’язування рівнянь в оберненому порядку) і заповнення всіх отриманих даних у вектор результатів. Для цього було використано цикли for і while. У методі task13() типу void було розроблено почерговий вивід усіх векторів і матриць. Для його справної роботи був використаний перегруз методів. У одному методі я приймаю матрицю і надалі роблю її перевірку на трикутність. Якщо матриця трикутна я надаю її відповідний заголовок і роблю її вивід. Якщо вона не трикутна, надаю їй заголовок “ Початкова матриця ” і виводжу. Перевірку та вивід матриць я організував за допомогою циклів for і while. У другому методі я приймаю звичайний одновимірний масив(вектор результатів) і далі провожу його вивід разом із заголовком “ вектор результатів ” . Завдання №2. Для вирішення цього завдання я створив метод task2(). Моєю ідею щодо його розв’язання було отримання і передача у метод task2() будь-якого числа, створення нового рядку і за допомогою методу String.valueOf() отримати це число у типі String і два рази додати у новий рядок. Цей метод повертає змінну str типу String де до будь-якого числа приписане таке саме число. Блок-схема до Завдання №2: / Програма проекту(копія коду): package com.company; import java.util.Scanner; public class RgrTr15Fund { public static void main(String[] args) { // -------- TASK1 --------- int n = 5; int m = n+1; double[] x; double[][] mat = {{9,3,-5,0,2,-62.6}, {-1,1,7,8,10,-18.4}, {4,8,-4,-1,3,-6.6}, {10,-8,-5,-10,1,-64.2}, {10,2,-9,-1,9,-46.7}}; System.out.println("---------- TASK1 -----------"); task13(mat,n,m); System.out.printf("\n\n"); // Зведення до трикутної матриці task11(mat,n,m); task13(mat,n,m); // Рішення трикутної матриці x = task12(mat,n,m); System.out.printf("\n\n"); task13(x,n); System.out.printf("\n\n"); //------------ TASK2 ------------- System.out.println("---------- TASK2 -----------"); Scanner scan = new Scanner(System.in); System.out.printf("Уведіть три будь-яких числа:\n"); int number1 = scan.nextInt(); System.out.printf("%s\n",task2(number1)); int number2 = scan.nextInt(); System.out.printf("%s\n",task2(number2)); int number3 = scan.nextInt(); System.out.printf("%s\n",task2(number3)); } static public double[][] task11(double[][] mat,int n,int m) { double l; int k = 1; while(k<n){ for (int j = k; j < n; j++) { l = mat[j][k-1] / mat[k-1][k-1]; for (int i = 0; i < m; i++) { mat[j][i] = mat[j][i] - l * mat[k-1][i]; } } k++; } return mat; } static public double[] task12(double[][] mat,int n, int m) { double[] x = new double[n]; int k = n-1; while (k >= 0){ x[k] = mat[k][n] / mat[k][k]; for(int c = n-1; c > k; c--) { x[k] = x[k] - mat[k][c] * x[c] / mat[k][k]; } k--; } return x; } static public void task13(double[][] mat,int n,int m) { boolean flag = false; for (int i = 1; i < n - 1; i++) { for (int j = 0; j < i; j++) { flag = mat[i][j] == 0; } } if(!flag) { System.out.printf("« Початкова матриця: »\n"); int u = 0; while (u < n) { System.out.printf("│ "); for (int j = 0; j < m; j++) { if (mat[u][j] % 1 == 0) { System.out.printf("%4.0f\t", mat[u][j]); } else { System.out.printf("%.3f\t", mat[u][j]); } } u++; System.out.printf(" │"); System.out.println(); } } else { System.out.printf("« Трикутникова матриця: »\n"); int t = 0; while(t < n) { System.out.printf("│ "); for(int j = 0; j < m; j++){ if (mat[t][j] % 1 == 0) { System.out.printf("%4.0f\t", mat[t][j]); } else { System.out.printf("%.3f\t", mat[t][j]); } } t++; System.out.printf(" │"); System.out.println(); } } } static public void task13(double[] x,int n) { System.out.printf("« Вектор результатів: »\n"); System.out.printf("│ "); for ( int i = 0; i < n; i++) { if (x[i] % 1 == 0) { System.out.printf("%4.0f\t", x[i]); } else { System.out.printf("%.3f\t", x[i]); } } System.out.printf(" │"); } static public String task2(int number) { String str = String.valueOf(number) + String.valueOf(number); return str; } } Результати обчислень: / / Висновок: Під час виконання даної розрахунково-графіної роботи я удосконавлив свої навички у програмуванні алгоритмів, роботі з матрицями та масивами. Розробив алгоритм для розв’язання СЛАР за допомогою методу Гаусса. Також удосконалив свої навички у роботі з рядками на мові Java. Отримані дані після роботи програми повністю задовільняють.
Антиботан аватар за замовчуванням

03.05.2023 18:58

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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