1.1 Розробка методу виконання основного завдання

Проміжок який перетинає функція, вводим через [a; b]. «eps» похибка розв’язку.

Записуєм з клавіатури проміжок та похибку. Користуючись рекурентною формулою складаєм процедуру уточнення кореня методом хорд. Якщо f(x) двічі неперервно диференційна функція і знак fnk2 (x) зберігається на розглядуваному відрізку, то отримані наближення будуть сходитись до кореня монотонно. Якщо корінь x рівняння f(x)=0 знаходяться на відрізку [a; b], виробничі fnk(x) і fnk2 (x) на цьому відрізку неперервні і зберігають постійні знаки і fnk(a)*fnk2 (a)>0, то можна доказати, що похибка наближеного розв’язку прямує до нуля n->∞, то метод сходиться і має при цьому лінійну швидкість схожості. (Подібне до швидкості геометричної прогресії). Обчислюємо значення f(x) в середині відрізка [a; b], тобто в точці x1=x-fnk(x)/fnk1 (x). Залежно від значення f (x-fnk(x)/fnk1 (x)) вибираємо ту частину інтервалу [a; b], де знаки функції f(x) є різними. Отже, інтервал, у якому є корінь, змінився. Продовживши процес, ми звужуємо інтервал до такої величини, поки його розмір (який дорівнює абсолютній похибці) не стане меншим від потрібної нам величини.

1.2 Структура даних і функцій

Моя програма складається з 6 модулів і головної функції main(). Характеристика кожного з модулів:

Основний, файл KURSAK.cpp в ньому знаходиться послідовність дій програми, тобто в даному модулі програма викликає інші під модулі які виконуюсь якусь функцію:

MODULE.cpp

HORD.cpp

SHOW.cpp

TITULKA.cpp

GRAFIK.cpp

AUTOR.cpp

Програма спочатку запускає електронну титульну сторінку курсової роботи, потім будує графік функції, корені якої нам потрібно знайти, використовуючи метод хорд знаходить корінь на вказаному з клавіатури проміжку з вказаною точністю, демонструє метод дихотомії графічно та зрештою виводить головне меню на екран. Всі ці дії, крім виводу головного меню на екран, виконуються лише запуском відповідних функцій з додаткових модулів. Крім того, функція void main() ініціалізує графічний режим, підключаючи BGI драйвер EGAVGA.BGI.

У головному модулі оголошено такі локальні змінні: int k=0 – для збереження пункту головного меню, яке обирає користувач, int gdriver = DETECT, gmode, errorcode – додаткові змінні для ініціалізації графічного режиму.

Тепер перейдемо до додаткових модулів.

Модуль TUTYLKA.CPP містить лише одну функцію що виводить на екран електронну титульну сторінку розробника курсової роботи. Оголошено такі локальні змінні: int a=5 – значення відступів від краю екрану до рамки, xmax=getmaxx(), ymax=getmaxy() – значення роздільної здатності екрану у

int i; – лічильник циклу;

float x1, x2, y1, y2, xx1, xx2, yy1, yy2; – містять координати точок на площині.

Модуль HORD.CPP містить дві функції: double f (double x) – обчислення значення вказаної в завданні функції для певного значення х, void Hord () – реалізація чисельного методу знаходження кореня рівняння на вказаному проміжку з вказаною точністю. Оголошено такі локальні змінні:

FILE *fp1,*fp2; – вказівники на файли, що містять проміжні результати обчислень;

int k=0; – лічильник ітерацій;

double a, b, c, epsilon; – межі проміжку, середина проміжку та точність.

Модуль Show.CPP містить одну функцію void Show (), що графічно демонструє роботу функції void Hord (). Оголошено такі локальні змінні:

int xmax=getmaxx(), ymax=getmaxy(); – значення роздільної здатності екрану у графічному режимі;

float x, a, b; – значення кореня рівняння та межі проміжку;

int i = 7; – кількість знаків після коми, які виводить функція gcvt();

char *buf; – допоміжна змінна для роботи функції gcvt().


2. Опис структури програмного проекту

Як зазначалося вище, наш проект складається з 6 додаткових модулів, та основного модуля, в якому міститься головна функція main() нашого проекту. Додаткові модулі не зв’язані один з одним, а лише з головним модулем.

Єдиним зв’язком (неявним) між модулями Hord.cpp та Show.cpp є спільне використання файлів KORENI.TXT та MEGI.TXT.

Загальна схема проекту із способами взаємодії між модулями наведена на рисунку 2.1.

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


3. Опис алгоритмів розв’язання задачі

Опишемо алгоритм роботи усіх функцій усіх модулів нашого проекту. Почнемо з основного KURSAK.CPP. Містить функцію void main().

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

Тепер перейдемо до додаткових модулів. Модуль tytulka.cpp містить лише одну функцію void tytulka(), що виводить на екран електронну титульну сторінку розробника курсової роботи. Алгоритм роботи дуже простий, такій як і void avtor(): очистка екрану -> задання кольору -> отримання розмірів екрану -> замальовування екрану вибраним кольором -> задання кольору та стилю тексту -> вивід тексту на екран.

Модуль grafik.cpp містить функцію void grafik(), що будує Декартову систему координат та графік функції на ній. Алгоритм роботи теж подібний до алгоритму функції void avtor(), але є додатково цикл обчислення значення функції.

Модуль HORD.CPP містить дві функції: double f (double x) – обчислення значення вказаної в завданні функції для певного значення х, void Hord() – реалізація чисельного методу знаходження кореня рівняння на вказаному проміжку з вказаною точністю. Проміжні результати виконання записуються у файли KORENI.TXT та MEGI.TXT.

Алгоритм наступний:

ввід інтервалу (a; b) та потрібної точності (D)

якщо fnk(a)*fnk2 (a)>0 то x=a

інакше x=b

і=0

початок циклу

x1=x-fnk(x)/fnk1 (x)

i++

n=100

якщо

i>=n

то кількість ітерацій більше за «n»

Вихід.

Якщо ні, то

х= x1=x-fnk(x)/fnk1 (x)

вивід на екран результатів

і запис необхідних результатів у файли:

«KORENI.TXT», «MEGI.TXT».

Модуль Show.cpp містить одну функцію void Show(), що графічно демонструє роботу функції void Hord (), використовуючи проміжні результати виконання, що записані у файли KORENI.TXT та MEGI.TXT. Алгоритм роботи дуже простий і подібний до алгоритму функцій void avtor() та void tytulka().

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



Информация о работе «Розробка математичної програми в середовищі С++»
Раздел: Информатика, программирование
Количество знаков с пробелами: 20085
Количество таблиц: 0
Количество изображений: 10

Похожие работы

Скачать
122376
7
10

... Хлопчики 9 8 Дівчинки 4 5 Середній вік 1,8 1,7 Середній рівень (М ± m) активності основних психомоторних функцій 14 ± 2 14 ± 3 Для реабілітації дітей була розроблена програма, яка включає додатковий догляд за дитиною, масажні вправи, комплексні гімнастичні заходи, а також додаткові заняття на розвиток уваги та рухливості. Комплекс гімнастичних та масажних вправ наведено в додатку А. ...

Скачать
155152
18
31

... і над плановим. Відомо, що собівартість є одним з головних джерел резервів підвищення ефективності роботи підприємства. Звідси сформуємо мету і задачі даної роботи. Метою даної роботи є підвищення ефективності роботи підприємства ВАТ «Дніпрополімермаш» шляхом управління собівартістю продукції. Відповідно, для досягнення поставленої мети необхідно вирішити наступні задачі: 1.   Проаналізувати ...

Скачать
162243
21
52

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

Скачать
38056
3
14

... його. Наприклад, вводимо назву виробу, норму витрат та кількість виробів – і перевіряємо обчислену потребу матеріалу. Програма цієї курсової роботи з дисципліни «Системне програмування та операційні системи» призначена для перевірки тестового контролю знань. Кожне запитання тесту може мати кілька варіантів відповідей: 1. Набір програмних модулів, які дозволяють керувати машиною? операційна ...

0 комментариев


Наверх