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

Метод Лобачевського

procedure TForm1.BtnLobachClick(Sender: TObject);

var a0,a1,a2,n0,n1,n2,m1,m2,e,c,x1,x2,dy,y1,y2,y3,Epsylon,ERS:real;

i:integer;

begin

Epsylon:=0;

form1.StrRezult.RowCount:=1;

a0:=strToFloat(Edta0.Text);

a1:=strToFloat(Edta1.Text);

a2:=strToFloat(Edta2.Text);

n0:=strToFloat(Edtb0.Text);

n1:=strToFloat(Edtb1.Text);

n2:=strToFloat(Edtb2.Text);

ERS:=strToFloat(EdtERS.Text);

m1:=strToFloat(Edt1.Text);

m2:=strToFloat(Edt2.Text);

e:=strToFloat(EdtMaxNevjazka.Text);

form1.StrRezult.ColCount:=6;

form1.StrRezult.Cells[0,0]:='№';

form1.StrRezult.Cells[1,0]:='x1';

form1.StrRezult.Cells[2,0]:='x2';

form1.StrRezult.Cells[3,0]:='Нев"язка y1' ;

form1.StrRezult.Cells[4,0]:='Нев"язка y2' ;

form1.StrRezult.Cells[5,0]:='Похибка' ;

x1:=m1; x2:=m2; c:=0;

y1:=a0*power(x1,n0)+a1*power(x1,n1)+a2*power(x1,n2)+ERS;

y2:=a0*power(x2,n0)+a1*power(x2,n1)+a2*power(x2,n2)+ERS;

y3:=a0*power(c,n0)+a1*power(c,n1)+a2*power(c,n2)+ERS;

i:=1;

Epsylon:=(abs(m1-m2))/2;

while Epsylon>=e do

begin

c:=x1-y1*(x2-x1)/(y2-y1);

y3:=a0*power(c,n0)+a1*power(c,n1)+a2*power(c,n2)+ERS;

if (y1*y3)<0 then

x2:=c;

else if (y2*y3)<0 then

x1:=c;

y1:=a0*power(x1,n0)+a1*power(x1,n1)+a2*power(x1,n2)+ERS;

y2:=a0*power(x2,n0)+a1*power(x2,n1)+a2*power(x2,n2)+ERS;

dy:=a0*n0*power(x2,n0-1)+a1*n1*power(x2,n1-1)+a2*n2*power(x2,n2-1);

x2:=x2-(y2)/(dy);

y2:=a0*power(x2,n0)+a1*power(x2,n1)+a2*power(x2,n2)+ERS;

if abs(y1)<abs(y2) then

Epsylon:=abs(y1)

else Epsylon:=abs(y2);

form1.StrRezult.RowCount:=form1.StrRezult.RowCount+1;

form1.StrRezult.Cells[0,i]:=intToStr(i);

form1.StrRezult.Cells[1,i]:=floatToStr(x1);

form1.StrRezult.Cells[2,i]:=floatToStr(x2);

form1.StrRezult.Cells[3,i]:=floatToStr(y1);

form1.StrRezult.Cells[4,i]:=floatToStr(y2);

form1.StrRezult.Cells[5,i]:=floatToStr(Epsylon);

inc(i);

end;end;

Метод простої ітерації

procedure TForm1.BtnIterationClick(Sender: TObject);

var a0,a1,a2,n0,n1,n2,m1,m2,e,x1,x2,df,y1,y2,Epsylon,ERS:real;

i:integer;

begin

Epsylon:=1;

form1.StrRezult.RowCount:=1;

a0:=strToFloat(Edta0.Text);

a1:=strToFloat(Edta1.Text);

a2:=strToFloat(Edta2.Text);

n0:=strToFloat(Edtb0.Text);

n1:=strToFloat(Edtb1.Text);

n2:=strToFloat(Edtb2.Text);

ERS:=strToFloat(EdtERS.Text);

m1:=strToFloat(Edt1.Text);

m2:=strToFloat(Edt2.Text);

e:=strToFloat(EdtMaxNevjazka.Text);

form1.StrRezult.ColCount:=5;

form1.StrRezult.Cells[0,0]:='№';

form1.StrRezult.Cells[1,0]:='x(k)';

form1.StrRezult.Cells[2,0]:='x(k+1)+fi(k)';

form1.StrRezult.Cells[3,0]:='fi`(k)' ;

form1.StrRezult.Cells[4,0]:='Похибка' ;

form1.StrRezult.Cells[4,1]:='-' ;

x1:=m1; x2:=0; df:=0.1; i:=1;

if abs(df)<1 then

begin

while Epsylon>e do

begin

x2:=power((a1*power(x1,n1)+a2*power(x1,n2)+ERS)/(-a0),1/n0);

df:=(1/n0)*power(((a1*power(x2,n1)+a2*power(x2,n2)+ERS)/(-a0)),((1/n0)-1))*(1/-a0)*(a1*n1*power(x2,n1-1)+a2*n2*power(x2,n2-1));

Epsylon:=(abs(x1-x2));

form1.StrRezult.RowCount:=form1.StrRezult.RowCount+1;

form1.StrRezult.Cells[0,i]:=intToStr(i);

form1.StrRezult.Cells[1,i]:=floatToStr(x1);

form1.StrRezult.Cells[2,i]:=floatToStr(x2);

form1.StrRezult.Cells[3,i]:=floatToStr(df);

form1.StrRezult.Cells[4,i]:=floatToStr(Epsylon);

x1:=x2; inc(i);

end; end; end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]