Курсовая работа по предмету "Программирование, компьютеры и кибернетика, ИТ технологии"


Метод Крамера



Зміст

Вступ

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

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

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

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

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

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

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

Висновки

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

Додатки

Вступ

Обчислювальну техніку останніми роками широко застосовують у всіх сферах діяльності людини. Вона стала каталізатором науково-технічного прогресу. Бурхливий розвиток ЕОМ сприяв широкому процесу математизації науки, техніки і господарства в цілому. Саме розробка і застосування математичних методів розвязування прикладних задач на базі ЕОМ є предметом сучасної математики.

Математика - одна з найдавніших наук - виникла з практичних потреб людини. Розвиток математики сприяв загальному науково-технічному прогресу цивілізації, а потреби природознавства, техніки і практичної діяльності людей становили перед математикою нові задачі і стимулювали її розвиток.

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

Завдання на курсовий проект передбачає розробку програмного забезпечення для розвязку задачі математичного характеру. Для її реалізації я вибрав мову Turbo Pascal 7.0.

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

Розробником ціїє мови був швейцарський вчений Ніклаус Вірт, який створив Паскал ще в 70-х роках. Турбо Паскаль фірми Borland являється розширенням стандарта Мови і має також інтегроване середовище, яке набагато прискорює і полегшує процес розробки програм. Цей прграмний продукт пройшов через 6 версій, після чого і появився Турбо Паскаль 7.0.

Головні особливості мови Turbo Pascal:

Широкий спектр даних.

Можливість обробки стрічкових та структурних даних.

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

Добре розвинутий апарат підпрограм.

Зручні конструкції роботи з файлами.

Великі можливості керування всіма ресурсами компютера.

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

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

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

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

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

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

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

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

AX=B, (2)

де

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

,

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

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

то вона має єдиний розвязок. Його можна обчислити за формулами Крамера.

(k=1,2,…,n),

де матрицю дістають з матриці А, замінивши її k-й стовпець стовпцем вільних членів.

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

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

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

В завданні на курсовий проект передбачено розробку програмного забезпечення для розвязування системи лінійних рівнянь за формулами Крамера.

Програма повинна забезпечувати виконання таких операцій:

ввід коефіцієнтів системи рівнянь та вільних членів;

обчислення визначників системи та знаходження розвязків системи;

вивід систем рівнянь та її розвязків на екран.

Для реалізації поставленого завдання в середовищі Turbo Pascal 7.0 розроблено програму KRAMER.PAS. Перелічені вище операції реалізуються в програмі за допомогою процедур.

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

Розглянемо систему трьох лінійних рівнянь з трьома невідомими:

(1)

Систему (1) можна також записати так:

, і=1, 2, 3.

Тут - деякі задані числа, а x, y, z - невідомі, які потрібно знайти.

Як нам вже відомо, тройка чисел називаються рішенням системи (1), якщо при підстановці їх в рівняння системи замість x, y і z вийдуть вірні числові рівності.

Розглянемо спочатку випадок, коли всі коефіцієнти рівнянь системи (1) рівні нулю:

і=1, 2, 3.

В цьому випадку, якщо всі вільні члени рівнянь системи рівні нулю:

,

то очевидно, люба тройка чисел (x; y; z) являється розвязком цієї системи. Якщо ж вільні члени рівнянь рівні нулю, то система не має рішень.

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

Останнє рівняння цієї системи помножимо на і вилучаємо почленно із першого рівняння, в результаті получимо рівняння

. (2)

Аналогічно, помножив останнє рівняння на і вилучаючи почленно із другого рівняння будемо мати

. (3)

Очевидно, що система

(4)

у якої перше рівняння виходить із (2), а друге із (3) множенням на, еквівалентна системі (1).

Таким чином, якщо 0, то дослідження системи (1) зводиться до дослідження системи двох лінійних рівнянь з двома невідомими:

(5)

Розглянемо спочатку випадок, коли всі коефіцієнти рівнянь системи (5) дорівнюють нулю. Тоді, якщо вільні члени рівнянь системи (5) рівні нулю, то люба пара чисел (x;y) являється рішенням системи (5) і, отже, люба трійка чисел (x;y;z), де

,

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

Розглянемо випадок, коли не всі коефіцієнти рівнянь системи (5) рівні нулю. Нехай, наприклад,

Перше рівняння системи (5) помножимо на , друге - на - і додамо; після очевидних перетворень отримаємо рівняння

де

Таким чином, якщо , то система (5) еквівалентна системі

Якщо , то очевидно, люба пара чисел (x;y), де

, (6)

являється рішенням системи (5).

Із (6) і останнього рівняння системи (4) знаходимо

(7)

Аналогічно, якщо і , то люба трійка чисел (x;y;z), де , а y та z знаходяться в формулах (6) і (7), являється рішенням системи (1).

Якщо , а , то система (5), а також і система (1) не мають розвязків.

Нехай тепер . Тоді

.

Підставивши це значення х в друге рівняння системи (5), знайдемо

,

де

Підставивши отримані значення x і y в третє рівняння системи (4), отримаємо

,

де

.

Випливає, якщо , то система (1) має одне рішення, яке знаходиться за формулами:

.

Ці формули і називаються формулами Крамера.

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

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

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

Для зменшення обсягу тіла програми використовується модуль zast.tpu (лістінг модуля додається до проекту), в якому знаходяться всі головні компоненти, які використовують процедури (інтерфейси, описи тощо).

Перед описом процедур здійснюється опис міток (розділ міток) і змінних (розділ змінних). Потім (після опису процедур) іде розділ операторів (тіло програми), що заключається в операторні дужки, тобто Begin…End. В ньому вказується послідовність дій, що повинні використовуватись ЕОМ.

Запуск програми здійснюється таким чином:

Спосіб. З середовища будь-якої операційної оболонки шляхом запуску Kramer.exe (попередньо програма має бути відкомпільована з опцією Destination Memory).

Спосіб. З головного меню інтегрованого середовища Turbo Pascal шляхом вибору опції Run (програма попередньо повинна бути завантажена в ОП - File, Open, Kramer.pas).

Після запуску програми будь-яким методом вона видасть на екран головне меню, яке пропонує одну із опцій:

Про програму

Ввід коефіцієнтів

Результати

Вихід

При виборі певного пункту активізується відповідна процедура. Завершення роботи програми і повернення в середовище системи програмування Turbo Pascal здійснюється при виборі пункту меню “Вихід”. Програма здійснює обчислення системи рівнянь методом Крамера та виводить результати на екран дисплею.

В програмі використовуються такі процедури:

Vvid - призначена для вводу значень.

Vyvid - призначена для обчислень та виводу результатів.

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

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

підключення зовнішніх модулів

опис міток

{004}-{007} опис змінних

{008} заголовок процедури vvid

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

відключення графічного режиму

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

встановлення кольору шрифта

вивід таблиці вводу

{014}-{025} ввід лівої і правої частини рівняння в відповідні клітинки

кінець процедури vvid

заголовок процедури vivid

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

відключення графічного режиму

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

встановлення кольору

вивід таблиці виводу

обчислення дельта для рівняння

обчислення дельта ікс

обчислення дельта ігрик

обчислення дельта зет

обчислення ікс

обчислення ігрика

обчислення зет

вивід дельта

вивід дельта ікс

вивід дельта ігрик

вивід дельта зет

вивід ікса

вивід ігрика

вивід зет

порожній ввід

кінець процедури vivid

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

встановлення мітки pt

присвоєння змінній rob 1

підключення графічного режиму оператором ini

вивід меню оператором zas

поки змінна q не буде дорівнювати *

якщо натиснута будь-яка клавіша то виконуються наступні дії

читання натиснутої клавіші і присвоєння їй змінній q

початок циклу по розпізнані натиснутої клавіші

стрілочка “вниз” то якщо rob>4 тоді rob=1,якщо rob<4 тоді rob=rob+1

стрілочка “вверх” то якщо rob>1 тоді rob=rob-1,якщо rob<1 тоді rob=4

клавіша “Ентер” тоді: розпізнання змінної rob якщо rob=1 то на екран з модуля zas виводиться процедура about, яка виводить інформацію про програму, а також здійснюється перехід на мітку pt

якщо змінна rob=2 тоді то на екран з модуля zas виводиться процедура vvid в якій описуються всі змінні для процедури vvid програми, а також вивід рамки для вводу змінних. Перехід на мітку pt

якщо змінна rob=3 тоді то на екран з модуля zas виводиться процедура vyvid в якій описуються всі змінні для процедури vyviid програми, а також вивід рамки для вводу змінних. Перехід на мітку pt

якщо змінна rob=3 то здійснюється вихід в систему

кінець розпізнаня змінної rob

кінець циклу визначення натиснутої клавіші

цикл якщо rob дорівнює

1 тоді очистка екрану і виконаня процедури punkt1

2 тоді очистка екрану і виконаня процедури punkt2

3 тоді очистка екрану і виконаня процедури punkt3

4 тоді очистка екрану і виконаня процедури punkt4

кінець циклу “якщо rob дорівнює”

кінець циклу “якщо натиснута клавіша”

кінець циклу “поки q не буде дорівнювати *”

кінець головного блоку програми

Опис модуля zas.tpu

Інтерфейсна секція модуля

unit zast;

{$n+}

interface

procedure ini;

procedure about;

procedure clear;

procedure punkt1;

procedure punkt2;

procedure punkt3;

procedure punkt4;

procedure vivyd;

procedure vid;

procedure zas;

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

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

Процедура clear повертає пункти меню в початковий вигляд.

Процедури punkt1, punkt2, punct3, punct4 маркірують відповідно пункти меню у другий колір для вигляду переходу курсору по пунктам меню.

Процедури vvid та vyvid забезпечують вивід рамок для вводу та виводу даних в програму/з прорами.

Процедура zas виводить малюнок головного меню.

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

Випробування будь-якої системи є найбільш відповідальний та повязаний з найбільшими труднощами і найбільшими втратами часу.

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

Отже задача: Розвязати систему лінійних рівнянь з трьома невідомими за допомогою формул Крамера

Знайдемо

Так, як 0, то система має одне рішення.

Тепер знайдемо

Підставивши знайдені визначники в формули Крамера будемо мати:

Висновки

Зваживши на велику вартість готових формових пакетів, надзвичайно важливо вміти самостійно складати програми для розязку окремих типів задач, хоча створення програмного забезпечення зараз являється не областю для програмістів - одинаків, а високотехнічною структурою. Більшість комерційних програмних продуктів являються дуже складними витворами та створені колективами, в які часто входять десятки висококваліфікованих програмістів. Значно більше людей в фірмах - розробниках програмного забезпечення зайнятих організацією продажу, маркетингом, курєрством, консультаційним обслуговуванням покупців і т.д. Найбільш відомою є фірма Microsoft, яка займається розробкою програмного забезпечення як для користувацьких програм так і для апаратного програмування.

В даному курсовому проекті розроблено та описано програму отримання результатів розвязку системи лінійних рівнянь методом Крамера. Програма відладжена з використанням набору текстових даних. Контрольний приклад розроблений вручну для перевірки роботоздатності програми та результат машинного експерименту повністю співпали. Тому можна використовувати дану програму на практиці.

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

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

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

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

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

Додаток 1

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

(* *)

(* Програма: KRAMER *)

(* *)

(* Автор: Фiлоненко Сеpгiй *)

(* Copyrigth (c) 2003, S.Filonenko *)

(* Дата створення: беpезень 2003 *)

(* *)

(* Використовуванi процедури i функцii: *)

(* vvid *)

(* vyvid *)

(* *)

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

program kramer;

uses graph,crt,dos,zast;

label pt;

var rob:integer;

x1,x2,x3,x4,x5,x6,x7,x8,x9,a,b,c:integer;

d,dx,dy,dz,x,y,z:real;

q:char;

procedure vvid;

begin

closegraph;

clrscr;

textcolor(lightblue);

vid;

gotoxy(9,2); readln (x1);

gotoxy(26,2); readln(x2);

gotoxy(42,2); readln(x3);

gotoxy(57,2); readln(a);

gotoxy(9,4); readln(x4);

gotoxy(26,4); readln(x5);

gotoxy(42,4); readln(x6);

gotoxy(57,4); readln(b);

gotoxy(9,6); readln(x7);

gotoxy(26,6); readln(x8);

gotoxy(42,6); readln(x9);

gotoxy(57,6); readln(c);

end;

procedure vyvid;

begin

closegraph;

clrscr;

textcolor(yellow);

vivyd;

d:=x1*x5*x9+x2*x6*x7+x4*x8*x3-x3*x5*x7-x2*x4*x9-x8*x6*x1;

dx:=a*x5*x9+x2*x6*c+b*x8*x3-x3*x5*c-x2*b*x9-x8*x6*a;

dy:=x1*b*x9+a*x6*x7+x4*c*x3-x3*b*x7-a*x4*x9-c*x6*x1;

dz:=x1*x5*c+x2*b*x7+x4*x8*a-a*x5*x7-x2*x4*c-x8*b*x1;

x:=dx/d;

y:=dy/d;

z:=dz/d;

gotoxy(9,2); writeln (d);

gotoxy(9,4); writeln(dx);

gotoxy(9,6); writeln(dy);

gotoxy(9,8); writeln(dz);

gotoxy(9,10); writeln(x);

gotoxy(9,12); writeln(y);

gotoxy(9,14); writeln(z);

readln;

end;

begin

pt:

rob:=1;

ini;

zas;

while q<>* do begin

if keypressed then begin

q:=readkey;

case q of

#80: begin if rob>4 then rob:=1;if rob<4 then rob:=rob+1;end;

#72: begin if rob>1 then rob:=rob-1;if rob<1 then rob:=4; end;

#13: begin if rob=1 then begin about;goto pt;end;

if rob=2 then begin vvid; goto pt; end;

if rob=3 then begin vyvid; goto pt; end;

if rob=4 then halt;

end;

end;

case rob of

1:begin clear;punkt1;end;

2:begin clear;punkt2;end;

3:begin clear;punkt3;end;

4:begin clear;punkt4;end;

end;

end;

end;

end.

Додаток 2

D

1.6000000000E+01

DX

3.2000000000E+01

DY

4.8000000000E+01

DZ

1.6000000000E+01

X

2.0000000000E+00

Y

3.0000000000E+00

Z

1.0000000000E+00




Не сдавайте скачаную работу преподавателю!
Данную курсовую работу Вы можете использовать для написания своего курсового проекта.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем курсовую работу самостоятельно:
! Как писать курсовую работу Практические советы по написанию семестровых и курсовых работ.
! Схема написания курсовой Из каких частей состоит курсовик. С чего начать и как правильно закончить работу.
! Формулировка проблемы Описываем цель курсовой, что анализируем, разрабатываем, какого результата хотим добиться.
! План курсовой работы Нумерованным списком описывается порядок и структура будующей работы.
! Введение курсовой работы Что пишется в введении, какой объем вводной части?
! Задачи курсовой работы Правильно начинать любую работу с постановки задач, описания того что необходимо сделать.
! Источники информации Какими источниками следует пользоваться. Почему не стоит доверять бесплатно скачанным работа.
! Заключение курсовой работы Подведение итогов проведенных мероприятий, достигнута ли цель, решена ли проблема.
! Оригинальность текстов Каким образом можно повысить оригинальность текстов чтобы пройти проверку антиплагиатом.
! Оформление курсовика Требования и методические рекомендации по оформлению работы по ГОСТ.

Читайте также:
Разновидности курсовых Какие курсовые бывают в чем их особенности и принципиальные отличия.
Отличие курсового проекта от работы Чем принципиально отличается по структуре и подходу разработка курсового проекта.
Типичные недостатки На что чаще всего обращают внимание преподаватели и какие ошибки допускают студенты.
Защита курсовой работы Как подготовиться к защите курсовой работы и как ее провести.
Доклад на защиту Как подготовить доклад чтобы он был не скучным, интересным и информативным для преподавателя.
Оценка курсовой работы Каким образом преподаватели оценивают качества подготовленного курсовика.

Сейчас смотрят :

Курсовая работа Разработка стратегического плана предприятия
Курсовая работа Проектно–конструкторская документация на семейство моделей женской зимней одежды для серийного производства в условиях промышленных предприятий
Курсовая работа Социальная защита пожилых людей
Курсовая работа Состав и структура оборотного капитала предприятия
Курсовая работа Разработка и совершенствование организационной структуры предприятия на примере ООО "Автолайн"
Курсовая работа Состояние и перспективы развития делового туризма для инострацев в Ростовской области
Курсовая работа Анализ кадровой политики организации
Курсовая работа Управление человеческими ресурсами
Курсовая работа Статистическое изучение заработной платы
Курсовая работа Физическое воспитание детей дошкольного возраста
Курсовая работа Учет и анализ основных средств и нематериальных активов
Курсовая работа Проблема дисграфии у детей и ее коррекция
Курсовая работа Пути увеличения капитала коммерческого банка
Курсовая работа Судебная власть в Российской Федерации
Курсовая работа Бизнес-план пекарни