Розробка програмного забезпечення для пошуку коренів біквадратні рівняння

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Введення

1 Постановка завдання

2 Математичні та алгоритмічні основи рішення задачі

3 Програмна реалізація рішення задачі

4 Приклад виконання програми

Висновок

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

Введення

У ті далекі часи, коли мудреці вперше стали замислюватися про равенствах містять невідомі величини, напевно, ще не було ні монет, ні гаманців. Але зате були купи, а також горщики, кошики, які чудово підходили на роль схованок-сховищ, що вміщають невідома кількість предметів. "Шукається купа, яка разом з двома третинами її, половиною і однієї сьомої становить 37 ...", - повчав в II тисячолітті до нової ери єгипетський переписувач Рінда. У древніх математичних задачах Межиріччя, Індії, Китаю, Греції невідомі величини виражали число павичів в саду, кількість биків у стаді, сукупність речей, що враховуються при розподілі майна. Добре навчені науці рахунку писарі, чиновники і посвячені в таємні знання жерці досить успішно справлялися з такими завданнями. Дійшли до нас джерела свідчать, що стародавні вчені володіли якимись загальними прийомами розв'язання задач з невідомими величинами. Проте ні в одному папірусі, ні в одній глиняній табличці не дано опису цих прийомів. Автори лише зрідка постачали свої числові викладки скупими коментарями на кшталт: "Дивись!", "Роби так!", "Ти правильно знайшов". У цьому сенсі винятком є "Арифметика" грецького математика Діофанта Олександрійського (III ст.) - Збори завдань на складання рівнянь із систематичним викладом їх рішень. Однак першим керівництвом щодо вирішення завдань, котрі здобули широку популярність, стала праця багдадського вченого IX ст. Мухаммеда бен Муси аль-Хорезмі. Слово "аль-джебр" з арабської назви цього трактату - "Кітаб аль-джебер валь-мукабала" ("Книга про відновлення і протиставленні") - з часом перетворилося на добре знайоме всім слово "алгебра", а сам твір аль-Хорезмі послужило відправною точкою в становленні науки про рішення рівнянь. Алгебраїчне рівняння четвертого ступеня.

,

де a, b, c - деякі дійсні числа, називається біквадратні рівнянням. Заміною рівняння зводиться до квадратного рівняння з наступним рішенням двох двочленних рівнянь і ( і - Коріння відповідного квадратного рівняння).

Якщо і , То біквадратні рівняння має чотири різних корені:

,

.

Якщо , то біквадратні рівняння має два різних корені і уявних сполучених кореня:

.

Якщо і , То біквадратні рівняння має чотири чисто уявних попарно сполучених кореня:

Випадок , аналогічний розібраною.

,

Метою даної курсової роботи є розробка програмного забезпечення для пошуку коренів біквадратні рівняння.

1. Постановка завдання

Біквадратні називається рівняння виду ax 4 + bx 2 + c = 0, де a   0. Біквадратні рівняння вирішується методом введення нової змінної: поклавши x 2 = y, прийдемо до квадратного рівняння ay 2 + by + c = 0.

Потрібно розробити програмне забезпечення для пошуку коренів біквадратні рівняння.

Приклад 1.

Розв'язати рівняння

x 4 +4 x 2 -21 = 0.

Рішення:

Поклавши x 2 = y, одержимо квадратне рівняння y 2 +4 y -21 = 0, звідки знаходимо y 1 = -7, y 2 = 3.

Тепер завдання зводиться до рішення рівнянь x 2 = -7, x 2 = 3. Перше рівняння не має дійсних коренів, з другого знаходимо

,

які є корінням заданого біквадратні рівняння..

Відповідь: .

Приклад 2.

Вирішити біквадратні рівняння.

4 - 5х 2 +2 = 0

Рішення:

Позначимо х 2 = t. Тоді х 4 = (х 2) 2 = t 2 і рівняння прийме вигляд:

2t 2-5t +2 = 0

D = (-5) 2 - 4 (2) (2) = 25 - 16 = 9> 0,

t 1 = (5 +3) / 4 = 2 і t 2 = (5 - 3) / 4 = 1 / 2.

Так як t = x 2, то коріння вихідного рівняння знайдемо в результаті рішення рівнянь

х 1 = 2 і х 2 = 1 / 2.

Маємо

Відповідь:

2. Математичні та алгоритмічні основи рішення задачі

Розглянемо біквадратні рівняння

ax 4 + bx 2 + c = 0.

Введемо підстановку

y = x 2.

Отримаємо квадратне рівняння загального вигляду

ay 2 + by + c = 0.

Таким чином, для вирішення біквадратні рівняння необхідно пам'ятати, що воно звелося до системи двох рівнянь другого ступеня:

y = x 2

ay 2 + by + c = 0.

Вирішимо квадратне рівняння відносно змінної "y". Отримаємо три можливі варіанти рішень:

дискримінант від'ємний: рівняння не має дійсних рішень;

дискримінант НЕ негативний і дорівнює нулю: рівняння має один дворазовий корінь;

дискримінант НЕ негативний і дорівнює нулю: рівняння має два різних кореня.

У першому випадку, коли дискримінант квадратного рівняння від'ємний, система не має рішення, тому що одне з вхідних в неї рівнянь, а саме квадратне рівняння ay 2 + by + c = 0, не має рішення.

Останні два випадки відповідають невід'ємне дискримінант квадратного рівняння. Квадратне рівняння має дійсні рішення. Однак, зверніть увагу на той факт, що перше рівняння системи ax 2 = y має сенс тільки при значеннях y> = 0. Тому, якщо обидва кореня квадратного рівняння ay 2 + by + c = 0 негативні, система рівнянь так само не має рішення. Крім того, якщо хоча б один з коренів квадратного рівняння ay 2 + by + c = 0 негативний, система рівнянь буде мати тільки два дійсних рішення.

І тільки в тому випадку, коли обидва кореня квадратного рівняння ненегативні, система рівнянь має чотири дійсних рішення. Дамо тепер словесний опис алгоритму.

Словесний опис алгоритму розв'язання задачі:

Ввести a, b, c.

Присвоїти d = b 2 - 4ac

Якщо d <0 перейти до 15

Присвоїти y1 = (-b - SQRT (d)) / (2 * a)

Присвоїти y2 = (-b + SQRT (d)) / (2 * a)

Якщо y1 <0 і y2 <0 перейти до 15

Якщо y1 <0 і y2> = 0 перейти до 9

Якщо y1> = 0 і y2 <0 перейти до 13

Присвоїти x1 = SQRT (y2)

Присвоїти x2 =-x1

Видати "x1 ="; x1, "x2 ="; x2

Перейти до 16

Присвоїти y2 = y1

Перейти до 9

Видати "Дійсних рішень немає"

Закінчити

3. Програмна реалізація рішення задачі

Файл UBikvur. H

//------------------------------------------------ ---------------------------

# Ifndef UBikvurH

# Define UBikvurH

//------------------------------------------------ ---------------------------

# Include <Classes.hpp>

# Include <Controls.hpp>

# Include <StdCtrls.hpp>

# Include <Forms.hpp>

# Include "HandTuning.h"

# Include <ExtCtrls.hpp>

# Include <Menus.hpp>

//------------------------------------------------ ---------------------------

class TfrmBikvur: public TForm

{__published: / / IDE-managed Components

THandTuning * htA;

THandTuning * htB;

THandTuning * htC;

TButton * btnCalc;

TListBox * lbxX;

TLabel * Label1;

TLabel * Label2;

TButton * btnExit;

TButton * btnClear;

TMainMenu * MainMenu1;

TMenuItem * N1;

TMenuItem * N2;

TMenuItem * N3;

TMenuItem * N4;

TMenuItem * N5;

TLabel * Label3;

TLabel * Label4;

TLabel * Label5;

void __fastcall btnCalcClick (TObject * Sender);

void __fastcall btnExitClick (TObject * Sender);

void __fastcall btnClearClick (TObject * Sender);

private: / / User declarations

list <double> __fastcall Bikvur (double a, double b, double c);

public: / / User declarations

__fastcall TfrmBikvur (TComponent * Owner);};

//------------------------------------------------ ---------------------------

extern PACKAGE TfrmBikvur * frmBikvur;

//------------------------------------------------ ---------------------------

# Endif

Файл UBikvur.cpp

//------------------------------------------------ ---------------------------

# Include <vcl.h>

# Include <math.h>

# Include <list.h>

# Pragma hdrstop

# Include "UBikvur.h"

//------------------------------------------------ ---------------------------

# Pragma package (smart_init)

# Pragma link "HandTuning"

# Pragma resource "*. dfm"

TfrmBikvur * frmBikvur;

//------------------------------------------------ ---------------------------

list <double> __fastcall TfrmBikvur:: Bikvur (double a, double b, double c)

{Double y1, y2;

list <double> x;

/ / Обчислення d дискриминанта

double d = b * b - 4 * a * c;

/ / Коріння існують, якщо d> = 0

if (d> = 0)

{Y1 = (-b - sqrt (d)) / 2 * a;

y2 = (-b + sqrt (d)) / 2 * a;}

if (d <0 | | (y1 <0 & & y2 <0))

{Application-> MessageBoxA (L "Дійсних коренів немає", L "Інформація", MB_OK + MB_ICONINFORMATION);

return x;}

/ / Обчислення коренів біквадратні рівняння

else

{If (y1> = 0 & & y2> = 0)

{X.push_back (sqrt (y1));

x.push_back (-sqrt (y1));

x.push_back (sqrt (y2));

x.push_back (-sqrt (y2));}

else

{If (y1 <0 & & y2> = 0)

{X.push_back (sqrt (y2));

x.push_back (-sqrt (y2));}

else

{X.push_back (sqrt (y1));

x.push_back (-sqrt (y1 ));}}}

return x;}

//------------------------------------------------ ---------------------------

__fastcall TfrmBikvur:: TfrmBikvur (TComponent * Owner)

: TForm (Owner)

{}

//------------------------------------------------ ---------------------------

void __fastcall TfrmBikvur:: btnCalcClick (TObject * Sender)

{LbxX-> Clear ();

list <double> res = Bikvur (htA-> Value, htB-> Value, htC-> Value);

int i = 1;

while (! res.empty ())

{LbxX-> Items-> Add ("x" + IntToStr (i) + "=" + FormatFloat ("0.000", res.front ()));

res.pop_front ();

i ++;}}

//------------------------------------------------ ---------------------------

void __fastcall TfrmBikvur:: btnExitClick (TObject * Sender)

{This-> Close ();}

//------------------------------------------------ ---------------------------

void __fastcall TfrmBikvur:: btnClearClick (TObject * Sender)

{HtA-> Value = 0;

htB-> Value = 0;

htC-> Value = 0;

lbxX -> Clear ();}

//------------------------------------------------ ---------------------------

4. Приклад виконання програми

Приклад 1.

Малюнок 1 - Рішення біквадратні рівняння

Приклад 2.

Малюнок 2 - Рішення біквадратні рівняння

Приклад 3.

Рисунок 3 - Рішення біквадратні рівняння

Приклад 4.

Малюнок 4 - Рішення біквадратні рівняння

Приклад 5.

Малюнок 5 - Рішення біквадратні рівняння

Приклад 6.

Малюнок 6 - Очищення з пункту меню

Приклад 7.

Малюнок 7 - Вихід з програми

Висновок

У рамках даної курсової роботи була поставлена ​​задача: побудувати алгоритм і реалізувати програмний продукт для знаходження коренів біквадратні рівняння.

В результаті проектування був складений принциповий алгоритм для вирішення поставленого завдання. Далі він був деталізована і реалізований на ЕОМ. В кінці, був проведений аналіз отриманих результатів, і зроблені необхідні висновки.

Програмний продукт був реалізований у середовищі візуального програмування CodeGear RadStudio 2009 під ОС типу Windows для IBM PC-сумісних комп'ютерів.

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

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

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

  1. Архангельський, А.Я. Програмування в С + + Builder 6. [Текст] / А. Я. Архангельський. - М.: Біном, 2003. С. 1154.

  2. Ахо, А.. Побудова та аналіз обчислювальних алгоритмів [Електронний ресурс] / А. Ахо, Дж. Хопкрофта, Дж.. Ульман. - М.: Мир. 1999. С. 143.

  3. Бронштейн, І.М. Довідник з математики для інженерів і учнів втузів [Текст] / І.М. Бронштейн, К.А. Семендяев. - М.: Наука, 2007. - 708 с.

  4. Кремер, Н.Ш. Вища математика для економістів: підручник для студентів вузів. [Текст] / Н. Ш. Кремер, 3-е видання - М.: ЮНИТИ-ДАНА, 2006. C. 412.

  5. Каліткін, М.М. Чисельні методи. [Електронний ресурс] / М.М. Каліткін. - М.: Питер, 2001. С. 504.

  6. Біквадратні рівняння [Електронний ресурс] - Режим доступу: http: / / fio. Ifmo. Ru / archive / group 34 / c 4 wu 2 / pege 3-2. Htm

  7. Павловська, Т.А. Програмування на мові високого рівня. [Текст] / Т.А. Павловська. - М.: Питер, 2003. С. 461.

  8. Семакін, І.Г. Основи програмування. [Текст] / І. Г. Семакін, А. П. Шестаков. - М.: Світ, 2006. C. 346.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
52.1кб. | скачати


Схожі роботи:
Розробка бази даних і прикладного програмного забезпечення для автобусного парку
Розробка програмного забезпечення для розр та дисперсійної характеристики планарного хвилеводу
Розробка програмного забезпечення для реалізації арифметичних операцій над комплексними числами
Розробка програмного забезпечення для вирішення рівнянь з однією змінною методом Ньютона дотичних
Проект програмного модуля для знаходження кореня рівняння
Розробка програмного забезпечення
Розробка інтернет магазину з продажу програмного забезпечення
Розробка програмного забезпечення з автоматизації навчального процесу в коледжі
Аналіз прикладного програмного забезпечення що для розробки бізнесплан
© Усі права захищені
написати до нас