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

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

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

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

Курсова робота з курсу “Програмно-орієнтовані мови програмування”: Знаходження оберненої матриці методом Гауса

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра електронних обчислювальних машин

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

Рік:
2006
Тип роботи:
Курсова робота
Предмет:
Програмно-орієнтовані мови програмування
Група:
КН-1
Коротко про документ

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

У курсовій роботі розроблено програму на мові C/C++ для знаходження оберненої матриці методом Гауса. Реалізовано введення даних з клавіатури та файлу, а також подано результати тестування.

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

  • Програмування мовою C
  • Метод Гауса
  • Обернена матриця
  • Структури даних
  • Алгоритми обчислень
  • Введення-виведення даних

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

  1. Вступ
  2. Методи та засоби розвязування задачі
  3. Блок-схема функції знаходження оберненої матриці
  4. Опис алгоритму знаходження оберненої матриці методом гауса
  5. Результат виконання програми
  6. Програма
  7. Висновки
  8. Список використаної літератури
Для кого:Студенти технічних спеціальностей та викладачі вищих навчальних закладів.
Викладачі:Не вказано

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

обернена матрицяметод Гаусамова Cструктури данихалгоритмматрицяпрограмафункціявведення данихфайл

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” кафедра ЕОМ Курсова робота   з курсу “Програмно-орієнтовані мови програмування” Перевірив: Львів – 2006 Завдання для роботи Знаходження оберненої матриці методом Гауса. Вимоги до програми: введення-виведення даних виконати у зручній формі у вигляді таблиць; забезпечити можливість редагування вхідних даних у межах визначених полів введення даних; програма повинна бути реалізована на мові С/С++; програма повинна працювати у вікні MS-DOS під керуванням операційної системи Windows; передбачити введення/виведення даних з клавіатури та з файлу; керування режимами роботи програми виконати за допомогою клавіатури та миші. Вступ Комп’ютер – це машина, що обробляє інформацію. Вивчення засобів програмування передбачає вивчення того, яким чином ця інформація організована всередині ЕОМ, як вона обробляється і як може бути використана. Тому, для вивчення дисципліни студенту особливо важливо зрозуміти концепцію організації даних і роботи з ними. Програма представляє собою в кінцевому рахунку конкретні формулювання абстрактних алгоритмів, що базуються на конкретних представленнях і структурах даних. Зрозуміло, що рішення про структури даних які необхідно застосувати неможливо прийняти без знання алгоритмів, що застосовуються до цих даних, і навпаки, вибір алгоритмів суттєво залежить від вибраних структур даних. Отже, структури програм і структури даних нерозривно пов’язані. Мова С – це універсальна мова програмування, для якої характерні економічність виразів, сумісний потік управління та структури даних , багатий набір операторів. Мова С не являється ні мовою «дуже високого рівня», ні «великою» мовою, і не предназначається для деякої спеціальної області застосувань, але відсутність обмежень і загальність мови роблять її більш зручною і ефективною для багатьох задач. Методи та засоби розвязування задачі Для розвязання задачі ми напишем програму. Програма повинна мати меню для вибору режиму роботи. Ми повинні реалізувати ввід матриці. На виході ж має бути матриця, обернена до вхідної. Крім цього слід розділити спосіб вводу/виводу даних з клавіатури та з файлу. Щоб створити таку прграму створим головне меню програми, де можна буде вибрати один з наступних варіантів: ввід матриці з клавіатури; ввід матриці з файлу; обрахунок оберненої матриці. Кожен із пунктів головного меню реалізуємо як окрему функцію. Знаходження оберненої матриці відбуватиметься методом Гауса. Блок-схема функції знаходження оберненої матриці  SHAPE \* MERGEFORMAT Створення одиничної матриці Перебір стовбців Зведення першого ненульового елемента рядка до 1. Аналогічні математичні дії виконуються з одиничною матрицею Проходження по рядку Віднімання рядків задля встановлення потрібних елементів в 0. Аналогічні математичні дії виконуються з одиничною матрицею Перебір рядків  Блок-схема функції вводу матриці з клавіатури  SHAPE \* MERGEFORMAT Зчитування розрядності матриці Виділення памяті для розміщення матриці Введення з клавіатури наступного елемента матриці Запит чи всі дані уже введено  Блок-схема функції вводу матриці з файлу SHAPE \* MERGEFORMAT Відкриття файлу. Зчитування розмірності матриці Виділення памяті для розміщення матриці Зчитування з рядка файлу елемента матриці Запит чи всі дані уже введено  Опис алгоритму знаходження оберненої матриці методом Гауса Матрицю що була введена ми зводим до одиничної матриці методом Гауса. При цьому усі дії що були виконані над матрицею ми виконуємо і над одиничною матрицею в тому ж порядку. Коли матриця зведена до одиничної, матриця, що спочатку була одиничною і буде оберненою до початкової матриці, введеної з клавіатури. Метод Гауса зведення до одиничної матриці полягає в тому, що ми перетворюємо елементи в головній діагоналі матриці в одиниці шляхом ділення всього рядка на елемент що знаходиться на діагоналі. Решта елементів зводяться до нулів шляхом множення та додавання рядків. Результат виконання програми  Основне меню програми, що зоображене на малюнку, дозволяє нам ввести вхідні дані з клавіатури, файлу, знайти обернену матрицю методом Гауса чи вийти з програми. Щоб вибрати бажану дію слід ввести номер потрібного пункту меню та натиснути Ввід. При виборі першого пункту «Ввід матриці з клавіатури» нам потрібно вказати розмірність матриці і після цього вводити елементи матриці.  При виборі другого пункту «Ввід матриці з файлу» нам слід вказати відносний шлях до файлу, з якого відбудеться читання вхідних даних. Після цього слід вказати розмірність матриці, яку ми бажаємо зчитати з файлу. Після виконання необхідних дій програма поверне нас в головне меню. Вхідний файл повинен містити елементи матриці, тобто дійсні числа розташовані в стовбчик.  При виборі третього пункту «Обрахунок оберненої матриці» програма знаходить обернену матрицю до вхідної та виводить її на екран. Після виведення інформації ми знов опинимось в головному меню.  При виборі четвертого пункту «Впорядкування даних» список, що був введений за допомогою пункту 1 або 2 буде відсортовано. Щоб продивитись відсортований список слід вибрати пункт 3 «Вивід списку» після виконання сортування. При виборі четвертого пункту «Вихід» виконується вихід з програми в операційну систему. Програма #include <stdio.h> #include <alloc.h> #include <string.h> #include <math.h> int n,i,j; double **m,**z; char t[20]; void kl(){ printf("Vvedit rozmirnist matryci: "); scanf("%d",&n); m=(double**)malloc(n*sizeof(double*)); for(i=0;i<n;i++) m[i]=(double*)malloc(n*sizeof(double)); for(i=0;i<n;i++) for(j=0;j<n;j++){ printf("M[%d,%d]=",i,j); scanf("%s",&t); m[i][j]=atof(t);}; } void fa(){ FILE *f; char pat[150],qq[50]; printf("Vvedit shlyah do fajlu: "); scanf("%s",&pat); printf("Vvedit rozmirnist matryci: "); scanf("%d",&n); m=(double**)malloc(n*sizeof(double*)); for(i=0;i<n;i++) m[i]=(double*)malloc(n*sizeof(double)); f=fopen(pat,"r"); for(i=0;i<n;i++) for(j=0;j<n;j++){ fgets(qq,45,f); m[i][j]=atof(qq); }; } void vyv(){ int k; z=(double**)malloc(n*sizeof(double*)); for(i=0;i<n;i++) z[i]=(double*)malloc(n*sizeof(double)); for(i=0;i<n;i++) for(j=0;j<n;j++){ if(i==j) z[i][j]=1; else z[i][j]=0;}; for(i=0;i<n;i++){ for(j=0;j<n;j++){ z[i][j]/=m[i][i]; m[i][j]/=m[i][i]; }; for(j=0;j<n;j++) if(j!=i) for(k=0;k<n;k++){ z[j][k]-=m[j][i]*z[i][k]; m[j][k]-=m[j][i]*m[i][k]; };}; for(i=0;i<n;i++){ printf("\n"); for(j=0;j<n;j++) printf("%6.2f",z[i][j]);}; printf("\n");} void main() { int c=0; while(c!=4){ printf("\nZNAHODJENNYA OBERNENOYI MATRUCI METODOM GAUSA.\n \ 1. Vvid matryci z klaviatury.\n \ 2. Vvid matryci z fajlu.\n \ 3. Obrahunok obernenoi matryci.\n \ 4. Vyhid.\n"); scanf("%d",&c); if(c==1) kl(); if(c==2) fa(); if(c==3) vyv();}; } Висновки У курсовій роботі систематизовано, закріплено та розширено теоретичні і практичні знання з програмування за допомогою застосування різноманітних структур даних та алгоритмів при розв’язуванні конкретних прикладних задач; набуто навики розробки більш складних програмних продуктів і оформлення програмної документації. Моя програма знаходить обернену матрицю методом Гауса. Список використаної літератури 1. Громов Ю.Ю., Татаренко С.И. Прогаммирование на языке СИ, Учебное пособие, 1995. 2. Маслов А.Н. Введение в язык программирования С, 1991. 3. Страуструп Б. Введение в язык C++, 1985.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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