Professional Documents
Culture Documents
f (a ) f (b ) ≤ 0 şi, în acest caz, f(x) are pe [a,b] un număr impar de rădăcini reale (cel puţin una).
octave#1>[radacina,eabsoluta,k,valoare]=bisectie(f,a,b,delta,max)
# f=numele functiei; [a,b]=intervalul radacinii; delta=eroare;max=nr.iteratii
ya=feval("f",a);
yb=feval("f",b);
for k=1:max
c=(a+b)/2;
yc=feval("f",c);
if yc==0
a=c;
b=c;
elseif yb*yc>0
b=c;
yb=yc;
else
a=c;
ya=yc;
endif
if b-a < delta, break,endif
endfor
radacina=(a+b)/2;
eabsoluta=abs(b-a);
valoare=feval("f",c);
endfunction
Exemplul 1. Sa se determine radacina reala a ecuatiei f(x)=x^3-x-2=0, situata in intervalul (1,2) prin
metoda bisectiei si folosind 4 iteratii.
Pas0: Pentru ca f(1)*f(2)<0, in intervalul (1,2) se gaseste cel putin o radacina reala. Se imparte intervalul
in subintervalele (1,3/2) si (3/2,2) si se calculeaza produsele f(1)*f(3/2)=0.25 si f(3/2)*f(2)=-0.5
Pas1: ⇒ c1=3/2 si ca radacina se gaseste in intervalul (3/2,2) care se imparte la randul sau in doua
subintervale (3/2,1.75) si (1.75,2); se calculeaza produsele f(3/2)*f(1.75)= -0.20117 si f(1.75)*f(2)=
6.4375
Pas2: ⇒ c2=1.75 si ca radacina se gaseste in intervalul (3/2,1.75) care se imparte la randul sau in doua
subintervale (3/2, 1.6250) si (1.6250,1.75); se calculeaza produsele f(3/2)*f(1.625)= -0.083252 si
f(1.625)*f(1.75)= 1.0719
Pas3: ⇒ c3=1.625 ca radacina se gaseste in intervalul (3/2, 1.6250) care se imparte in doua subintervale
(3/2, 1.5625) si (1.5625, 1.625); se calculeaza produsele f(3/2)*f(1.5625)= -0.031525 si f(1.5625)*f(1.
625)= 0.16797
Pas4: ⇒ c4=1.5625 si ca radacina se gaseste in intervalul (3/2, 1. 5625)
Se repeta rationamentul pana cand . . . . . . . . . . . . . . . . . . . . . → x=1.5214
Aceiasi problema cu folosirea functiei Octave bisectie (impunem o eroare absoluta de 0.0001 si maximum
100 de iteratii).
Program Octave pentru problema din Exemplul 1
octave#1> function y=f(x), y=x.^3-x-3; endfunction
octave#2> [radacina,eabsoluta,valoare]=bisectie("f",1,2,0.0001,100)
Rezulta: radacina = 1.5214, eabsoluta = 6.1035e-05, valoare = 1.4649e-06
ipoteza f (a ) f (b ) ≤ 0 şi, în acest caz, f(x) are pe [a,b] un număr impar de rădăcini reale (cel puţin una).
Principiul metodei : . Algoritmul de calcul iterativ este următorul (presupunem ca functia este convexa):
Pas 1: Se scrie ecuatia dreptei AB, unde A(a,f(a)) si B(b,f(b)) si se intersecteaza AB cu axa Ox . Fie C1(c1 ,0)
punctul de intersectie. Se calculeaza f(c1). Daca f(c1)=0, c1 este radacina cautata, daca f(c1)≠0 atunci
se calculeaza produsele f(a)* f(c1) si f(b)* f(c1) si se pastreaza pentru calculele urmatoare acel interval
(a, c1) sau (c1,b) pentru care produsul functiei la capete este negativ; presupunem ca acel interval este
(a, c1).
Pas 2: Se scrie ecuatia dreptei AB1, unde A(a,f(a)) si B1(c1, f(c1)) si se intersecteaza AB1 cu axa Ox . Fie
C2(c2 ,0) punctul de intersectie. Se calculeaza f(c2). Daca f(c2)=0, c2 este radacina cautata, daca f(c2)≠0
atunci se calculeaza produsele f(a)* f(c2) si f(c2)* f(c1) si se pastreaza pentru calculele urmatoare acel
interval (a, c2) sau (c2, c1) pentru care produsul functiei la capete este negativ;
Pas 3: Se continua procedeul si se obtine sirul c1, c2, . . ., cn , . . pana cand | ck+1- ck|≤εx sau |f(ck)| ≤εf
unde k specifică ordinul iteraţiei, iar εx este abaterea impusă asupra diferenţei soluţiilor aproximative
din sirul solutiilor la două iteraţii succesive (k-1) şi k. Erorile admisibile εf şi/sau εx sunt impuse de
către utilizator !
Functie Octave pentru implementarea metodei secantei
Exemplul 2. Sa se determine radacina reala a ecuatiei x^3-x-2=0, situata in intervalul (1,2) folosind
metoda secantei si 2 iteratii.
Pas0: Pentru ca f(1)*f(2)<0, in intervalul (1,2) se scrie ecuatia dreptei care trece prin punctele A(1,-2) si
B(2,4) (y+2)/(4+2)=(x-1)/(2-1) si se intersecteaza cu axa Ox ;se obtine x=4/3
Pas1: ⇒ c1=4/3 ; se calculeaza produsele f(1)*f(4/3)= 1.9259 si f(4/3)*f(2)= -3.8519; rezulta ca radacina
se gaseste in intervalul (4/3,2); se scrie ecuatia dreptei care trece prin punctele A1=(4/3, -0.96296) si
B(2,4): (y+0.96296)/(4+0.96296)=(x-4/3)/(2-4/3) si se intersecteaza cu axa Ox ;se obtine x=1.6244
Pas2: ⇒ c1=1.6244 ; se calculeaza produsele f(4/3)*f(1.6244)= -0.63720 si f(1.6244)*f(2)= 2.6475;
rezulta ca radacina se gaseste in intervalul (4/3, 1.6244); se scrie ecuatia dreptei care trece prin punctele
A1=(4/3, -0.96296) si B1(1.6244, 0.66186): (y+0.96296)/(0.66186+0.96296)=(x-4/3)/(1.6244-4/3) si
se intersecteaza cu axa Ox ;se obtine x=1.5058
Se repeta rationamentul pana cand . . . . . . . . . . . . . . . . . . . . . → x=1.5214
Aceiasi problema cu folosirea functiei Octave secanta (impunem o eroare absoluta de 0.0001 si maximum
100 de iteratii).
Program Octave pentru problema din Exemplul 1
octave#1> function y=f(x), y=x.^3-x-3; endfunction
octave#2> [radacina,eabsoluta,k,valoare]=secanta("f",1,2,0.0001,0.0001,100)
Rezulta: radacina = 1.5214, eabsoluta = 0.00011099, k = 5, valoare =-2.5467e-06
F (x ) = f (x ) + x , (7.3)
constată că dacă δ este rădăcina ecuaţiei iniţiale, adică f(δ) = 0, atunci aceasta va fi rădăcină şi pentru
ecuaţia (7.4), adică δ = F(δ). Fie x0∈[a,b] o valoare iniţială, aproximativă, pentru rădăcina exactă δ.
Metoda iterativă se defineşte prin şirul de iteraţii succesive:
x1 = F ( x0 ), x 2 = F ( x1 ), K , xk +1 = F ( x k ) . (7.5)
Condiţia de convergenţă: Presupunând că F(x) este derivabilă pe [a,b], şirul de iteraţii succesive
Dacă λ> 1, respectiv F ′ (x ) > 1 , şirul iterativ (7.5) diverge. Gradul de convergenţă al metodei este
xk +1 = (1 − α ) x k + α F ( x k ) = ϕ(x k ) . (7.7)
Inegalitatea (7.8) permite alegerea coeficientului subunitar α, care asigură convergenţa metodei. Se
Exemplul 3. Sa se rezolve ecuatia f(x)=0 unde f(x)=-x^2/4+1 folosind metoda aproximatiilor succesive cu
3 pasi de iteratie si valoarea de start a solutiei egala cu x0=1;
Pas0: Se verifica ca in jurul valorii de start |F’(x)|<λ<1 si se construieste functia auxiliara
F(x)= -x^2/4+x+1 si se rezolva ecuatia x=F(x) folosind schema
iterativa xk=F(x(k-1)) cu k=1,2,3, . . .
Pas1: x1=F(1)= 1.75
Pas2: x2=F(1.75)= 1.9844
Pas3: x3=F(1.9844)= 1.9999
Program Octave:
[k,p,err,P]=fixpt("F",4,0.0001,100)
Rezulta: k = 5, p = 2.0000, err = 6.1034e-05
P = 4.0000 1.7500 1.9844 1.9999 2.0000
Această metodă este cel mai frecvent utilizată pentru determinarea aproximativă a soluţiei unei
ecuaţii algebrice sau transcendente de forma f(x) = 0. Se admite că f(x) = 0 are în intervalul [a,b] o
singură rădăcină reală δ. În plus, se acceptă că derivatele f ′(x ) şi f ′′( x ) sunt funcţii continue şi
păstrează semn constant pe intervalul [a,b]. Formula iterativă a lui Newton este:
f (xk )
x k +1 = x k − , unde k = 0, 1, 2,K, n,K (7.9)
f ′( x k )
În cadrul metodei lui Newton, condiţia alegerii punctului de pornire x0 este următoarea:
x k +1 − x k ≤ ε x , (7.11)
Din punct de vedere grafic, această metodă poate fi descrisă astfel: plecând din punctul de
coordonate {xk , f (xk )}, se trasează o tangentă la curba f(x), panta tangentei fiind f ′( xk ) . Această
tangentă intersectează axa Ox în xk +1 care în mod uzual reprezintă o estimare îmbunătăţită a rădăcinii
faţă de estimarea precedentă xk . Procedeul se repetă plecând din punctul definit de coordonatele
{xk +1 , f (xk +1 )} .
Metoda lui Newton este mai rapid convergentă decât metoda substituţiilor succesive. Din acest
motiv, metoda lui Newton este preferată altor metode numerice de rezolvare a ecuaţiilor algebrice şi
transcendente, cu condiţia ca forma funcţiei f(x) să fie precizată analitic, iar derivata ei să nu fie prea
complicată.
Functie Octave pentru implementarea metodei Newton
Exemplul 4. Sa se determine radacina reala a ecuatiei f(x)=x^3-x-2=0, situata in intervalul (1,2) folosind
metoda lui Newton si 3 iteratii si valoarea de start x1=2
Pentru ca f(1)*f(2)<0, in intervalul (1,2) se calculeaza f’(x)=3*x^2-1 si construiste schema iterativa
xk+1=xk-f(xk)/f’(xk) cu k=1,2,3, . . .
Aceiasi problema cu folosirea functiei Octave newton (impunem o eroare absoluta de 0.00001 si maximum
50 de iteratii).
Program Octave pentru problema din Exemplul 1
octave#1> function y=f(x), y=x.^3-x-3; endfunction
octave#2> function y=df(x), y=3*x.^2-1; endfunction
octave#3> [p0,err,k,y]=newton("f","df",2,0.00001,0.0000001,50)
Rezulta: p0 = 1.5214, err = 2.6881e-06, k = 4, y = 3.6239e-11
4.2.2. METODA LUI NEWTON PENTRU DETERMINAREA RĂDĂCINII
UNEI ECUAŢII DE VARIABILĂ COMPLEXĂ
Fie ecuaţia:
f ( z ) = u ( x , y ) + i v ( x, y ) = 0 , (7.12)
de variabilă complexă z = (x + i y ) , unde funcţiile u(x,y) şi v(x,y) sunt precizate şi reprezintă partea
⎡⎛ ∂u ∂u ⎞ ⎛ ⎛ ∂u ⎞ 2 ⎛ ∂u ⎞ 2 ⎞⎤
x k +1 = x k + ⎢⎜⎜ v − u ⎟⎟ ⎜ ⎜ ⎟ + ⎜ ⎟ ⎟⎥ , pentru k = 0, 1, 2, K, n, K
⎢⎝ ∂y ∂x ⎠ ⎜ ⎝ ∂x ⎠ ⎜ ∂y ⎟ ⎟⎥
⎣ ⎝ ⎝ ⎠ ⎠⎦ ( xk , yk )
⎡⎛ ∂u ∂u ⎞ ⎛ ⎛ ∂u ⎞ 2 ⎛ ∂u ⎞ 2 ⎞⎤
y k +1 = y k + ⎢⎜⎜ − v − u ⎟⎟ ⎜ ⎜ ⎟ + ⎜ ⎟ ⎟⎥ , (7.13)
⎢⎝ ∂x ∂y ⎠ ⎜ ⎝ ∂x ⎠ ⎜ ∂y ⎟ ⎟⎥
⎣ ⎝ ⎝ ⎠ ⎠⎦
( xk , yk )
unde expresiile funcţiilor u = u (xk , y k ) şi v = v( x k , y k ) , respectiv ale derivatelor ∂u/∂x şi ∂u/∂y, din
parantezele drepte, se evaluează pentru xk şi yk. Relaţiile (7.13) sunt formulele lui Newton pentru cazul
x k +1 − x k ≤ ε x şi y k +1 − y k ≤ ε y (7.14)
unde εx şi εy sunt erorile admisibile impuse de către utilizator (aceste erori admisibile se pot alege egale).
Functii Octave pentru rezolvarea ecuatiilor algebrice si transcendente
fzero
Problema 5 .Găsiţi soluţia nenulă a ecuaţiei x = 1 − e −2 x , cu metoda lui Newton şi 4 zecimale exacte.
Sa se gaseasca de asemenea aceisi solutie cu 10 zecimale exacte folosind functia Octave fzero