Sunteți pe pagina 1din 5

Laborator Metode Numerice

METODE NUMERICE -Laborator Cap.2


Rezolvarea ecuațiilor
1. Metoda bisectoarei (a înjumătățirii intervalului)
Curs -Prof. dr.ing. Ioana Opriș
Laborator -MBA drd.ing Cris an Copilău

Fie f(x)=0 :R →R

Există [xinf, xsup] € R a.î f(xinf) * f(xsup) < 0 → rădăcina căutată xR € [xinf, xsup]

Principiul metodei de calcul

Ca aproximație inițială se consideră că rădăcina este la jumătatea intervalului [xinf, xsup]

iterația i

𝑥 = (1)

xinf=xinf
xsup=x1

dacă:
f(xinf) * f(xsup) > 0 → ∄ xR €[xinf, xsup]

atunci:
xinf=x1
xsup=xsup

dacă:
f(xinf) * f(xsup) > 0 → Ǝ xR €[xinf, xsup]

atunci:
xinf=xinf
xsup=x1

εc= │ │ <=εadm (2)

unde:
xi este valoarea rădăcinii în iterația curentă,
xi-1 este valoarea rădăcinii în iterația anterioară

1
Laborator Metode Numerice
Calculul se oprește când eroarea rela vă de calcul îndeplinirea condiția impusă.

εc= │ │ <=εadm

dacă: εc > εadm atunci: (1)


dacă: εc <= εadm atunci: STOP

Func a f(x)=f(x) = (𝑒 , ) − 40

Rezolvare prin calcul tabeler EXCEL

1. Metoda bisectoarei
Determinarea radacinilor ec. Algebrice si Transcedente

Ex.1(a)
f(x)= 500/x*(1-exp(-0.2*x))-40
xR € [10,13]
Er[%]= 0.10%
test=f(xinf)*f(xsup)
i xinf xsup xR f(xinf) f(xsup) test Ea Er[%]
1 10.0000 13.0000 11.5000 3.2332 -4.3951 1
2 10.0000 11.5000 10.7500 3.2332 -0.8808 1 0.7500 6.98%
3 10.0000 10.7500 10.3750 3.2332 1.0938 0
4 10.7500 11.5000 11.1250 1.0938 -0.8808 1 0.0337 0.30%
5 10.7500 11.1250 10.9375 1.0938 0.0869 0
6 11.1250 11.5000 11.3125 0.0869 -0.8808 1 0.3750 3.31%
7 11.1250 11.3125 11.2188 0.0869 -0.4018 1 0.0938 0.84%
8 11.1250 11.2188 11.1719 0.0869 -0.1587 1 0.0469 0.42%
9 11.1250 11.1719 11.1484 0.0869 -0.0362 1 0.0234 0.21%
10 11.1250 11.1484 11.1367 0.0869 0.0252 0
11 11.1484 11.1719 11.1602 0.0252 -0.0362 1 0.0117 0.11%
12 11.1484 11.1602 11.1543 0.0252 -0.0055 1 0.0059 0.05%
13 11.1484 11.1543 11.1514 0.0252 0.0099 0
14 11.1543 11.1602 11.1572 0.0099 -0.0055 1 0.0029 0.03%
15 11.1543 11.1572 11.1558 0.0099 0.0022 0 0.0015 0.01%
16 11.1572 11.1602 11.1587 0.0022 -0.0055 1 0.0029 0.03%
17 11.1572 11.1587 11.1580 0.0022 -0.0017 1 0.0007 0.01%
18 11.1572 11.1580 11.1576 0.0022 0.0003 0 0.0004 0.00%
19 11.1580 11.1587 11.1583 0.0003 -0.0017
Radacina= 11.1583

f(x)=500/x*(1-exp(-0.2*x))-40
4

0
10 10.2 10.4 10.6 10.8 11 11.2 11.4 11.6 11.8 12 12.2 12.4 12.6 12.8 13
-2

-4
2

-6
Laborator Metode Numerice

Ex.1(b)
f(x)= x^2-9.2*x+15.4
xR € [2,3]
Er[%]= 0.10%

i xinf xsup xR f(xinf) f(xsup) test Ea Er[%]


1 2.0000 3.0000 2.5000 1.0000 -3.2000 1.0000
2 2.0000 2.5000 2.2500 1.0000 -1.3500 1.0000 0.2500 11.11%
3 2.0000 2.2500 2.1250 1.0000 -0.2375 1.0000 0.1250 5.88%
4 2.0000 2.1250 2.0625 1.0000 0.3656 0.0000
5 2.1250 2.2500 2.1875 0.3656 -0.2375 1.0000 0.0625 2.86%
6 2.1250 2.1875 2.1563 0.3656 0.0602 0.0000
7 2.1875 2.2500 2.2188 0.0602 -0.2375 1.0000 0.0313 1.41%
8 2.1875 2.2188 2.2031 0.0602 -0.0896 1.0000 0.0156 0.71%
9 2.1875 2.2031 2.1953 0.0602 -0.0150 1.0000 0.0078 0.36%
10 2.1875 2.1953 2.1914 0.0602 0.0225 0.0000
11 2.1953 2.2031 2.1992 0.0225 -0.0150 1.0000 0.0039 0.18%
12 2.1953 2.1992 2.1973 0.0225 0.0038 0.0000
13 2.1992 2.2031 2.2012 0.0038 -0.0150 1.0000 0.0020 0.09%
14 2.1992 2.2012 2.2002 0.0038 -0.0056 1.0000 0.0029 0.13%
15 2.1992 2.2002 2.1997 0.0038 -0.0009 1.0000 0.0015 0.07%
16 2.1992 2.1997 2.1995 0.0038 0.0014 0.0000
17 2.1997 2.2002 2.2000 0.0014 -0.0009 1.0000 0.0002 0.01%
18 2.1997 2.2000 2.1998 0.0014 0.0002 0.0000
19 2.2000 2.2002 2.2001 0.0002 -0.0009 1.0000 0.0001 0.01%
20 2.2000 2.2001 2.2000 0.0002 -0.0004 1.0000
radacina= 2.200

Ex.1(c)
f(x)= x^3+x-1
xR € [0,1]
Er[%]= 0.0010

i xinf xsup xR f(xinf) f(xsup) test Ea Er[%]


1 0.0000 1.0000 0.5000 -1.0000 1.0000 1.0000
2 0.0000 0.5000 0.2500 -1.0000 -0.3750 0.0000
3 0.5000 1.0000 0.7500 -0.3750 1.0000 1.0000 0.2500 33.33%
4 0.5000 0.7500 0.6250 -0.3750 0.1719 1.0000 0.3750 60.00%
5 0.5000 0.6250 0.5625 -0.3750 -0.1309 0.0000
6 0.6250 0.7500 0.6875 -0.1309 0.1719 1.0000 0.0625 9.09%
7 0.6250 0.6875 0.6563 -0.1309 0.0125 1.0000 0.0313 4.76%
8 0.6250 0.6563 0.6406 -0.1309 -0.0611 0.0000
9 0.6563 0.6875 0.6719 -0.0611 0.0125 1.0000 0.0156 2.33%
10 0.6563 0.6719 0.6641 -0.0611 -0.0248 0.0000
11 0.6719 0.6875 0.6797 -0.0248 0.0125 1.0000 0.0078 1.15%
12 0.6719 0.6797 0.6758 -0.0248 -0.0063 0.0000
13 0.6797 0.6875 0.6836 -0.0063 0.0125 1.0000 0.0039 0.57%
14 0.6797 0.6836 0.6816 -0.0063 0.0030 1.0000 0.0020 0.29%

3
Laborator Metode Numerice
15 0.6797 0.6816 0.6807 -0.0063 -0.0016 0.0000
16 0.6816 0.6836 0.6826 -0.0016 0.0030 1.0000 0.0010 0.14%
17 0.6816 0.6826 0.6821 -0.0016 0.0007 1.0000 0.0005 0.07%
18 0.6816 0.6821 0.6819 -0.0016 -0.0005 0.0000
19 0.6821 0.6826 0.6824 -0.0005 0.0007 1.0000 0.0002 0.04%
20 0.6821 0.6824 0.6823 -0.0005 0.0001 1.0000 0.0001 0.02%
21 0.6821 0.6823 0.6822 -0.0005 -0.0002 0.0000
22 0.6823 0.6824 0.6823 -0.0002 0.0001 1.0000 0.0001 0.01%
23 0.6823 0.6823 0.6823 -0.0002 0.0000 0.0000
24 0.6823 0.6824 0.6823 0.0000 0.0001 1.0000 0.0000 0.00%
radacina= 0.6823

4
Laborator Metode Numerice
Algoritm MATLAB
function[xR]=Rad_Bisectoare(func,xinf,xsup,Er,maxiter)
% "func" este functia algebrica pentru care se cauta radacina
% definirea functiei se face inaintea apelarii algoritmului de calcul
% sau chiar in linia de comanda @(x)x^3+x-1
% [xinf, xsup] este intervalul in care se presupune ca se gaseste radacina
% Er este eroarea de calcul admisibila
% maxiter nr. maxim de iteratii in care se fac calcule
% "func" este functia pentru care se cauta radacina in intervalul [xinf,xsup]
% inainte de apelarea functie bisect
% se defineste func in linia de comanda astfel:
% func=@(x)..... ex. x^3+x-1 se va defini ca: func=@(x)x^3+2*x+1
% apoi se apeleaza functia
if (func(xinf)*func(xsup)<0)
iter=1;
xR=xinf;
xsupold=xsup;
xRold=xsup;
LI=0;
while iter<=maxiter
test=func(xinf)*func(xsup);
if(test<0)
%disp('test<0')
xRold=xR;
xR=(xinf+xsup)/2;
xsupold=xsup;
xsup=xR;
LI=0;
end
if(test>0)
xsup=xsupold;
xinf=xR;
LI=LI+1;
%disp('test>0')
end
Ec=abs((xR-xRold)/xR);
if(Ec<=Er)
disp("radacina este=" +xR)
disp('gata')
break
end
if (LI>3)
disp('limitele intervalului de cautare tb modificate')
break
end
iter=iter+1;
end
else
disp('nu sunt radacini in interval')
end

S-ar putea să vă placă și