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

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

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

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

Програмування циклічних алгоритмів

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

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

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

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

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

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

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

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

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

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

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

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

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

Міністерство освіти і науки України Національний технічний університет «Київський політехнічний інститут ім. Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем Програмування алгоритмічних структур ЗВІТ ДО Розрахунково-графічної роботи «Програмування циклічних алгоритмів» Варіант № 11 Дата «24» листопада 2021 Мета: набуття практичних навичок розробки розгалужених та циклічних алгоритмів при створювання програмних проектів для розв’язання практичних завдань. Завдання на розрахунково-графічну роботу (РГР). 1.Розробити алгоритми і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в додатках 1, 2 відповідно до індивідуального варіанта. Варіант обрати за списком групи. 2.Розробити програмний проект в середовищі IntellijIDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками(наприклад, Excel, калькулятор, тощо). 3.Оформити РГР та вчасно надіслати викладачу на перевірку файл РГР та файл програми. Вимоги до розв’язання завдання Обидва завдання запрограмувати в одному класі, який має назву RgrTr11Petr. У назві класу зашифровано: Rgr–вид роботи; Tr11–номер групи; Petr–перші чотири літери прізвища автора (Петренко П.П.). У даному класі організувати п’ять методів: main, task11(для перетворення матриці до трикутникового вигляду), task12(для отримання значень невідомих змінних СЛАР), task13 (для виведення виводу результатів розрахунку завдання 1), task2(для рішення завдання 2). У методі main організувати: -введення даних для завдання1(додаток1). Введення даних зробити за допомогою присвоєння; -виклик методу task11, у який передати початкову розширену матрицю системи лінійних алгебраїчних рівнянь (СЛАР) та повернути трикутникову матрицю. У даному методі організувати прямий хід методу Гауса для розв’язання СЛАР. За необхідності програмування вкладених циклів, використовувати принаймні два різних оператори циклів–або for, або while, або do while; -прийняти із методу task11 трикутникову матрицю; -викликати метод task12, у який передати трикутникову матрицю та повернути вектор результатів розв’язання СЛАР. У даному методі організувати зворотний хід методу Гауса для розв’язання СЛАР. За необхідності програмування вкладених циклів, використовувати принаймні два різних оператори циклів–або for, або while, або do while; -викликати три рази task13, в який передавати по черзі початкову матрицю, трикутникову матрицю, вектор результатів для виводу в консоль. Вивід має бути із заголовком: «Початкова матриця:», «Трикутникова матриця:» або «Вектор результатів:». Метод task13 зробити універсальним для виводу матриць і вектору. Виведення організувати за допомогою метода System.out.printf форматованого виводу значень. Для дробових чисел–небільше 3 знаків після коми. Цілі числа виводити без коми та нулів після коми; -введення даних для завдання2(додаток2), розрахунки зробити для трьох різних варіантів вхідних даних, що обирає користувач та вводить з клавіатури (всього має бути 3 варіанти вхідних даних та 3 варіанти результатів розрахунків). Введення даних зробити за допомогою методів класу Scanner; -виклик методу task2, у якому організувати всі розрахунки завдання2 та організувати повернення результатів в main; -виведення вхідних даних та результатів розрахунку завдання2. Виве-дення організувати за допомогою метода System.out.printf форматованого виводу значень. Для дробових чисел–не більше 3 знаків після коми. Короткий опис рішення завдання разом із скриншотом варіанту завдання Завдання 1 У методі main створюємо двовимірний масив для виведення розширеної матриці та використаємо початкову ініціалізацію. Організовуємо такі методи task11(алгоритм вирішення матриці методом Гауса), task12(для отримання значень невідомих змінних СЛАР), task13(для виведення виводу результатів розрахунку завдання 1), task2(для рішення завдання 2). У методі task11 створюємо новий двовимірний масив, у який передаємо початкову розширену матрицю. Циклом while() занулимо стовпчики під головною діагоналлю. Для цього створимо змінну n, яка відповідає за номер рядка. Створюємо вкладений цикл for() і проходитимемо по рядках. За допомогою ітерації n++ переходитимемо на наступний рядок. Так ми скопіювали початкову матрицю у нову. Тепер виконаємо метод Гауса. Змінна coeff обчислює наш коефіцієнт, на який множимо елемент головної діагоналі. Таким чином ми занулимо стовпці. У методі task12 створюємо новий одновимірний масив для виведення вектора результатів. Даний масив буде заповнюватись ззаду. Беремо елемент розширеної матриці, віднімаємо від нього суму знайдених х і ділимо на невідомий. У методі task13 виводимо початкову, трикутникову матрицю як двовимірний масив і вектор результатів як одновимірний масив циклами for(). Вивід має бути із заголовком: «Початкова матриця:», «Трикутникова матриця:» та «Вектор результатів:». Повертаємо масиви в main(). Виведення організувати за допомогою метода System.out.printf форматованого виводу значень. Для дробових чисел–небільше 3 знаків після коми. Цілі числа виводимо без коми та нулів після коми. Завдання 2 У main за допомогою Scanner() вводимо певне число. У методі task2 виведемо чи є воно степенем числа 3. Використаємо цикл while(). Якщо введено число ділиться на 3 без остачі, то виводимо True. Якщо ділення з остачею, то виводимо False. Виведення організувати за допомогою метода System.out.printf форматованого виводу значень. Для дробових чисел–не більше 3 знаків після коми. / Завдання 2 / Код програми: package com.company; import java.util.Scanner; import java.lang.Math; public class RgrTr15Tymk { public static void main(String[] args) { double[][] array = {{1, -3, -8, -5, 10, 86.3}, {-6, 2, 0, 7, 8, -0.8}, {-1, 5, -9, 6, 5, 126.8}, {-10, 8, -3, 10, 8, 31.6}, {-4, -4, -3, -3, -7, -75.7}}; double[][] triangulMatrix = task11(array); double[] vectorMatrix = task12(triangulMatrix); /////Task 1///// System.out.println("-----Task_1-----"); System.out.println("Початкова матриця:"); task13(array); System.out.println("Трикутникова матриця:"); task13(triangulMatrix); System.out.println("Вектор результатів:"); task13(vectorMatrix); /////Task 2///// System.out.println("-----Task_2-----"); Scanner scan = new Scanner(System.in); for( int i = 0; i < 3; i++) { System.out.printf("Введемо х:\n"); int x = scan.nextInt(); if (task2(x)) System.out.println("True"); else System.out.println("False"); } } public static double[][] task11(double[][] array){ double[][] newArray = new double[array.length][array[0].length]; int n = 0; while (n < array.length){ for (int j = 0; j < array[n].length; j++) newArray[n][j] = array[n][j]; n++; } double coeff; int m = 0; while(m < newArray.length - 1){ for (int i = m + 1; i < newArray.length; i++) { coeff = newArray[i][m]/newArray[m][m]; for (int j = m; j < newArray[i].length; j++) newArray[i][j] -= newArray[m][j] * coeff; } m++; } return newArray; } public static double[] task12(double[][] arr){ double[] vector = new double[arr.length]; int i = arr.length - 1; while(i >= 0){ double sum = 0; for (int j = 0; j < arr[0].length - 1; j++) sum += arr[i][j] * vector[j]; vector[i] = (arr[i][arr.length] - sum)/arr[i][i]; i--; } return vector; } public static void task13(double[][] array) { for (int i = 0; i < array.length; i++) { System.out.print("|"); for (int j = 0; j < array[0].length; j++) { if (array[i][j] % 1 == 0) System.out.format(" %4.0f\t ", array[i][j]); else System.out.format(" %4.1f\t ", array[i][j]); } System.out.println("|"); } } public static void task13(double[] array){ System.out.printf("|"); for (int i = 0; i < array.length; i++) System.out.printf("\t%.2f" , array[i]); System.out.printf("\t|\n"); } public static boolean task2(int x) { while(x % 3 == 0) x /= 3; return x == 1; } } Результати рішення програми / / Блок-схема алгоритму до завдання 2 / Висновок: У результаті створення лабораторної роботи написано програму мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, розроблено програму розрахунку матриці методом Гауса, виведено трикутникову матрицю та вектор результатів. Створено метод для виведення числа, яке є степенем числа 3.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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