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

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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА з дисципліни “Програмування алгоритмічних структур” Тема “Програмування базових алгоритмів” Варіант-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:05-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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