Documente Academic
Documente Profesional
Documente Cultură
La informatic
A elaborat
Elevul(a) clasei a 12 A
Agachi Nichita
Chiinu 2014
Scopul lucrarii:
METODA BISECIEI
Una dintre cele mai simple metode de determinarea a unei soluiei
a ecuaiei f(x)=0 este metoda biseciei. Metoda presupune determinare
x=0.50000000
x=0.75000000
x=0.87500000
x=0.93750000
x=0.96875000
x=0.98437500
x=0.99218750
x=0.99609375
f(x)=
f(x)=
f(x)=
f(x)=
f(x)=
f(x)=
f(x)=
f(x)=
2.37758256
2.48168887
2.51599686
2.52930508
2.53508020
2.53775880
2.53904724
2.53967892
Program P1.2
var a,b,c,eps:real;
function f(x:real) :real;
begin f:= cos(x) +x+1;end;
begin a:=2; b:=4; eps:= 0,00001;
repeat
c:=(b+a)/2;
writeln (`i=`, i:3,` x=` ,c:10:8,` f(x)=` ,f(c):12:8);
if f(c)=0 then break
else if f(c)*f(a)>0 then a:=c else b:=c;
until abs (b-a)<eps;
end.
foaia neagr:
x=3.00000000 f(x)=
x=3.50000000 f(x)=
x=3.75000000 f(x)=
x=3.87500000 f(x)=
x=3.93750000 f(x)=
x=3.96875000 f(x)=
x=3.98437500 f(x)=
x=3.99218750 f(x)=
3.01000750
3.56354331
3.92944064
4.13210217
4.23786324
4.29177929
4.31898661
4.33265137
foaia negr:
x=0.50000000
x=0.75000000
x=0.87500000
x=0.81250000
x=0.78125000
x=0.76562500
x=0.77343750
x=0.77734375
f(x)= 6.62500000
f(x)= 0.67187500
f(x)= -2.20507813
f(x)= -0.77612305
f(x)= -0.05441284
f(x)= 0.30817032
f(x)= 0.12673712
f(x)= 0.03612655
Program P2.2
var a,b,c,eps:real;
function f(x:real) :real;
begin f:= x*x*x -25*x+19;end;
begin a:=2; b:=4; eps:= 0,00001;
repeat
c:=(b+a)/2;
writeln (`i=`, i:3,` x=` ,c:10:8,` f(x)=` ,f(c):12:8);
if f(c)=0 then break
else if f(c)*f(a)>0 then a:=c else b:=c;
until abs (b-a)<eps;
end.
foaia neagr:
Metoda coardelor
Metoda coardelor const in divizarea segmentului in pri proporionale,
proporia fiind dat de punctul de intersecie al coardei care unete
extremitile segmentului cu axa Ox. Aceasta metoda presupune alegerea in
calitate de aproximare a soluiei punctul determinat de interesecia dreptei
ce trece prin punctele (a,f(a)) si (b,f(b)) cu axa Ox. Pentru realizarea
metodei se stabilete extremitatea e a segmentului [a,b] prin care se va
duce o serie de coarde .Aceasta extremitate este determinat de condiia :
f(e)*f(e)>0.
Cealalt extremitate a segmentului [a,b] se consider aproximarea iniial
asoluiei.
Program P3.1;
var a,b,c,e,x:real;
i,n:integer;
function f(x:real):real;
begin f:= cos(x) +x+1;end;
begin a:=1;b:= 5;n:= 8;
{determinarea extremitatii fixe e si a aproximarii initiale x0}
c:=a-(f(a))/(f(b)-f(a))*(b-a);
If f(c)*f(a)>0 then begin e:=b ; x:=a; end
Else begin e:=a; x:=b; end;
{calculul iterativ al solutiei}
For i:=1 to n do
begin x:= (x-f(x))/(f(e)-f(x))*(e-x);
writeln (x:10:8,` `,f(x):12:8);
end;
end.
foaia negr:
x=-1.37166848 f(x)= -0.17385399
x=-1.04666739 f(x)= 0.45379168
x=-1.47180685 f(x)= -0.37297896
x=-0.93231310 f(x)= 0.66366505
x=-1.64332744 f(x)= -0.71579498
x=-0.75297873 f(x)= 0.97667647
x=-1.93911403 f(x)= -1.29916050
x=-0.48988530 f(x)= 1.39250153
Program P3.2
Var
Msup, minf, a,b,e,x,xnou,xvechi,eps:real;
Function f(x:real):real;
begin f:= cos(x) +x+1;
end;
begin a:=- 0.5; b:= 0.5; eps: =0. 00001;
Msup: =10; minf:= 5;
{determinarea extremitatii fixe e si a aproximarii initiale}
x:=a-(f(a))/(f(b)-f(a))*(b-a);
If f(x)*f(a)>0 then begin e:=b ; xnou:=a; end
Else begin e:=a; xnou:=b; end;
{calculul iterativ al solutiei}
Repeat
xvechi:= xnou;
Xnou:=xvechi-(f(xvechi))/(f(e)-f(xvechi))*(e-xvechi);
Writeln('x=', xnou:10:8,'f(x)=',f(xnou):12:8);
Until abs((Msup-minf)/minf*(xnou-xvechi))<eps;
End.
foaia negr:
x=-1.87758256
x=-1.24212506
x=-1.28828072
x=-1.28287717
x=-1.28349169
x=-1.28342156
x=-1.28342956
f(x)= -1.17957905
f(x)= 0.08066065
f(x)= -0.00950831
f(x)= 0.00108049
f(x)= -0.00012331
f(x)= 0.00001407
f(x)= -0.00000160
F2:= x*x*x-25*x+19=0
Program P4.1;
Var a,b,e,c,x: real ;
n,i :integer;
function f(x:real ):real;
foaia negr:
x=1.00000000
x=1.00000000
x=1.00000000
x=1.00000000
x=1.00000000
x=1.00000000
x=1.00000000
x=1.00000000
Program P4.2
f(x)= -5.00000000
f(x)= -5.00000000
f(x)= -5.00000000
f(x)= -5.00000000
f(x)= -5.00000000
f(x)= -5.00000000
f(x)= -5.00000000
f(x)= -5.00000000
Var
Msup, minf, a, b, e, x, xnou, xvechi, eps:real;
Function f(x:real):real;
begin f:= cos(x) +x+1;
end;
begin a:=- 0.5; b:= 0.5; eps: =0. 00001;
Msup: =10; minf:= 5;
{determinarea extremitatii fixe e si a aproximarii initiale}
x:=a-(f(a))/(f(b)-f(a))*(b-a);
If f(x)*f(a)>0 then begin e:=b ; xnou:=a; end
Else begin e:=a; xnou:=b; end;
{calculul iterativ al solutiei}
Repeat
xvechi:= xnou;
Xnou:=xvechi-(f(xvechi))/(f(e)-f(xvechi))*(e-xvechi);
Writeln('x=', xnou:10:8,'f(x)=',f(xnou):12:8);
Until abs((Msup-minf)/minf*(xnou-xvechi))<eps;
End.
foaia negr:
x=0.76767677
x=0.77863255
x=0.77889552
x=0.77890188
f(x)=
f(x)=
f(x)=
f(x)=
0.26049393
0.00624664
0.00015090
0.00000365
Concluzia:
n urma nfaptuirii acestei lucrri practice am analizat metoda
Biseciei i metoda Coardelor folosind Turbo Pascal.Am studiat
modul de cautare i afiare s fiecarei metode,observnd asemeneai
deosebirea acestora.Asemnarea const n restrngerea domeniului
de definiie,astfel ncit funcia s aib rdcina n noul bomeniu de
definiiei rezultatele sunt aproximativ identice.
Faptul ca irul aproximrilor succesive prin metoda Coardelor
converge ctre soluia exact implic urmtoarea concluzie:eroarea
soluiei calculate va fi invers proporional cunumarul de iteraii
efectuate.
Metoda Biseciei este una dintre cele mai sinmple metode de
determinare a unei soluii a ecuaiei F(x)=0,ea pesupune
determinarea punctului de mujloc(c) alunui segment([a,b]), apoi
calculul valorii funciei n acest punct(F(c)).