Идентификатор
|
Характеристика идентификатора
|
a
|
Координата начала интервала нелинейного уравнения
|
b
|
Координата конца интервала нелинейного уравнения
|
e
|
Точность вычисления нелинейного уравнения
|
x0
|
Начальное приближение корня нелинейного уравнения
|
i
|
Счетчик цикла схемы Горнера
|
si
|
Коэффициенты функции
|
Y
|
Значение функции
|
t
|
Время (аргумент функции)
|
Tn
|
Начальное значение времени аргумента функции
|
Tk
|
Конечное значение времени аргумента функции
|
T
|
Время квантования
|
a1, b1, d1,
a2, b2,
d2
|
Коэффициенты системы уравнений
|
z, v
|
Корни системы уравнений
|
n
|
Сумма корней системы уравнений
|
3.2 Блок-схемы
алгоритмов
Поиск коэффициента e осуществляется с помощью решения
нелинейного уравнения одним из следующих методов:
- деления отрезка
пополам (биссекции);
- хорд;
- Ньютона;
- простой итерации.
На рисунке 3.2 представлена
процедура решения нелинейного уравнения методом деления отрезка пополам.
Предполагается, что функция f(x) непрерывна и ограничена в заданном интервале [a; b], также предполагается, что
значение функции на концах интервала f(a) и f(b) имеют разные знаки, то есть f(a)*f(b)<0.
Рисунок 3.2 - Процедура
решения нелинейного уравнения методом деления отрезка пополам (биссекции)
Процедура решения
нелинейного уравнения методом деления отрезка пополам (биссекции) заключается в
последовательном выполнении следующих операций:
1) задать интервал [a; b] и точность вычисленияe;
) проверить условие, если
оно выполняется, то делить интервал пополам;
) вычислитьf(a)*f((a+b)/2), если это значение меньше нуля,
то необходимо рассмотреть интервал [a; d], иначе-интервал [d; b], где с = (a + b)/2;
) деление отрезка выполнять
до тех пор, пока не выполняется условие |a - b|<=e.
На рисунке 3.3 представлена
процедура решения линейного уравнения методом хорд.
Рисунок 3.3 - Процедура решения
нелинейного уравнения методом хорд
) задать интервал [a; b] и точность вычисления;
) проверить выполнение
условия f(a)<0 для того чтобы присвоить приближенному значению корня x0 значение конца интервала;
) в зависимости от
выполнения условияf(a)<0 выбрать формулу расчета приближенного значения корня
уравнения;
) деление отрезка выполнять
до тех пор, пока не выполняется условие |xn+1 - xn|<=e.
На рисунке 3.4 представлена
процедура решения нелинейного уравнения методом Ньютона.
Рисунок 3.4 - Процедура
решения нелинейного уравнения методом Ньютона
Процедура решения
нелинейного уравнения методом Ньютона заключается в последовательном выполнении
следующих операций:
1) выбрать приближенное
значение корня x0и точность вычисленияe;
) проверить выполнение
условия сходимости|φ’ (xn)|<1;
) найти значение корня
уравнения путем последовательного приближения по формуле xn+1=xn-f(xn)/f’ (xn).
На рисунке 3.5 представлена
процедура решения нелинейного уравнения методом простой итерации.
Рисунок 3.5 - Процедура решения
нелинейного уравнения методом простой итерации
Процедура решения нелинейного
уравнения методом простой итерации заключается в последовательном выполнении
следующих операций:
) выбрать приближенное
значение корня x0 и точность вычисленияe;
) проверить выполнение
условия сходимости, гдеφ (х) - функция, выраженная из данного нелинейного уравнения;
) найти значение корня
уравнения путем последовательного приближения по формуле xn+1=φ(xn).
.3 Распечатка листинга
программы
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include «Unit1.h»
#include «Unit2.h»
#include «Unit3.h»
#include «mmsystem.h»
// -
#pragma package
(smart_init)
#pragma link «CGAUGES»
#pragma resource
«*.dfm»*Form1;
// -
__fastcall TForm1:TForm1
(TComponent* Owner)
: TForm(Owner)
{
}
// -__fastcall TForm1:
FormActivate (TObject *Sender)
{PlaySound
(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ Kursach.wav», 0,
SND_ASYNC);W, L, t;=10; L=43;(int i=1; i<=129; i++)
{t=8; if (L<=583)
{(int T=0; T<=20; T++)
{t=t++;
Imagekar->Top=t; Application->ProcessMessages(); Sleep (5);}(int T=0;
T<=20; T++)
{t=t-1;
Imagekar->Top=t; Application->ProcessMessages(); Sleep
(5);}=W+12;=L+12;>Left=L; Label1->Width=W;
Application->ProcessMessages(); Sleep (10);
}}(t=t; t<=72; t++)
{>Top=t;
Application->ProcessMessages(); Sleep (10);
}->Visible=true;>Height=137;
int q;(t=t; t>=40; t-)
{q=q+5;>Top=t-3;
Image3->Height=q; Application->ProcessMessages(); Sleep
(20);}>Visible=false;t2, t3;=Image2->Top; t2=Label1->Top;(int i=0;
i<=100; i++)
{=t2-; t3=t3
-;->Top=t3; Label1->Top=t2; Application->ProcessMessages(); Sleep
(15);
}->Visible=true;
CGauge1->Visible=true; MaskEdit1->Visible=true;
} // -__fastcall TForm1:
Timer1Timer (TObject *Sender)
{(int i=0; i<=100;
i++)
{->Progress=i;(50);(CGauge1->Progress
== CGauge1->MaxValue) Timer1->Enabled = false;
}->Show
();->Hide();(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ 2.wav», 0,
SND_ASYNC);
}
// -__fastcall TForm1:
MaskEdit1MouseMove (TObject *Sender,Shift, int X, int Y)
{>Visible=true;
}
// -__fastcall TForm1:
FormMouseMove (TObject *Sender, TShiftState Shift,X, int Y)
{>Visible=false;
}
// -__fastcall TForm1:
Image1Click (TObject *Sender)
{(«D:\\Programs\\Borland
C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ 1.wav», 0,
SND_ASYNC);parol=123456;->Font->Color=clBlack;s=StrToFloat
(MaskEdit1->Text); if (parol==s) {->Font->Color=clGreen;->Progress=0;->MaxValue
= 100; Timer1->Interval = 100; Timer1->Enabled = true;
}
{char s[40]; sprintf (s,
«%s», MaskEdit1->Text); MaskEdit1->Font->Color=clRed;
MaskEdit1->Text=s;}
}
// -
// -
#pragma hdrstop
#include «Unit1.h»
#include «Unit2.h»
#include «Unit3.h»
#include «math.h»
#include «Math.hpp»
#include «windows.h»
#include «mmsystem.h»
// -
#pragma package
(smart_init)
#pragma resource
«*.dfm»*Form2;
// -
__fastcall TForm2:TForm2
(TComponent* Owner)
: TForm(Owner)
{r;
}
// -F (float x)
{0.1*x*x+log(x);
}
// -F1 (float x) {exp
(-0.1*x*x);
}
// -F2 (float x)
{-0.2*x*exp (-0.1*x*x);
}
// -F3 (float x)
{0.2*x+(1/x);
}
// -F4 (float x) {0.2*x
- (1/(x*x));
}
// -__fastcall TForm2:
Edita1Change (TObject *Sender)
{(Edita1->SelStart>=1)
{Editb1->Visible=true;
Imageb->Visible=true;}
}
// -__fastcall TForm2:
Editb1Change (TObject *Sender)
{(Editb1->SelStart>=1)
{Editeps->Left=440;
Editeps->Visible=true; Imageeps->Left=440; Imageeps->Visible=true;}
}
// -__fastcall TForm2:
EditepsChange (TObject *Sender)
{(Editeps->SelStart>=1)
{if ((r==3)|(r==4))
{Editx0->Visible=true; Imagex0->Visible=true;}
{Editx0->Visible=false;
Imagex0->Visible=false;}
}
}
// -r;__fastcall TForm2:
NbisClick (TObject *Sender)
{=1;->Visible=false;
Label1->Visible=false; Label2->Visible=false;
Label3->Visible=false;->Visible=false; Imagebis->Visible=true;
Imagehord->Visible=false; Imageiter->Visible=false;>Visible=false;
Edita1->Visible=true; Editx0->Visible=false;
Editb1->Visible=false;->Text=»»; Editb1->Text=»»; Editx0->Text=»»;
Editeps->Text=»»;>Left=440; Editeps->Visible=false;
Imagea->Visible=true; Imageb->Visible=false;>Left=440; Imageeps->Visible=false;
Imagex0->Visible=false; BitBtn1->Visible=true;->Visible=false;
BitBtn3->Visible=false; BitBtn4->Visible=false;
}
// -__fastcall TForm2:
NxordClick (TObject *Sender)
{=2;->Visible=false;
Label1->Visible=false; Label2->Visible=false;
Label3->Visible=false;->Visible=false; Imagebis->Visible=false;
Imagehord->Visible=true; Imageiter->Visible=false;>Visible=false;
Edita1->Visible=true; Editx0->Visible=false;
Editb1->Visible=false;->Text=»»; Editb1->Text=»»; Editx0->Text=»»;
Editeps->Text=»»; Editeps->Left=440;>Visible=false; Imagea->Visible=true;
Imageb->Visible=false;>Left=440; Imageeps->Visible=false;
Imagex0->Visible=false;->Visible=false; BitBtn2->Visible=true;
BitBtn3->Visible=false; BitBtn4->Visible=false;
}
// -__fastcall TForm2:
NiterClick (TObject *Sender)
{=3;->Visible=false;
Label1->Visible=false; Label2->Visible=false;
Label3->Visible=false;->Visible=false; Imagebis->Visible=false;
Imagehord->Visible=false; Imageiter->Visible=true;>Visible=false;
Edita1->Visible=false; Editx0->Visible=false; Editb1->Visible=false;->Text=»»;
Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»;
Editeps->Left=8;>Visible=true; Imagea->Visible=false;
Imageb->Visible=false; Imageeps->Left=8;>Visible=true;
Imagex0->Visible=false;->Visible=false; BitBtn2->Visible=false;
BitBtn3->Visible=true; BitBtn4->Visible=false;
}
// -__fastcall TForm2:
NnutClick (TObject *Sender)
{r=4;->Visible=false;
Label1->Visible=false; Label2->Visible=false;
Label3->Visible=false;->Visible=false; Imagebis->Visible=false;
Imagehord->Visible=false; Imageiter->Visible=false;
Imagenut->Visible=true; Edita1->Visible=false; Editx0->Visible=false;
Editb1->Visible=false;->Text=»»; Editb1->Text=»»; Editx0->Text=»»;
Editeps->Text=»»;>Left=8; Editeps->Visible=true;
Imagea->Visible=false; Imageb->Visible=false;>Left=8; Imageeps->Visible=true;
Imagex0->Visible=false;->Visible=false; BitBtn2->Visible=false;
BitBtn3->Visible=false; BitBtn4->Visible=true;
}
// -__fastcall TForm2:
BitBtn1Click (TObject *Sender)
{a1=StrToFloat
(Edita1->Text);b1=StrToFloat (Editb1->Text);eps=StrToFloat
(Editeps->Text);c1; int i1=0;
{++;=(a1+b1)/2;(F(a1)*F(c1)<0)
b1=c1;a1=c1;
}(fabs(a1-b1)>=e);(«D:\\Programs\\Borland
C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true;
Label2->Visible=true; Label3->Visible=true;
Label4->Visible=true;->Font->Color=clSilver;
Label2->Font->Color=clSilver;
Label3->Font->Color=clSilver;->Font->Color=clSilver;->Caption=
«i=»;->Caption= «e=»;->Caption=i1;->Caption=SimpleRoundTo (c1,
-5);>ProcessMessages();(750);->Font->Color=clBlack;
Label2->Font->Color=clBlack;
Label3->Font->Color=clBlack;->Font->Color=clBlack;->Caption=
«i=»;->Caption= «e=»;->Caption=i1;->Caption=SimpleRoundTo (c1, -5);
}
// -__fastcall TForm2:
BitBtn2Click (TObject *Sender)
{x0, x1;a2=StrToFloat
(Edita1->Text);b2=StrToFloat (Editb1->Text);e=StrToFloat
(Editeps->Text); int i1=0;(F(a2)<0) x0=a2; else x0=b2;=x0;
{++;=x1;(F(a2)<0)
x1=x0-F(x0)*(b2-x0)/(F(b2) - F(x0));x1=x0-F(x0)*(x0-a2)/(F(x0) - F(a2));
}(fabs
(x1-x0)>e);(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа
2\\Sta.wav», 0,
SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true;
Label2->Visible=true; Label3->Visible=true; Label4->Visible=true;->Font->Color=clSilver;
Label2->Font->Color=clSilver;
Label3->Font->Color=clSilver;->Font->Color=clSilver;->Caption=
«i=»; Label4->Caption= «e=»;
Label1->Caption=i1;->Caption=SimpleRoundTo (x1, -5);>ProcessMessages();(550);->Font->Color=clBlack;
Label2->Font->Color=clBlack;
Label3->Font->Color=clBlack;->Font->Color=clBlack;->Caption=
«i=»; Label4->Caption= «e=»;
Label1->Caption=i1;->Caption=SimpleRoundTo (x1, -5);
}
// -__fastcall TForm2:
BitBtn3Click (TObject *Sender)
{i1=0;x0=StrToFloat
(Editx0->Text);e=StrToFloat (Editeps->Text);x1;=x0;{++;=x1;=F1
(x0);}(fabs (x1-x0)>e);(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа
2\\Sta.wav», 0,
SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Font->Color=clSilver;
Label2->Font->Color=clSilver;
Label3->Font->Color=clSilver;->Font->Color=clSilver;->Caption=
«i=»; Label4->Caption= «e=»; Label1->Caption=i1;->Caption=SimpleRoundTo
(x1, -5);>ProcessMessages();(750);->Font->Color=clBlack;
Label2->Font->Color=clBlack;
Label3->Font->Color=clBlack;->Font->Color=clBlack;->Caption=
«i=»; Label4->Caption= «e=»;
Label1->Caption=i1;->Caption=SimpleRoundTo (x1, -5);
// -__fastcall TForm2:
BitBtn4Click (TObject *Sender)
{i1=0; float x1; float
e=StrToFloat (Editeps->Text);x0;:x0=StrToFloat (Editx0->Text); if
(F(x0)*F4 (x0)<0) {=x0;
{++;=x1;=x0 - (F(x0)/F3
(x0));}(fabs (x1-x0)>e);(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа
2\\Sta.wav», 0,
SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Font->Color=clSilver;
Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;4->Font->Color=clSilver.
Список литературы
1. А.Я. Архангельский. Программирование в C++ Builder 6 М: «Издательство
БИНОМ», 2003
. 1. Архангельский А.Я. C++ Builder 6. Справочное пособие.
- М: «Издательство БИНОМ», 2002