DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Розрахунково-графічна робота з дисципліни «Програмування алгоритмічних структур»

Оригінальна назва роботи

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

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

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

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

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

Про що ця робота

У роботі розроблено програми мовою Java для розв'язання систем лінійних рівнянь методом Гаусса та обробки рядків. Наведено алгоритми, лістинг програми та результати обчислень.

У роботі розглядаються

  • Програмування мовою Java
  • Метод Гаусса
  • Системи лінійних алгебричних рівнянь
  • Робота з матрицями та масивами
  • Алгоритмічні структури даних

Зміст і розділи

  1. Завдання на розрахунково-графічну роботу
  2. Короткий опис рішення завдання
  3. Програма проекту
  4. Результати обчислень
  5. Висновок
Для кого:Студенти технічних спеціальностей, викладачі програмування
Викладачі:Викладач кафедри

Ключові поняття

Javaметод Гауссаматрицявектор результатівциклмасивалгоритмпрограмуваннярядок

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

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

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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