Documente Academic
Documente Profesional
Documente Cultură
Fie f(x)=0 :R →R
Există [xinf, xsup] € R a.î f(xinf) * f(xsup) < 0 → rădăcina căutată xR € [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
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
Func a f(x)=f(x) = (𝑒 , ) − 40
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%
Ex.1(c)
f(x)= x^3+x-1
xR € [0,1]
Er[%]= 0.0010
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