Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач нормальный.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.45 Mб
Скачать

Канонічне рівняння прямої

 – називається канонічним рівнянням прямої, яка проходить через точку   паралельно до вектора  , який називається напрямним.

Канонічне рівняння прямої лінії в просторі

Назвемо напрямним вектором прямої   будь-який ненульовий вектор q, що паралельний до цієї прямої. Виведемо рівняння прямої, що проходить через задану точкуM0(x0,y0,z0)  і має напрямним вектором вектор  q=(l,m,n).  

Рис. 2. Геометрична інтерпретація прямої лінії в просторі,  що задається напрямним вектором

Нехай M(x,y,z)  – біжуча точка прямої L. Розглянемо вектор M0M(x –x0,y-y0,z-z0) .Вектори M0M та q – колінеарні, тобто їх компоненти пропорційні .                                      (1.2) Рівняння (1.2) називається канонічним рівнянням прямої в просторі. Зауважимо, що в рівнянні (1.2) одне або два з чисел L,m,n можуть дорівнювати нулю. Тоді напрямний вектор q, а, отже, і пряма L, будуть паралельними до координатних площин або координатних осей. Зведення загального рівняння прямої до канонічного вигляду (1.2)  Нехай пряма лінія   в просторі задана загальним рівнянням, тобто є перетином двох різних непаралельних площин .                                         (1.3) Отже, числа  , що є розв'язками системи (1.5), будуть координатами точки  , що належить прямій (1.3).

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

Рівняння прямої, що проходить через дві задані точки

 – рівняння прямої, що проходить через дві задані точки   і  . Це різновид канонічного рівняння прямої, коли  , а  .

Параметричні рівняння прямої

 - параметричні рівняння прямої, де параметр  . Ці рівняння одержують із канонічного рівняння прямої.

Розділ 2 метод хорд

Метод хорд — один з поширених ітераційних методів. Його ще називають методом лінійного інтерполювання, методом пропорційних частин, або методом хибного положення.

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

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

а б

в г

рис.1

Нехай для визначеності , , , (рис. 1, а). Візьмемо за початкове наближення шуканого кореня значення . Через

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

Для виведення формули методу хорд запишемо рівняння прямої, що проходить через точки і

:

.

Поклавши , знайдемо абсцису точки перетину хорди з віссю : .

Значення можна взяти за наступне наближення, тобто

, тобто = 0,1,2,... .

У цьому разі і тоді, коли , , , (рис. 1, б) кінець відрізка є нерухомим.

Якщо , , , (рис. 1, в), або , , , (рис. 1, г), аналогічно можна записати формулу:

, тобто = 0,1,2,... .

У цьому випадку точка є нерухомим кінцем відрізка .

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

Отже, метод хорд можна записати так:

, тобто = 0,1,2,.... (1)

де

З формули (1) видно, що метод хорд є методом ітерацій , в якому

(2)

Зауважимо, що рівняння

на відрізку рівносильне рівнянню .

Достатні умови збіжності методу хорд дає така теорема.

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

Доведення. Для доведення теореми досить показати, що в деякому околі кореня похідна функції (2) задовольняє умову для будь-яких .

Обчислимо

.

Поклавши і врахувавши, що , маємо

. (3)

Запишемо для в околі точки формулу Тейлора із залишковим членом у

формі Лагранжа:

,

де лежить між і .

Поклавши в ній , дістанемо , (4)

Із формули (3), враховуючи (4), знаходимо .

Оскільки і — неперервні на , то і буде неперервною на

функцією, тому .

Звідси і з неперервності випливає, що на відрізку існує окіл точки

такий, що для будь-якого . Тоді з теореми про достатні умови

методу ітерацій (Нехай рівняння має корінь і в деякому

околі цього кореня функція задовольняє умову

Ліпшиця , де ; тоді для будь-якого послідовність

,обчислена за формулою , збігається до кореня ,

причому швидкість збіжності характеризується нерівністю )

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

якщо початкове наближення . Теорему доведено.

Виведемо формулу, яка дає можливість оцінити абсолютну

похибку наближення через два послідовні наближення і .

Нехай — неперервна і зберігає на сталий знак, причому

, де , .

З формули дістаємо .

Звідси, враховуючи, що ,

маємо .

Застосувавши теорему Лагранжа, дістанемо ,

де лежить між точками і , а — між і . Далі запишемо:

або

Оскільки зберігає на сталий знак, то .

Тому (5)

Якщо на відрізку справедлива нерівність , то із (5) випливає

оцінка: .

Отже, корінь рівняння буде знайдено методом хорд із наперед

заданою точністю , якщо для двох послідовних наближень і

справджуватиметься нерівність .

Приклад 1. Відокремити корені рівняння аналітично і уточнити

один з них методом хорд з точністю до 0,01.

Розвязання. Маємо функцію .

Похідна ; .

Складемо таблицю знаків функції :

-1

0

-

-

+

+

Рівняння має один дійсний корінь, що лежить на проміжку

Щоб уточнити корінь, знаходимо другу похідну ;

на проміжку виконується нерівність .

Для обчислень використаємо формулу , де .

Результати обчислень розміщуємо в таблиці.

Відповідь. Приклад 2. Відокремити корені рівняння графічно і уточнити один з них методом хорд з точністю до 0,01.

Розв’язання.

Відокремимо корінь графічно. Побудуємо графіки функції і (рис.2), склавши таблицю значень цих функцій:

рис.2

Таким чином, додатний корінь рівняння знаходиться на проміжку

Щоб уточнити корінь методом хорд, визначимо знаки функції на кінцях відрізка і знак її другої похідної на цьому відрізку: ; ,

; ,

при .

Для обчислень застосуємо формулу

, де ; .

Відповідь:

Метод дотичних

Нехай рівняння f(x) = 0 на відрізку [a;b] має ізольований корінь x*, тобто f(a)f(b) < 0, а функції f(x) і f´(x) неперервні і зберігають знак на [a;b].

Нехай xk – k-е наближення кореня. Розкладемо f(x) в ряд Тейлора в околі точки xk

f(x) = f(xk) + f´(xk)(x-xk) + f´´(xk)(x-xk)2 + …

Замість рівняння f(x) = 0 розглядатимемо рівняння f(xk) + f´(xk)(x-xk) = 0, яке враховує тільки лінійну відносно x - xk частину ряду Тейлора.

Розв’язавши його відносно x, дістанемо .

Взявши знайдене значення x за наступне наближення, матимемо

xk+1 = xk - , k = 0, 1, 2, … . (1)

Формула (1) визначає метод Ньютона. Він має просту геометричну інтерпретацію. Значення xk+1 є абсцисою точки перетину дотичної

y–f(xk) = f´( xk)(x - xk) до кривої y = f(x) в точці (xk, f(xk)) (мал. 1). Тому метод Ньютона називають ще методом дотичних. З малюнка видно, що послідовні наближення збігаються до кореня x* монотонно.

Мал. 1 ілюструє такі випадки: а) f´´(x) > 0, f´(x) > 0; б) f´´(x) > 0, f´(x) < 0; в) f´´(x) < 0, f´(x) > 0; г) f´´(x) < 0, f´(x) < 0.

З а початкове наближення у методі Ньютона слід брати точку x0 [a;b], в якій f(x0)f´(x0) > 0.

Метод Ньютона є методом послідовних наближень xk+1 = φ(xk), де функція . (2)

Достатні умови збіжності методу Ньютона дає така теорема.

Теорема. Нехай на відрізку [a;b] функція f(x) має неперервні із сталими знаками похідні f´(x) ≠ 0, f´´(x) ≠ 0 і f(a)f(b) < 0. Тоді існує такий окіл R [a;b] кореня x* рівняння f(x) = 0, що для будь-якого x0 R послідовність {xk}, обчислена за формулою (1), збігається до кореня x* .

Доведення. Для доведення збіжності послідовності {xk} до кореня x* досить показати, що похідна φ´(x) функції (2) задовольняє умови 0 < | φ´(x)| ≤ q < 1 для будь-якого x R, і взяти х0 з околу R кореня x* .

Для похідної φ´(x) маємо вираз

φ´(x) = .

Оскільки f´´(x) неперервна і відмінна від нуля на [a;b], то існують такі додатні m1 і M2, що

|f´(x)| m1, |f´´(x)| ≤ M2 для будь-яких x [a;b].

Тоді | φ´(x)| ≤ .

З неперервності функції f(x) випливає, що існує окіл R кореня x* , в якому функція f(x) задовольняє нерівність

, 0 < q < 1.

Внаслідок чого | φ´(x)| ≤ q < 1 для всіх x R.

Таким чином, послідовність {xk}, обчислена за формулою (1), збігається до кореня x* , якщо початкове наближення x0 R.

Теорему доведено.

Оцінимо швидкість збіжності методу Ньютона. Для цього запишемо функцію f(x) в околі точки xk R за формулою Тейлора із залишковим членом у формі Лагранжа

f(x) = f(xk) + f´(xk)(x - xk) + f´´(η)(x - xk)2,

де η лежить між точками х і xk . Поклавши в ній х = х* і врахувавши, що

f(x*)= 0, дістанемо:

.

Звідси і з (1)маємо

.

Поклавши

M2 = , m1 = , (3)

знаходимо . (4)

З оцінки (4) випливає, що метод Ньютона збігатиметься до кореня x*, якщо початкове наближення х0 таке, що

,

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

Зокрема, якщо і , то з (4) маємо: .

Отже, коли наближення хk має m правильних десяткових знаків, то наступне наближення xk+1 матиме щонайменше 2m правильних десяткових знаків.

Для оцінки k-го наближення методу Ньютона можна скористатися формулою (3), в якій

m1 = . Тоді ітераційний процес можна закінчити, якщо стане правильною нерівність , де - наперед задана точність наближення xk .

Можна довести, що для методу Ньютона справедлива оцінка

,

де m1 і M2 визначаються за формулами (3).

З цієї оцінки видно, що для досягнення заданої точності ітераційний процес треба продовжувати доти, поки для двох послідовних наближень xk, xk-1 не виконуватиметься нерівність

.

Якщо на відрізку [a;b] справедлива нерівність M2 < 2m1, то ітераційний процес можна закінчити, коли виконується умова .

З формули (2) видно, що чим більше значення |f´(x)| в околі кореня, тим менша поправка додається до попереднього наближення. Тому метод Ньютона зручно застосовувати тоді, коли в околі кореня графік функції y = f(x) має значну крутість. Крім того, методом Ньютона можна знаходити не

тільки дійсні корені рівнянь, а й комплексні. Метод Ньютона поширюється і на розв’язування систем нелінійних рівнянь з багатьма невідомими.

Недоліком методу Ньютона є те, що на кожній ітерації треба обчислювати не тільки значення функції f(x), а й значення її похідної f´(x). Обчислення похідної f´(x) може бути значно складнішим від обчислення f(x). У таких випадках похідну f´(xk) замінюють її наближеним значенням

.

Якщо похідна f´(x) мало змінюється на [a;b], то кількість обчислень у методі Ньютона

можна зменшити, коли значення похідних f´(xk) у точках xk , k= 1, 2, …замінити значенням f´(x0) у точці x0. Тоді формула (1) набере вигляду

, k = 0, 1, 2, … (5)

В результаті дістали спрощений метод Ньютона. Геометрично він означає, що дотичні в точках (xk,f(xk)) замінюються прямими, паралельними дотичній, проведеній до кривої y = f(x) у точці (x0,f(x0)).

Приклад. Методом дотичних знайти корінь рівняння

x3 + 1,76439x2 + 2,21584x – 3,31344 = 0

з точністю до 0, 00005 на проміжку [0;1].

З виразів для f´(x) і f´´(x)

f´(x) = 3x2 + 3,52878x + 2,21584;

f´´(x) = 6x + 3,52878

знаходимо, що f´´(x) > 0 і f´(x) > 0 при довільних x [0;1], .

Код программи

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Math, StdCtrls, ExtCtrls, Buttons, ToolWin, ComCtrls, MPlayer,

TeeProcs, TeEngine, Chart, Series;

type

TForm1 = class(TForm)

pnl1: TPanel;

btnSolve: TButton;

edt1: TEdit;

edt2: TEdit;

edt3: TEdit;

lbl1: TLabel;

lbl2: TLabel;

lbl3: TLabel;

pnlEq: TPanel;

pnlAnsw: TPanel;

lblAnsw: TLabel;

edtAnsw: TEdit;

pnl2: TPanel;

sbtn1: TSpeedButton;

sbtnDel: TSpeedButton;

sbtnAdd: TSpeedButton;

lblHelp: TLabel;

btn1: TBitBtn;

rgMethod: TRadioGroup;

lbl4: TLabel;

edt4: TEdit;

mpMusic: TMediaPlayer;

chtGraphic: TChart;

chk3D: TCheckBox;

mmoPersonal: TMemo;

btnSave: TButton;

dlgSave1: TSaveDialog;

lbl5: TLabel;

procedure btnSolveClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure sbtnAddClick(Sender: TObject);

procedure sbtnDelClick(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure chk3DClick(Sender: TObject);

procedure btnSaveClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure DisplayHint(Sender: TObject);

end;

var

Form1: TForm1;

Koeffs:Array[0..10] of TEdit;

Names:array[0..10] of TLabel;

Quan:Integer;

Solved:Boolean;

implementation

function F(X:Double):Double;

var

Func:Double;

i:integer;

begin

Func:=0;

for i:=0 to Quan-1 do

Func:=Func+StrToFloat(Koeffs[i].Text)*Power(X,i);

Result:=Func;

end;

function HordeMethod(A:Double; B:Double; Epsilon:Double):Double;

begin

While(Abs(A-B)>Epsilon) do

begin

A:=B - (B-A)*F(B)/(F(B)-F(A));

B:=A - (A-B)*F(A)/(F(A)-F(B));

end;

If (B<=StrToFloat(Form1.edt2.Text)) and (B>=StrToFloat(Form1.edt1.Text)) then

Result:=B

else

Result:=10000;

end;

function FDer(X:Double):Double; //Производная

Var

Func:Double;

i:Integer;

begin

Func:=0;

for i:=1 to Quan-1 do

Func:=Func+StrToFloat(Koeffs[i].Text)*i*Power(X,i-1);

Result:=Func;

end;

function TangentMethod(A:Double; B:Double; Epsilon:Double):Double;

begin

while(Abs(A-B)>Epsilon)do

begin

A:=B-F(B)/FDer(B);

B:=A-F(A)/FDer(A);

end;

If (B<=StrToFloat(Form1.edt2.Text)) and (B>=StrToFloat(Form1.edt1.Text)) then

Result:=B

else

Result:=10000;

end;

{$R *.dfm}

procedure TForm1.btnSolveClick(Sender: TObject);

Var

A,B:Double; //Границы поиска корня.

Epsilon:Double; //Точность поиска.

Root:Double;

Series:TLineSeries;

i:Integer;

begin

Solved:=true;

chtGraphic.SeriesList.Clear;

mpMusic.FileName := 'Toasty.wav';

A:=StrToFloat(edt1.Text);

B:=StrToFloat(edt2.Text);

Epsilon:=StrToFloat(edt3.Text);

if(rgMethod.ItemIndex=0) then

begin

Root:=TangentMethod(A,B,Epsilon);

edt4.Text:='Метод Дотичних.'

end;

if(rgMethod.ItemIndex=1) then

begin

Root:=HordeMethod(A,B,Epsilon);

edt4.Text:='Метод Хорд.'

end;

if(Root<>10000) then

edtAnsw.Text:=FloatToStrF(Root,ffFixed,5,4)

else

edtAnsw.Text:='Корінь знаходиться за межами інтервалу.';

mpMusic.Open;

mpMusic.Play;

//ShowMessage(IntToStr(chtGraphic.SeriesCount));

Series:=TLineSeries.Create(Self);

For i:=Round(A) to Round(B) do

begin

Series.AddXY(i,F(i));

end;

chtGraphic.AddSeries(Series);

btnSave.Hint:='Збереження рівняння і його кореня у текстовий файл. Тека, у яку пропонують за замовчуванням: Шлях до програми / Рівняння ';

btnSave.Enabled:=True;

end;

procedure CreateKoeffNames(Curr:Integer);

begin

Koeffs[Curr]:=TEdit.Create(Form1);

Koeffs[Curr].Parent:=Form1.pnlEq;

Koeffs[Curr].Width:=25;

Koeffs[Curr].Left:=Form1.pnlEq.Width - 75*(Curr+2);

Koeffs[Curr].Top:=100;

Koeffs[Curr].Text:='1';

Koeffs[Curr].Hint:='Коефіцієнт при X^'+intToStr(Curr)+'. Дійсне число, яке задає користувач.';

Koeffs[Curr].Font:=Form1.edt1.Font;

//

Names[Curr]:=TLabel.Create(Form1);

Names[Curr].Parent:=Form1.pnlEq;

Names[Curr].Width:=25;

Names[Curr].Left:=Koeffs[Curr].Left+Koeffs[Curr].Width+5;

Names[Curr].Top:=100;

if Curr>0 then

if Curr>1 then

Names[Curr].Caption:='X^'+IntToStr(Curr)+' + '

else

Names[Curr].Caption:='X + '

else

Names[Curr].Caption:='=0';

end;

procedure TForm1.FormCreate(Sender: TObject);

Var

i:integer;

begin

Solved:=False;

rgMethod.ItemIndex:=0;

Application.OnHint:=Form1.DisplayHint;

Quan:=2;

for i:=0 to Quan - 1 do

begin

//Наши поля для ввода коэффициентов при х.

CreateKoeffNames(i);

end;

If not Solved then

btnSave.Hint:='Збереження рівняння і його кореня не має сенсу, поки рівняння не вирішено.';

end;

procedure TForm1.sbtnAddClick(Sender: TObject);

begin

If Quan<10 then

begin

Inc(Quan);

CreateKoeffNames(Quan-1);

end

else

ShowMessage('Програма працює з рівняннями до дев"яти змінних включно.');

end;

procedure TForm1.sbtnDelClick(Sender: TObject);

begin

if Quan>2 then

begin

Dec(Quan);

Koeffs[Quan].Free;

Names[Quan].Free;

end

else

ShowMessage('Рівняння без невідомої не має сенсу.');

end;

procedure TForm1.DisplayHint(Sender:TObject);

begin

lblHelp.Caption:=GetLongHint(Application.Hint);

end;

procedure TForm1.btn1Click(Sender: TObject);

begin

Application.Terminate;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Application.Terminate;

end;

procedure TForm1.chk3DClick(Sender: TObject);

begin

chtGraphic.View3D:=chk3D.Checked;

end;

procedure TForm1.btnSaveClick(Sender: TObject);

Var

Text:TextFile;

Str:string;

i:integer;

begin

if Solved then

If dlgSave1.Execute then

begin

Str:='';

AssignFile(Text,dlgSave1.FileName);

Rewrite(Text);

Write(Text,'Рівняння: ');

for i:= Quan-1 downto 0 do

begin

if i=0 then

write(Text,Koeffs[0].Text+' = 0');

if(i>0) then

if i>1 then

Write(Text,Koeffs[i].Text+'X^'+IntToStr(i)+' + ')

else if i=1 then

Write(Text,Koeffs[i].Text+'X + ')

end;

Writeln(Text);

Writeln(Text,'Корінь рівняння: '+edtAnsw.Text);

CloseFile(Text);

end

else

else

ShowMessage('Перед зберіганням рівняння, його треба вирішити');

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Unit1;

type

TFormWelcome = class(TForm)

lbl1: TLabel;

btnProceed: TBitBtn;

procedure btnProceedClick(Sender: TObject);

private

{ Private declarations }

Public

{ Public declarations }

end;

var

FormWelcome: TFormWelcome;

implementation

{$R *.dfm}

procedure TFormWelcome.btnProceedClick(Sender: TObject);

begin

Form1.ShowModal;

FormWelcome.Hide;

end;

end.

Використані процедури

TSpeedButton

Це кнопка , що має свої відмінності як від стандартної кнопки Button , так і від кнопки BitBtn. Перша відмінність : в кнопках Delphi SpeedButton відсутня властивість Kind ;

Друга відмінність : кнопки Delphi SpeedButton мають можливість бути зафіксованими в втопленому стані;

Третя відмінність : кнопки Delphi SpeedButton не мають властивості ModalResult і, відповідно ,

не мають можливості закривати модальні вікна . 

 Для реалізації фіксіціі утопленого стану кнопка SpeedButton повинна належати до якоїсь із груп аналогічних кнопок , навіть якщо ця група складатиметься з неї однієї . Для віднесення до групи у кнопки SpeedButton використовується властивість GroupIndex : Integer , не рівне нулю. Ще одне оригінальне властивість AllowAllUp визначає поведінку кнопки.

    Якщо AllowAllUp = True , то втоплена кнопка " віджимається " тільки тоді , коли відбувається натискання на одну з кнопок , що входять в ту ж групу (тобто властивості AllowAllUp яких рівні ) .    А якщо властивість AllowAllUp = False , то до звільнення кнопки призводить повторне клацання по ній.    Індикатором утопленого стану кнопки Delphi SpeedButton являетя рівність властивості Down значенню True . Ця властивість також доступно і для запису , тому керувати станами кнопки Delphi SpeedButton можна в тому числі і програмно .    У всьому іншому властивості кнопки SpeedButton збігаються з властивостями і методами кнопки BitBtn .

TSaveDialog

Це візуальний компонент . Він використовується для вибору користувачем імені файлу призначеного для збереження .Основні властивості:- Title - використовується для установки заголовка діалогу ;- FileName - видає ім'я файлу , задане за замовчуванням для збереження (інакше , поле імені файлу буде пропуском ) ;- DefaultExt - визначає розширення, яке буде додаватися до

призначеного для користувача імені файлу , якщо воно друкується вручну (а не вибирається зі списку файлів). Якщо цих фільтрів розширень два або більше , то це значення ігнорується. Вони повинні бути поміщені в список, що розкривається значень розширення;- Filter - дозволяє відображати і вибирати тільки деякі типи файлів. Текст фільтра відображається в спадаючому поле , трохи нижче поля імені файлу. Наступний приклад вибирає тільки текстові файли :saveDialog.Filter : = ' Text files only | * . txt ';Список, що розкривається показує текст, що знаходиться перед роздільником | . Після роздільник можна визначити маску , яка вибирає файли :saveDialog.Filter : = ' Text files | * . txt | Word files | * . doc ';- FilterIndex - визначає , який фільтр спадаючого поля буде відображений перший .- InitialDir - встановлює початковий каталог в діалозі.Для відображення діалогу викликаємо метод TSaveDialog :if saveDialog.Execute then ...Execute поверне істину , якщо користувач вибрав файл і натиснув OK.

TPanel

Цей компонент - панель - є несучою конструкцією для розміщення інших елементів управління. На відміну від простої рамки (TBevel) панель сама є віконним елементом управління і батьком для всіх розміщених на ній компонентів. Часто її використовують для створення панелей інструментів, рядків стану

TChart

Компонент Delphi Chart розташовується на сторінці Additional Палітри компонентів. Його розробив Девід Бернеда . Це багатий можливостями , дуже потужний компонент, що дозволяє будувати двох і тривимірні красиві діаграми на основі різноманітних даних. Він має велику кількість різноманітних властивостей. Частина з них , в свою чергу , є об'єктами і володіють власними властивостями .Створити діаграму можна , також за допомогою майстра. Для запуску майстра з меню запускаємо File -> New - > Other і потрапляємо у вікно New Items , там на вкладці Business вибираємо TeeChartWisard . Майстер потребують уточнення , на основі бази даних чи ні

будуватиметься графік . Нехай він генерується програмою ( перемикач Non Database Chart - не на основі бази даних). Наступний крок - вибір виду діаграми , вона може бути двох або трьох мірної (вибір перемикача 2D або 3D). Натиснувши Next визначаємо чи потрібна нам легенда (опція Show Legend ) , жовті підказки , поруч з діаграмою , включає прапорець Show Marks .

Натиснувши на кнопку Finish ми отримаємо діаграму , заповнену випадково згенерували числами.Налаштування властивостей компонента Chart відбувається в редакторі Editing Chart . Викликати його можна подвійним клацанням по компоненту або використовуючи властивість SeriesList Інспектора об'єктів .

TEdit

Компонент Delphi Edit являє собою однорядкове текстове поле, що служить для введення даних користувачем. Основною властивістю компонента Delphi Edit, передавальним введену інформацію, є властивість Edit1.Text типу String. При вивченні роботи з Delphi Edit раджу відвідати сторіночку робота з рядками Delphi, так як там описуються функції Delphi для роботи з даними, представленими в текстовій формі. Наприклад, найчастіше, судячи по пошукових запитах, відвідувачі хочуть знати, як працювати з числами, введеними в компонент Edit

TLabel

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

TBitBtn

Компонент Delphi BitBtn (кнопка з малюнком ) розташований на сторінці Additional Палітри Компонентів . Він є нащадком класу Button - стандартної кнопки. Компонент BitBtn відрізняється від компонента Button тим , що на ньому разом з текстовим написом можна відобразити растровий малюнок. Дизайн і розташування картинки визначається властивостями компонента.За відображення растрового малюнка відповідає властивість Glyph . Властивість Glyph спочатку встановлюється зі значенням None і тому на кнопці немає малюнка . Кнопка може відображати до трьох окремих малюнків:зовнішній вигляд кнопки (коли кнопка не взаємодіє з користувачем ) - це перше зображення ,кнопка неактивна (її не можна вибрати і колір її сірий ) - друга картинка ,на кнопці зроблено клацання (кнопка натиснута ) - третя картинка.

TMemo

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

TButton

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

події OnClick цього компонента.    Один той же обробник може обробляти події кількох компонентів TButton (та й не тільки TButton , а й

навіть компонентів інших типів). Для визначення того , подія якого саме компонента потрібно обробляти , використовується вбудована змінна Sender типу TObject , що позначає об'єкт , що викликав дану подію. Для ілюстрації цієї можливості розглянемо просту процедуру , визначальну натиснуту кнопку .

TCheckBox

Компонент CheckBox це прапорець - незалежний перемикач. Прапорець i CheckBox використовується в програмі для візуалізації станів включено-виключено. Кожне клацання мишкою по компоненту i CheckBox змінює його стан на протилежне. Зміна стану перемикача також доступна і в програмі.    CheckBox являє собою поєднання невеликого віконця, яке і візуалізує наявністю або відсутністю "галочки" стан компонента, і компонента Label - заголовка, поясняющего призначення перемикача.

TRadioGroup

Радіокнопки утворюють групи взаємопов'язаних індикаторів , з яких може бути вибраний тільки один. Вони використовуються для вибору користувачем однієї з декількох взаємовиключних альтернатив , наприклад , відділу , в якому працює співробітник , чи статі співробітника . Втім , радиокнопки можуть використовуватися і для відображення аналогічних даних . У цьому випадку управління кнопками здійснюється програмно .  Компонент Delphi , RadioGroup розташований на сторінці Standard. (Standard - Стандартні , що містить найбільш часто використовувані компоненти )  Палітри Компонентів . Він являє собою контейнер з групою компонентів RadioButton ( перемикачів ) . Такий компонент спрощує організацію роботи перемикачів , порівняно іншими груповими контейнерами вимагають додавати перемикачі вручну.

TmediaPlayer

Компонент Delphi MediaPlayer ( мультимедійний програвач ) розташований на сторінці System Палітри компонентів. Він призначений для програвання аудіо і відео файлів. За видимість кнопок на компоненті відповідає властивість VisibleButtons . За замовчуванням всі кнопки видимі. Найпростіше встановити набір видимих ​​кнопок у Інспектора об'єктів. Але можна зробити так щоб установки задавалися програмно ( задаємо видимість кнопок відтворення і зупинки) :   MediaPlayer1.VisibleButtons : = [ btPlay , btStop ] ; Встановивши компонент ми маємо справу з кольоровими кнопками , але якщо нам більше подобається сірий колір , то необхідно у властивості ColoredButtons , в інспектор об'єктів , визначити для яких кнопок потрібен сірий колір і навпаки них поставити властивість FALSE . За доступність самих кнопок відповідає властивість EnabledButtons . Доступна кнопка має свій природний колір і може бути натиснута. Заборонена або недоступна кнопка не реагує на натискання , колір її світло- сірий . При визначенні властивості AutoEnable в TRUE програвач

сам визначає автоматично доступність кнопок залежно від типу використовуваного файлу. І програмісту залишиться можливість управляти доступністю тих кнопок які не заблоковані Компонент MediaPlayer програючи який або кліп або фонограму пов'язаний з файлом розташованому на зовнішньому носії або ж на жорсткому диску. Цей файл необхідно відкрити для запису або відтворення , властивість FileName задає ім'я файлу.

Для того щоб , ми могли запустити наш програвач потрібно скористатись методом Open або встановити властивість AutoOpen в TRUE

Так виглядає форма до вирішення рівняння.

Тут знаходиться наше рівняння, за допомогою якого ми знаходимо корінь рівняння

Знайдений корінь показують в цьому полі

Після того , як знайшли корінь рівняння, можна зберегти рівняння, натиснувши кнопку «Збрегти»

Якщо корінь рівняння, знайти важко, то можна додати одночлен, натисненням кнопки «Додати»

Щоб видалити одночлен, потрібно натиснути кнопку «Видалити»

На цьому полі малюється графік; малюється він автоматично, після натиснення кнопки «Знайти корінь»

Це вікно виводить інформацію, про будь-яку кнопку чи процедуру на цій формі.

Натиснувши кнопку «Вихід з програми», форма закривається.

Привітальна форма.

Перед відкриттям основної форми, нам відкривається інша ,форма, за допомогую якої ,мі приступаємо до вирішення рівняння.

Помилка вийшла, тоді коли в поле «Ліва границя», ввів не ціле число

неправильне значення з плаваючою точкою

помилка в матеріальному числі++

поле для введення порожнє або кома замість крапки писана

Використана література:

1. Абрамов С.А., Зима Є.В.

Начала информатики”.- М.:Наука, 1989._256 с.

2. Агеев М.И., Алик В.П., Марков Ю.И

Библиотека алгоритмов”

101 б – 150 б; Справочное пособие вик.3. – М.:Сов радіо, 1978, 120 с.

3. Бартків А.Б., Гринчишін Я.Т. та ін.

TURBO Pascal:

Алгоритми і програми; Чисельні методи в фізиці та математеці;

Навчальний посібник,- К.: Вища школа 1992.-247 с.: іл

4. Джонс Ж., Харроук.

Решение задач. Пер с англ.; - М.;

Финансы і статистика, 1991.- 720 с.: ил

5. Дьяконов В.П.

Справочник по алгоритмам программ.- М ю: Наука. 1989.- 240с

6. Морзе Н.В.