Пятница, 04.07.2025, 07:02
Приветствую Вас Гость | RSS

Рефераты для вузов скачать бесплатно

Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 72
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Главная » 2012 » Январь » 13 » Курсовая работа: Метод Жордана Гаусса
11:27
Курсовая работа: Метод Жордана Гаусса

Название: Метод Жордана Гаусса
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа Добавлен 16:26:45 29 апреля 2010 Похожие работы
Просмотров: 131 Комментариев: 0 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

Зміст

 

Вступ

1. Теоретична частина

1.1 Постановка задачі

1.2 Методи розв'язування задачі

1.3 Алгоритм розв'язку задачі

2. Практична частина

2.1 Архітектура програми

2.2 Опис програми

2.3 Контрольний приклад та результат машинного експерименту

Висновок

Список використано літератури

Додатки


Вступ

Центральним поняттям програмування є, безперечно, поняття алгоритму. З нього починається робота над програмою і від якості алгоритму залежить її успішне створення. Тому вміння програмувати в значній мірі означає розробляти хороші алгоритми застосовувати вже відомі.

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

Для реалізації поставленої задачі вибрано середовище Turbo Pascal. Алгоритмічна мова Паскаль була створена Н.Віртом на початку 70-х років. Завдяки зусиллям розробників ця мова програмування стала потужним інструментом професійних програмістів‚ не втративши простоти і ясності, властивих цій мові від народження.

Розробник системи Turbo Pascal - фірма Borland International виникла в 1984 році і за порівняно короткий час неодноразово дивувала користувачів персональних ЕОМ своїми Turbo системами. Було випущено кілька версій Turbo Pascal: 3.0‚ 4.0 5.0‚ 5.5‚ 6.0‚ 7.0‚ Pascal for Windows, Borland Pascal.

Головн особливості середовища Turbo Pascal:

широкий спектр типів даних‚ можливість обробки рядкових та структурних типів даних;

достатній набір операторів управління розгалуженнями та циклами;

добре розвинутий апарат підпрограм та зручні конструкції роботи з

 файлами;

велик можливості управління усіма ресурсами ПЕОМ;

різноманітн варіанти стикування з мовою Асемблера;

підтримка дей об'єктно-орієнтованого програмування (ООП).

Саме з огляду на ці особливості програмна реалізація курсового проекту було здійснено в середовищі Turbo Pascal.

Курсовий проект складається зі вступу, двох розділів, висновків, списку використано літератури, графічної частини та додатків. Текст пояснювальної записки набрано та роздруковано з використанням текстового редактора Word. Графічна частина виконана з допомогою графічного редактора Visio.


1. Теоретична частина

 

1.1 Постановка задачі

Нехай дано систему п лінійних алгебраїчних рівнянь з п змінними

 (I=1.2…..n) (1)

Систему (1) можна записати у вигляді одного матричного рівняння

AX=B, (2)

де

матриця коефіцієнтів  (індекс і вказує рівняння, якому належить коефіцієнт, а індекс j – змінну, при якій він стоїть),

 ,

відповідно стовпець вільних членів і стовпець змінних.

Упорядкована сукупність п чисел , яка, будучи підставленою в систему (1) замість , перетворює всі рівняння в правильні числові рівності, називається розв’язком системи (1)


Методи розв’язування систем лінійних рівнянь можна поділити на дві групи: точні й тераційні.

Точними називають такі методи, які дають змогу знайти точний розв’язок системи (1) за допомогою виконання скінченої кількості арифметичних операцій у припущенні, що всі обчислення виконуються точно (без округлень), а коефіцієнти системи вільні члени – точні числа. Але на практиці всі обчислення виконуються з обмеженою кількістю десяткових розрядів, а ірраціональні коефіцієнти і вільн члени, якщо такі є, замінюються раціональними числами. Тому в процес обчислення вдаються до округлень, а це означає, що розв’язки, які обчислюються за точними методами, фактично є наближеними числами з певними похибками (похибками округлень). До точних належать метод Гаусса, метод квадратних коренів, правило Крамера, сюди ж належить метод Жордана-Гаусса.

Інтераційними називають такі методи, які дають змогу знайти наближений розв’язок системи (1) з заздалегідь вказаною точністю шляхом виконання скінченої кількост арифметичних операцій, хоч самі обчислення можуть проводитись і без округлень, а коефіцієнти і вільні члени системи бути точними числами.

У процесі вивчення різних питань економіки, природознавства, техніки тощо доводиться розв’язувати системи алгебраїчних рівнянь. Зокрема, до таких систем зводиться чисельне розв’язування лінійних, диференціальних та інтегральних рівнянь. У таких системає коефіцієнти і вільні члени рівнянь – числа наближені. А це веде до появи додаткових (так званих неусуваних) похибок.

Якщо систему рівнянь у пам’яті машини записати навіть точно, то в процес розв’язування ЕОМ обов’язково виникнуть похибки округлень, які не можуть не вплинути на точність розв’язку. Проте, якщо матриця А системи (2) майже вираджена то можна сподіватися, що малі зміни в коефіцієнтах і (або) вільних членах також призведуть до значних змін у її розв’язку.

Якщо малі збурення коефіцієнтів і (або) вільних членів системи (1) дуже збурюють розв’язок, то таку систему рівнянь називають погано обумовленою. Наприклад, якщо малі збурення коефіцієнтів і (або) вільних членів системи (1) мало збурюють її розв’язок, то таку систему називають добре обумовленою. Прикладом погано обумовленої є, наприклад, система вигляду:

 (3)

розв’язком якої є пара (1;0). Якщо число 6,1 у правій частині першого рівняння системи (3) змінити на 0,02, то система

матиме розв’язком пару (5,1;-7,35). Отже, мале збурення (меньше 0,33%) одного з вільних членів системи (3) зовсім змінило розв’язок системи.

На щастя, на практиці системи рівнянь, погано обумовлені, зустрічаються дуже рідко.

1.2 Методи розв’язування задачі

Метод Жордана-Гаусса був розроблений двома вченими Жорданом та Гаусом (ві яких пішла назва методу). Цей метод вони помітили після довгої практики роботи з системами рівнянь. Це можна пояснити складністю розв’язку цим методом.

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

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

Проводити ці зміни в системі вдається за формулою обчислення двомірного визначника

шляхом вибору із системи певних елементів для обчислення визначника. Кількість обчислень таких визначників при розв’язуванні певної системи дорівнює:

де n розмірність квадратної матриці (або кількість невідомих квадратної матриці).

 


1.3 Алгоритм розв’язку задачі

Розглянемо систему m лінійних рівнянь з n невідомими. Для методу Жордана-Гауса її зручно зобразити у вигляді такої таблиці:

Нехай потрібно виразити змінну з і-го рфвняння системи, а потім потрібно підставити отриманий вираз в усі інші рівняння системи. Таке перетворення системи називають кроком Жорданових виключень з основним елементом .

Так перетворення зручно виконувати користуючись таблицею (1), яка перейде в іншц таблицю за слідуючими правилами:

Ус вільні елементи реально заданої системи лінійних алгебраїчних рівнянь, тобто стовпець замінюють на протилежні;

Основний елемент  замінюють на одиницю. Над основним стовпчиком записують , а біля рядка ;

Інш елементи основного стовпчика j залишають без змін;

Інш елементи основного рядка і-го змінюють лише свої знаки;

Елементи, які не належать розв’язуючому рядку або стовпчику обчислюють наступним чином. Створюється двовимірний визначник, який складається з таких елементів попередньої таблиці:

а) елемента з цими ж індексами, що й в обчислювальному елементі;

б) основний елемент;

в) елемент, який є спільним для стовпця з елементом (а) і стовпця з елементом (б);

г) елемент, який є спільним для стовпця з елементом (б) і рядка з елементом (а).

Шуканий елемент обчислюється як добуток елементів (а) та (б) мінус добуток залишившихся елементів визначника.

Цю дію можна зобразити у вигляді формули:

Вс елементинової таблиці ділять на елемент . Тим самим створюють ще одну таблицю, але вже без стовпця з елементом , а рядок з елементом позначають так, як позначили вилучений стовпець.

Виконавши всі описані операції новостворена таблиця матиме вигляд:

Шукаючи невідомі системи лінійних алгебраїчних рівнянь продовжують виконувати операції 2...6, причому основним елементом вже не можна вибрати елемент jI рядка, в якому вже був при попередніх Жорданових виключеннях використаний елемент. Операції 2...6 продовжують мати, поки усі позначення рядків не будуть замінені позначеннями стовпців, тобто поки всі стовпці крім -го не будуть вилучені.

Шуканими елементами будуть елементи, які залишаться після всіх обчислень в рядках навпроти нових позначень даних рядків. Оскільки нові позначення рядків відповідають відповідним невідомим та елементи навпроти, будуть відповідати розв’язкам заданої системи. З обчислення випливає, що шукані невідом опиняються в стовпці під позначенням стовпця вільних елементів.

З даного методу обчислення помітно, що для розв’язку система повинна мати одинакову кількість рядків і невідомих, бо в протилежному випадку невідомі буде важко чи навіть неможливо знайти (коли невідових більше чим рядків) даним методом.

Розв’язуючи систему вручну методом Жордана-Гауса, основним елементом зручно вибирати число на яке найменьше ділити і, зрозуміло, що неможливо вибирати 0. для полегшення розв’язку при обчисленні кожен рядок зокрема можна скорочувати.

Оскільки комп’ютер не має логічного мислення, то йому важко задати вибирати зручніший елемент. Тому йому в програмі можна задати, щоб він вибрав перший можливий елемент для основного елемента.


2. Практична частина

 

2.1 Архітектура програми

Реалізацію обчислення систем лінійних рівнянь з однаковою кількістю стовпців і невідомих методом Жордана-Гауса здійснює програма Kursova.pas.

Запустити дану програму можна наступними способами:

з головного меню середовища Turbo Pascal шляхом вибору опції Run/Run (спочатку програму потрібно завантажити в оперативну пам’ять);

з середовища Turbo Pascal нажиманням комбінації клавіш Ctrl F9;

з середовища операційної оболонки Norton Commander шляхом запуску прграми Kursova.exe (попередньо програма повинна бути відкомпільована з опцією Destination to memory).

Програма Kursova.pas є продурноорієнтованою. До неї входять 7 наступних процедур:

ramka;

 windo;

wikno;

wind;

vvidn;

obchuslennya.

Зробимо опис названих процедур:

Процедура Ramka призначена для виводу рамки в кожному, описаному у наступних процедурах вікні процедура виводить рамку у вигляді двох ліній. Біля верхнього лівого краю на верхній грані процедура виводить на екран 3 символи “[<]”. Процедура виконується для кращого оформлення вікна. Виклик цієї процедури здійснюється із наступних процедур.

Процедура Windo призначена для загального оформлення використовуваних у програмі вікон. Вона викликається із наступних процедур разом із вхідними, для даної процедури даними. Вхідні дані задають розміри виводжуваного вікна, основний та даний кольори, а також назву вікна.

Процедура Wikno. Призначення – виводить на екранвікно меню даної програми, та вікно опису даних про автора програми та дату створення даної програми. У вікні “Меню процедура виводить на екран запрошення для натискання однієї із чотирьох клавіш F1-F4 та ESC відповідно при натисканні яких програма виводить вікно вводу розмірності матриці, вікно вводу елементів, вікно виводу результатів та здійснює вихід із програми. Процедура Wikno використовується процедурою Wind та з головного блоку програми.

Процедура Wind. Використовується для виводу на екран робочих вікон та вікон опису програми. Параметри виводу робочих вікон задаються при кожному виклику ц процедури, параметри вікон опису програми є стандартними і описані вони у процедурі Wikno, яка викликається процедурою Wind. Розміри робочих вікон виводяться залежно від кількості вхідних чи вихідних даних. Процедура виконується при вводі розмірності системи, вводу елементів, та виводу результатів.

Процедура Widn викликається при натисканні клавіші F1. Вона виводить вікно вводу розмірності квідратної системи лінійних рівнянь. В разі введення розмірност більше 20-ти програма виведе повідомлення “Розмірність повинна бути не більше 20-ти”. Це означає, що дана програма не розв’яже систему з кількістю невідомих більше 20.

Процедура Vvid призначена для вводу елементів системи та її вільних елементів. Процедура виводить на екран вікно з розмірами, які залежать від кількості вводжуваних даних. Коли потрібно розв’язати систему з кількістю невідомих більше 4, виводиться вікно на 20 ввідних елементів (стільки ж скільки містить всіх елементів 4-х мірна система рівнянь). При заповненні вікна здійснюється перехід до наступного ж які попереднє вікно і так доти поки не будуть введені вс елементи. Дана процедура викликається із головного блоку програми при натисканні клавіші F2.

Процедура Obchuslennya обчислює невідомі на основі остатньо введених даних. Обчислення виконуються за методом Жордана-Гауса. Невідомі виводяться у спеціальному вікні, розміри якого розраховуються так, щоб помістились всі невідомі. Всі результати виводяться послідовно в стовпчику зверху вниз з такою ж послідовністю як розміщені невідомі в кожному рядку розвязуючої системи в напрямку зліва на право. У випадку, коли обчислювана система рівнянь не має розв’язків програма виводить вікно “Повідомлення” з повідомленням “Система не має розв’язків”.

Головний блок програми, при входженні в програму, виводить на екран вікно “Меню” із запрошенням натиснути одну з 4-х клавіш: F1, F2, F3, Esc та вікно “Про автора”. Для загального опису даних про створення пргграми. В подальшій роботі крім цих вікон на екран виводяться вікна, які залежать від поточної роботи з програмою.

При натисканні однієї з 4-х даних клавіш активізується відповідна процедура. При натисканні клавіші ESC закінчується роюота програми і здійснюється повернення в середовище системи програмування Turbo Pascal.

2.2 Опис програми

На початку програми міститься вступний коментар до програми. Інші оператори мають наступне призначення:

Заголовок програми

Підключення зовнішнього модуля управління дисплеєм (Crt)

Опис константи (m), якій присвоюється число 21, для обмеження розмірност обчислювальних рівнянь

Надання змінній m_1 типу двомірного масиву дійсних чисел з обмеженням m*m

Надання змінній m_2 типу одномірного масиву дійсних чисел з обмеженням m

Надання змінній m_3типу одномірного масиву цілих чисел з обмеженням m

Опис, використаної у головному блоці програми мітки m1

008 - 011 Опис використовуваних у програмі масивів та змінних

Заголовок процедури Ramka

Початок процедури

Перехід у позицію з координатами (х1, y1) і вивід у цих позиціях символа “&%239556;”, як верхнього лівого кута рамки

Цикл виводу символів “&%239552;”, для обмеження рамки зверху

Вивід символа “&%239559;”, як верхнього правого кута рамки

017 - 020 Цикл виводу символа “&%239553;” для обмеження рамки з боків

Прехід у позицію з координатами (x1,y2) і вивід символа “&%239562;” (нижній лівий кут рамки)

Цикл виводу символа “&%239552;”для обмеження рамки знизу

Вивід символа “&%239565;” (правого нижнього кутка рамки)

Вивід у позицію (x1 3,y1) символів “[<]”

Закінчення процедури Ramka

Заголовок процедури Windo та опис вхідних даних

Початок процедури

028 - 029 Встановлення основного та фонного кольору

Опис вікна з параметрами, які задаються при виклику процедури Windo

Очистка екрану

Виклик процедури Ramka із вхідними для неї розмірами:2,1,x2-x1,y2-y1 1

033 - 034 Опис виводу на верхній грані рамки аосередині назви вікна

Закінчення процедури

Заголовок процедури Wikno

Початок процедури

Задання кольору фону та основного кольору

039 - 042 Цикл виводу по всій величині екрану пропусків

043 - 047 Виклик процедури Windo із заданнням назви вікна “Меню” та вихід у вікн головного меню

048 053 Виклик процедури Windo із заданням інших координат виводячого вікна та задання назви вікна “Про автора” а також вивід у цьому вікні відомостей про автора

Кінець прцедури Vikno

Заголовок процедури Wind та опис вхідних даних

Початок процедури

Виклик процедури Vikno

Виклик процедури Windo

Закінчення процедури Wind

Заголовок процедури Vvidn

Початок процедури

Виклик процедури Wind із заданням назви виводячого вікна “Ввід розмірності квадратно матриці”.

063 - 064 Ввід розмірності

065 - 069 Перевірка умови чи часом не введена розмірність більша за 20, якщо так то виводиться на екран повідомлення “Розмірність повинна бути не більшою за 20”

Кінець процедури Vvidn

Заголовок процедури Vid

Опис використаної у процедурі Vvidn мітки (m8)

Початок процедури

Присвоєння змінній k введеної розмірності системи

075 - 076 Перевірка умови чи k>4 якщо так то змінній k присвоюється 4, що буде використане для обмеження розмірності вікна.

077 - 079 Присвоєння змінній позиціонування курсора та змінній організац початкових значень циклів початкового значення j

080 Виклик процедури Window із вхідними параметрами та назвою виводячого вікна Ввід елементів”

081 - 082 Початок циклів нумерації ввідних елементів

083 - 086 Перехід у позицію з координатами (3,t 1) та вивід на екран “Елемент а[i,j]=” або “вільний елемент [i,j]=” залежно від поточного вводу елемента та очікування вводу цього елемента

087 Перевірка умови чи вікно вводу повністю заповнене, якщо так то початок складного оператора

088 089 Присвоєння змінній позиціонування курсора та змінній початку циклу по рядках відповідно значень 1 і значення початкового номера рядка

090 094 Перевірка чи остатньовведене число є елементом чи вільним членом. Якщо елементом, то змінній початку циклу по стовпцях присвоюється номер наступного стовпця. Якщо вільний елемент то змінній h стає одиницею, змінна початку циклу по рядкає дорівнює номеру наступного стовпця, якщо вільний елемент то змінна h стає одиницею.

095         Очистка заповненого елементами вікна.

096         Передача на мітку M8

097         Закінчення складного оператора

098-102 Перевірка чи в поточне вікно ще вмітиться наступний елемент: якщо так, то змінна переміщування курсора збільшується на одиницю, а змінній h і z присвоюється початкове значення один.

103         Закінчення циклу вводу елементів

104         Закінчення процедури Vvid

105         Заголовок процедури Obchuslennia

106         Опис використаних у процедурі міток

107         Початок процедури

108         Присвоєння змінній j номера стовпця вільних елементів

109-110 Цикл заміни вільних елементів на протилежні

111-112 Обнуління змінної t, яка буде використовуватись для обчислення в цикл кількості виконуваних стовпців та присвоєння змінній e розмірності розв’язуючо системи

113-114 Цикл обнуління масиву E, який буде використовуватись для запам’ятовування кількості зсувів вліво кожного стовпця після кожного наступного викидування стопця.

115         Початок циклу обчислення невідомих

116         Обнуління змінної I

117-118 Перевірка чи I дорівнює кількості рядків системи. Якщо так то перехід на мітку.

119         Присвоєння нуля змінні j

120-123 Перевірка чи з даного перевіряючогорядка, вже був використаний елемент для основного елемента чи ні. Якщо так, то перехід на мітку m4

124         Надання змінній j нульового значення

125         Збільшення змінної j на одиницю

126         Перевірка умови: чи дійшли до останнього рядка, чи перевіряючий елемент стоїть перед вільним елементом даного рядка і чи даний елемент дорівнює нулю. Якщо все так то перехід на мітку m6

127         Перевірка умов: чи перевіряючий елемент є передостатнім в рядку I чи наний елемент дорівнює нулю, якщо так то перехід на мітку m2

128-132 Якщо перевіряючий елемент дорівнює нулю то перехід на мітку m5 запам’ятовування індексів даного перевіряю чого елементу

133         Присвоєння змінній k остатнього перевіряю чого елементу

134-135 Початок циклів по стовпцю і рядку для обчислення елементів залишившиїся системи після попередніх обчислень.

136-137 Перевірка умови: чи обчислювальний елемент не стоїть в рядку або стовпці до якого належить основний елемент. Якщо умова виконується то поточний елемент обчислюється за правилом обчислення двомірного визначника і результат запам’ятовується в інший масив

138-139 Якщо обчислювальний елемент стоїть в рядку де є останьо обраний основний елемент але не є основним елементом то обчислювальний елемент запам’ятовується в масив В з протилежним знаком

140         Закінчення циклу обчислення елементів

141-142 Початок циклу по викиданню стовпця з основним елементом

143-144 Якщо індекс стовпця менший за цей же індекс останнього елемента то в масив А буде записане число, яке одержується шляхом ділення елемента з масиву В з цими ж індексами на основний елемент

145-148 якщо індекс стовпця більший або рівний цьому ж індексу основного елемента то в масив А запам’ятовується число отримане шляхом ділення наступного елемента поточного рядка з масиву В на основний елемент

149         Закінчення циклу викидання стовпця

150         Збільшення змінної t на одиницю

151         Запам’ятовування в масив С з яких рядків уже були використані елементи для основного елемента

152         Запам’ятовування в масив D навпроти кожного рядка остаточний результат якій змінній ма відповідати

153-158 Цикл запам’ятовування кількості зсувів вліво після кожного наступного викидування стовпця

159         Зменшення змінної z на одиницю

160         закінчення циклу обчислення невідомих

161         присвоєння змінній z одиниці

162-165 Цикл впорядкування результатів

166         Присвоєння змінній t нуля

167         Виклик процедури Wind і надання розмірів та заголовку вікна, яке виводиться цією процедурою

168-171 Цикл виводу результатів

172         Перехід на мітку m7

173         Виклик процедури Wind і задання заголовку

174         Перехід у позицію (10,3) і вивід повідомлення “Система немає розв’язку”

175         Очікування натискання клавіші на клавіатурі

176         Закінчення процедури Obchusennja

177         Початок головного блоку програми

178         Виклик процедури Vikno

179         Очікування натискання однієї з ф-них клавіш: F1, F2, F3 або ESC

180         Заголовок оператора вибору, який аналізує код натиснутої клавіші

181         Якщо нажато клавішу F1 то здійснюється виклик процедури Widn

182         Якщо нажато клавішу F2, викликається процедура Vvid

183         Якщо нажато клавішу F3 виклик процедури Obchuslenja

184         Кли нажато ESC – вихід з програми

185         Закінчення оператору вибору

186         Прехід на мітку m1

187         Кінець програми

2.3 Контрольний приклад та результат машинного експерименту

Найбільш відповідальною, найбільш трудомісткою і з найбільшими витратами часу випробовування (створення програм та усунення помилок. Не можна бути впевненим, що програма працює правильно коли вона виводить якісь результати. Найчастіше ц результати перші) бувають помилковими. Це означає, що багато помилок. Тому для перевірки правильності програми необхідно розробити тестові дані з наперед визначеними (обчисленими) результатами. Тестові дані повинні бути розроблен так, щоб перевірити всі оператори програми без виключення.

Для перевірки на правильність даної програми розроблені наступні тести:

Тест 1.

Система з трьома невідомими

Результати:

Порівнявши результати обчислені вручну до тестових даних і результати обчислені за допомогою програми Kursova.pas, фкі подані у додатку бачимо що все співпадає, тому можна стверджувати, що програма дає правильні результати і саме не містить помилок. Однак остаточним висновок про правильність програми можна зробити тільки після тривалої експлуатації.


Висновок

Розв’язування математичних задач за допомогою персональних комп’ютерів має велике значення, оскільки кожен розв’язок є оперативним та точним. Обчислюючи математичну задачу за допомогою сучасного комп’ютера, зрозуміло, що ймовірність помилкового введення даних в пам’ять ПК є набагато більшою чим ймовірність помилкового обчислення комп’ютером, чим тут практично можна знехтувати. Тоді що вже можна говорити про порівняня ручного обчислення і машинного. Тому надзвичайно важливо самостійно складати програми для виникаючих задач, які потрібно часто рішати. Звичайно головним в написанні програми є правильність її складання, оскільки правильність результатів обчислення найперш залежить від правильності програми.

В даній курсовій роботі складено програму по обчисленню різних систем рівнянь з квадратною матрицею. Дану програму розроблено в середовищі Turbo Pascal. Ї налагоджено з використанням різноманітних тестових даних. Прикладом для перевірки роботоздатності програми було розроблено вручну тест. Результати обчислення вручну та за допомогою комп’ютера повністю співпали. Тому можна вважати цей програмний продукт готовим для практичного застосування.


Список використано літератури

Turbo pascal(учебник) / С.А. Немнюгин – СПБ: Издательство “Питер”, 2000.

М.Я. Ляшенко, М.С. Головань. Чисельні методи. К.:”Либідь”, 1996 – 285 с.

Математика для техникумов Алгебра и начала анализа.


Додаток 1

(***********************************************************)

(* програма по розвязуванню *)

(* систем лiнiйних рiвнянь *)

(* методом Жордана-Гауса,написана до курсового проекту. *)

(* Програму склав Добромильський Iван *)

(************************************************************)

001 program metod_Zhordana_Hausa;

002 uses crt;

003 const m!;

004 type m_1=array[1..m,1..m] of real;

005 m_2=array[1..m] of real;

006 m_3=array[1..m] of integer;

007 label m1;

008 var A,B:m_1; X:m_2; C,D,E:m_3;

009 R:real;

010 i,j,k,t,l,z,h,n,p:integer;

011 s:char;

(* Процедура виводу рамки *)

012 procedure ramka(x1,y1,x2,y2:integer);

013 begin

014 gotoxy(x1,y1);write('Й');

015 for i:=1 to x2-x1-1 do write('Н');

016 write('»');

017 for i:=1 to y2-y1-1 do begin

018 gotoxy(x2,y1 i);write('є');

019 gotoxy(x1,y1 i);write('є');

020 end;

021 gotoxy(x1,y2);write('И');

022 for i:=1 to x2-x1-1 do write('Н');

023 write('ј');

024 gotoxy(x1 3,y1);write('[ю]');

025 end;

(* Процедура опису вiкна *)

026 procedure windo(x1,y1,x2,y2:integer;Nazva:string);

027 begin

028 TextColor(15);

029 TextBackGround(1);

030 Window(x1,y1,x2,y2);

031 clrscr;

032 ramka(2,1,x2-x1,y2-y1 1);

033 l:=x2-x1 1-length(nazva);

034 gotoxy((l div 2) 3,1);write(Nazva);

035 end;

(* Процедура виводу загального опису *)

036 procedure vikno;

037 begin

038 TextBackGround(15);TextColor(1);

039 for i:=1 to 80 do

040 for j:=1 to 25 do begin

041 gotoxy(i,j);write(' ');

042 end;

043 windo(50,2,75,7,' Меню ');

044 gotoxy(3,2);write('F1-Ввiд розмiрностi');

045 gotoxy(3,3);write('F2-Ввiд даних');

046 gotoxy(3,4);write('F3-Вивiд результатiв');

047 gotoxy(3,5);write('ESC-Вихiд');

048 windo(50,10,78,16,' Про автора ');

049 gotoxy(3,2);write('Програма курсово» роботи.');

050 gotoxy(3,3);write('Складена студентом групи');

051 gotoxy(3,4);write('39-П Добромильським I.');

052 gotoxy(3,5);write('Дата складення програми');

053 gotoxy(3,6);write('травень 2003р');

054 end;

(* Процедура виводу вiкна *)

055 procedure wind(x1,y1,x2,y2:integer;Nazva:string);

056 begin

057 vikno;

058 windo(x1,y1,x2,y2,nazva);

059 end;

(* Пороцедуга вводу розмiрностi квадратно» матрицi *)

060 procedure vvidn;

061 begin

062 wind(2,2,47,5,'=Ввiд розмiрностi квадратно» матрицi');

063 gotoxy(3,2); write('n=');

064 readln(n);

065 if n>=m then begin

066 wind(2,2,40,6,'Повiдомлeння');

067 gotoxy(4,3);writeln('Розмiрнiсть повинна не бiльша ',m-1,'');

068 S:= readkey;

069 end;

070 end;

(* Процедура вводу елементiв *)

071 procedure vvid;

072 label m8;

073 begin

074 k:=n;

075 if k>4 then

076 k:=4;

077 t:=1;

078 z:=1;

079 h:=1;

080 m8:wind(2,2,35,k*k k 3,'Ввiд елементiв');

081 for i:=z to n do

082 for j:=h to n 1 do begin

082 gotoxy(3,t 1);

084 if j<=n then write ('Елемент a[',i,j,']=')

085 else write ('Вiльний елемент a[',i,j,']=');

086 readln(A[i,j]);

087 if t>19 then begin

088 t:=1;

089 z:=i;

090 if j<(n 1) then h:=j 1

091 else begin

092 z:=i 1;

193 h:=1;

194 end;

195 clrscr;

196 goto m8;

197 end;

198 if t<_ then begin

199 t:=t 1;

100 z:=1;

101 h:=1;

102 end;

103 end;

104 end;

(* Процедура обчислення невiдомих *)

105 procedure obchuslennja;

106 label m2,m3,m4,m5,m6,m7;

107 begin

108 j:=n 1;

109 for i:=1 to n do

110 A[i,j]:=-A[i,j];

111 t:=0;

112 l:=n;

113 for i:=1 to l 1 do

114 E[i]:=0;

115 for p:=1 to n do begin

116 i:=0;

117 m2:if i=n then goto m6

118 else i:=i 1;

119 j:=0;

120 m3:if j=t then goto m4

121 else j:=j 1;

122 if i=C[j] then goto m2

123 else goto m3;

124 m4:j:=0;

125 m5:j:=j 1;

126 if(i=n)and(j=l)and(A[i,j]=0) then goto m6;

127 if (j=l)and(A[i,j]=0) then goto m2;

128 if A[i,j]=0 then goto m5

129 else begin

130 k:=i;

131 h:=j;

132 end;

133 R:=A[k,h];

134 for i:=1 to n do

135 for j:=1 to l 1 do begin

136 if(i<>k)and(j<>h) then

137 B[i,j]:=R*A[i,j]-A[i,h]*A[k,j];

138 if (i=k)and(j<>h) then

139 B[i,j]:=-A[i,j];

140 End;

141 for i:=1 to n do

142 for j:=1 to l do begin

143 if j<h then

144 A[i,j]:=B[i,j]/R;

145 if j>=h then begin

146 z:=j 1;

147 A[i,j]:=B[i,z]/R;

148 end;

149 end;

150 t:=t 1;

151 C[t]:=k;

152 D[k]:=E[h] h;

153 for i:=1 to l 1 do begin

154 if i>h then begin

155 z:=i-1;

156 E[z]:=E[i] 1;

157 end;

158 end;

159 l:=l-1;

160 END;

161 z:=1;

162 for i:=1 to n do begin

163 j:=D[i];

164 X[i]:=A[j,z];

165 end;

166 t:=0;

167 wind(2,2,45,n 3,'Результати');

168 for i:=1 to n do begin

169 gotoxy(5,i 1);writeln('x[',i,']=',X[i]:8:3);

170 t:=t 1;

171 end;

172 goto m7;

173 m6:wind(2,2,45,6,'Повiдомлення');

174 gotoxy(10,3); write('Система не ма№ розвязкiв');

175 m7: s:=readkey;

176 end;

(* Головний блок програми *)

177 BEGIN

178 m1:vikno;

179 s:=readkey;

180 case s of

181 %2359:vvidn;

182 %2360:vvid;

183 %2361: obchuslennja;

184 %2327:halt;

185 end;

186 goto m1;

187 END.

Додаток 4

Екранна форма виводу результатів обчислення


Результати

Скачать Курсовая работа: Метод Жордана Гаусса

Курсовая работа: Метод Жордана Гаусса">Скачать Курсовая работа: Метод Жордана Гаусса одним архивом

Просмотров: 479 | Добавил: kroker77 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Календарь
«  Январь 2012  »
Пн Вт Ср Чт Пт Сб Вс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Друзья сайта