Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет Львівська політехніка
Кафедра ПЗ
До лабораторної роботи № 1
З курсу “Чисельні методи”
На тему:
“ Розв’язування нелінійних рівнянь ”.
Тема:
Розв’язування нелінійних рівнянь.
Мета:
Оволодіти засобами розв’язування нелінійних рівнянь за допомогою різних методів .
Використовуючи засоби пакету Mathematika відокремити корені рівняння графічно та уточнити їх з точністю до 10-3 наступними методами:
- методом дихотомії;
- методом простих ітерацій;
- методом Ньютона.
Варіанти завдань:
В процесі розроблення лабораторної роботи було розроблено наступний програмний продукт:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//Описуэмо константи
#define A -20
#define B 20
#define E 0.001
double rivnjanna(double x);
double NevTon();
double Dyhotomiya();
double SimplIter();
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//функція повернення рівняння
double rivnjanna(double x)
{
return x*x*x+7*(x*x)+5*x-10;
}
//Беремо похыдну выд нашого рывняння
double pochidna(double x)
{
return 3*x*x+14*x+5;
}
//методо Ньютона
double NevTon()
{
double Result,x, temp;
x = B;
while(1)
{
if((temp = pochidna(x)) == 0)
{Result = x;}
else
{Result = x - rivnjanna(x) / pochidna(x);}
temp = rivnjanna(Result);
if(temp < E && temp > -E)
{break;}
x = Result;
}
return Result;
}
//Метод Дихотомії
double Dyhotomiya()
{
int i;
double Result,a = A, b = B;
while (b - a > E)
{
Result = (a + b)/2.0;
if(rivnjanna(b)*rivnjanna(Result)<0)
a=Result;
else
b=Result;
}
return Result;
}
//методом простих ітерацій
double SimplIter()
{
double Result,x, temp;
x = B;
while(1)
{
Result = x - 0.00025 * rivnjanna(x);;
temp = rivnjanna(Result);
if(temp < E && temp > -E)
{break;}
x = Result;
}
return Result;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Edit1->Text=NevTon();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
Edit2->Text=Dyhotomiya();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
Edit3->Text=SimplIter();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Висновок:
На цих лабораторній роботі я оволодів засобами розв’язування нелінійних рівнянь за допомогою різних методів .