Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра «Тракторы»
Группа 101151
Лабораторная работа №2
ПО ДИСЦИПЛИНЕ
«ИНФОРМАТИКА»
МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ.
МЕТОД НЬЮТОНА (КАСАТЕЛЬНЫХ)
Выполнил
студент Е.А.Горбёнок
«__»________ ___
Проверил Ю. Е. Атаманов
«__»________ ___
Минск 2012
unit Global;
interface
var
a,b,xsr,fa,fxsr : real;
Fw,Fr,Fww : TextFile;
FIO,nGr,s : string;
Procedure Fun(x:real; Var y:real);
Procedure Lin(NP,NZ,n,Disk:integer;Simvol:char);
Procedure Tab1;
Procedure MPD(a,b:real; Var xsr:real);
Procedure Tab2;
implementation
Procedure MPD(a,b:real; Var xsr:real);
Var p : real; i : integer;
begin
i:=1;
repeat
xsr:=(a+b)/2;
Fun(a,fa);
Fun(xsr,fxsr);
P:=fa*fxsr;
if (P>0) then a:=xsr
else b:=xsr;
writeln(Fw,'':2,i:3,xsr:13:3,fxsr:10:4);
writeln(Fww,'':2,i:3,xsr:13:3,fxsr:10:4);
i:=i+1;
until (abs(fxsr)<=0.001) or (i>20);
end;
Procedure Fun(x:real; Var y:real);
begin
y:=x*x*x-7,2*x*x-x*53,83+338,67;
end;
Procedure Lin(NP,NZ,n,Disk:integer;Simvol:char);
Var i : integer;
Label 1;
begin
Case Disk of
0: begin {Печать на экран}
if (NP > 0) then write(' ':NP);
for i:=1 to NZ do write(Simvol);
if (n>=1) then writeln; {Перевод курсора на след.строку}
goto 1
end;
1: begin {Печать на диск}
if (NP > 0) then write(Fw,' ':NP);
for i:=1 to NZ do write(Fw,Simvol);
if (n>=1) then writeln(Fw); {Перевод курсора на след.строку}
goto 1
end
end;
1: end; //Lin
Procedure Tab1;
begin
writeln(Fw,'':2,'Решение уравнения методом');
writeln(Fw,'':5,'половинного деления');
writeln(Fw);
writeln(Fw,'':7,'Исходные данные');
writeln(Fw,'':2,'Уравнение :',s);
writeln(Fw,'':2,'Расчет выполнил:',FIO);
writeln(Fw,'':2,'Группа:','':3,nGr);
writeln(Fw);
writeln(Fw,'':7,'Результаты расчета');
Lin(1,30,1,1,'-');
writeln(Fw,'':1,'Итерация : xcp : f(xcp)');
Lin(1,30,1,1,'-');
end;
Procedure Tab2;
begin
writeln(Fw);
writeln(Fw,'':2,'Корень уравнения',xsr:10:4);
writeln(Fw);
Lin(1,3,0,1,'-');
write(Fw,'':1,'*** Конец расчета ***');
Lin(1,3,0,1,'-');
end;
end.
unit Global;
interface
var
x0,x,xk,z,y,y1 : real;
Fr,Fw,Fww : TextFile;
FIO,nGr,s : string;
Procedure Fun(x:real; Var z,y:real);
Procedure Lin(NP,NZ,n,Disk:integer;Simvol:char);
Procedure Tab1;
Procedure NTN(x0:real; Var xk:real; Var i: integer);
Procedure Tab2;
implementation
Procedure NTN(x0:real; Var xk:real; Var i: integer);
Var z,y: real;
begin
x:=x0;
i:=0;
repeat
Fun(x,z,y);
writeln(Fw,'':6,i:5,x:16:3,y:15:5);
writeln(Fww,'':2,i:5,x:10:3,y:10:5);
x:=x-z;
xk:=x;
i:=i+1;
until (abs(y)<=0.01) or (i>20);
end;
Procedure Fun(x:real; Var z,y:real);
Var y1: real;
begin
y:=x*x*x-7,2*x*x-53,83*x+338,67;
y1:=3*x*x-14,4*x-53,83;
z:=y/y1;
end;
Procedure Lin(NP,NZ,n,Disk:integer;Simvol:char);
Var i : integer;
Label 1;
begin
Case Disk of
0: begin {Печать на экран}
if (NP > 0) then write(' ':NP);
for i:=1 to NZ do write(Simvol);
if (n>=1) then writeln; {Перевод курсора на след.строку}
goto 1
end;
1: begin {Печать на диск}
if (NP > 0) then write(Fw,' ':NP);
for i:=1 to NZ do write(Fw,Simvol);
if (n>=1) then writeln(Fw); {Перевод курсора на след.строку}
goto 1
end
end;
1: end;
Procedure Tab1;
begin
writeln(Fw,'':2,'Решение уравнения методом');
writeln(Fw,'':5,'Ньютона');
writeln(Fw);
writeln(Fw,'':7,'Исходные данные');
writeln(Fw,'':2,'Уравнение :',s);
writeln(Fw,'':2,'Расчет выполнил:',FIO);
writeln(Fw,'':2,'Группа:','':3,nGr);
writeln(Fw);
writeln(Fw,'':7,'Результаты расчета');
Lin(1,30,1,1,'-');
writeln(Fw,'':1,'Итерация : xk : f(xk)');
Lin(1,30,1,1,'-');
end;
Procedure Tab2;
begin
writeln(Fw);
writeln(Fw,'':2,'Корень уравнения',xk:10:4);
writeln(Fw);
Lin(1,3,0,1,'-');
write(Fw,'':1,'*** Конец расчета ***');
Lin(1,3,0,1,'-');
end;
end.