РефератыИнформатика, программированиеРаРазработка программного обеспечения для нахождения корней биквадратного уравнения

Разработка программного обеспечения для нахождения корней биквадратного уравнения

Содержание


Введение


1 Постановка задачи


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


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


4 Пример выполнения программы


Заключение


Список использованных источников и литературы


Введение


В те далекие времена,
когда мудрецы впервые стали задумываться о равенствах содержащих неизвестные
величины, наверное, еще не было ни монет, ни кошельков. Но зато были кучи, а
также горшки, корзины, которые прекрасно подходили на роль тайников-хранилищ,
вмещающих неизвестное количество предметов. "Ищется куча, которая вместе с
двумя третями ее, половиной и одной седьмой составляет 37...", - поучал во
II тысячелетии до новой эры египетский
писец Ахмес. В древних математических задачах Междуречья, Индии, Китая, Греции
неизвестные величины выражали число павлинов в саду, количество быков в стаде,
совокупность вещей, учитываемых при разделе имущества. Хорошо обученные науке
счета писцы, чиновники и посвященные в тайные знания жрецы довольно успешно справлялись
с такими задачами. Дошедшие до нас источники свидетельствуют, что древние
ученые владели какими-то общими приемами решения задач с неизвестными
величинами. Однако ни в одном папирусе, ни в одной глиняной табличке не дано
описания этих приемов. Авторы лишь изредка снабжали свои числовые выкладки
скупыми комментариями типа: "Смотри!", "Делай так!",
"Ты правильно нашел". В этом смысле исключением является
"Арифметика" греческого математика Диофанта Александрийского (III в.) – собрание задач на составление
уравнений с систематическим изложением их решений. Однако первым руководством
по решению задач, получившим широкую известность, стал труд багдадского ученого
IX в. Мухаммеда бен Мусы аль-Хорезми.
Слово "аль-джебр" из арабского названия этого трактата – "Китаб
аль-джебер валь-мукабала" ("Книга о восстановлении и
противопоставлении") – со временем превратилось в хорошо знакомое всем
слово "алгебра", а само сочинение аль-Хорезми послужило отправной
точкой в становлении науки о решении уравнений. Алгебраическое уравнение четвертой степени.


,


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


Если
 и , то биквадратное уравнение имеет
четыре действительных корня:


,


.


Если
,  то биквадратное уравнение имеет
два действительных корня  и
мнимых сопряженных корня:


.


Если
 и , то биквадратное уравнение имеет
четыре чисто мнимых попарно сопряженных корня:


Случай ,  аналогичен разобранному.


,



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


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


Биквадратным называется уравнение вида ax4+bx2+c=0,
где a 0. Биквадратное уравнение решается методом введения новой
переменной: положив x2 = y, придем к квадратному уравнению ay2+by+c=0.


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


Пример 1.


Решить уравнение


x4+4x2-21=0.


Решение:


Положив x2 = y,
получим квадратное уравнение y2+4y -21=0, откуда находим y1=
-7, y2=3.


Теперь задача сводится к
решению уравнений x2= -7, x2=3. Первое уравнение не имеет
действительных корней, из второго находим


,


которые являются корнями
заданного биквадратного уравнения..


Ответ: .


Пример
2.


Решить
биквадратное уравнение.


2х4
– 5х2+2=0


Решение:


Обозначим
х2=t. Тогда х4=(х2)2=t2
и уравнение примет вид:


2t2–5t+2=0


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


t1=(5+3)
/ 4=2 и t2=(5 – 3) / 4=1 / 2.


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


х1=2
и х2=1/2.


Имеем


Ответ:


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


Рассмотрим биквадратное
уравнение


ax4 + bx2
+ c = 0.


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


y = x2.


Получим квадратное
уравнение общего вида


ay2 + by + c =
0.


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


y = x2


ay2 + by + c =
0.


Решим квадратное
уравнение относительно переменной "y". Получим три возможных варианта
решений:


дискриминант отрицателен:
уравнение не имеет действительных решений;


дискриминант не
отрицателен и равен нулю: уравнение имеет один двукратный корень;


дискриминант не
отрицателен и равен нулю: уравнение имеет два различных корня.


В первом случае, когда
дискриминант квадратного уравнения отрицателен, система не имеет решения, так
как одно из входящих в нее уравнений, а именно квадратное уравнение ay2
+ by + c = 0, не имеет решения.


Последние два случая
соответствуют неотрицательному дискриминанту квадратного уравнения. Квадратное
уравнение имеет действительные решения. Однако, обратите внимание на тот факт,
что первое уравнение системы ax2 = y имеет смысл только при
значениях y>=0. Поэтому, если оба корня квадратного уравнения ay2
+by +c = 0 отрицательны, система уравнений так же не имеет решения. Кроме того,
если хотя бы один из корней квадратного уравнения ay2 +by +c = 0
отрицательный, система уравнений будет иметь только два действительных решения.


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


Словесное описание
алгоритма решения задачи:


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


Присвоить d = b2
- 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/group34/c4wu2/pege3-2.htm


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


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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Разработка программного обеспечения для нахождения корней биквадратного уравнения

Слов:1456
Символов:16265
Размер:31.77 Кб.