Seminarul republican al profesorilor de informatică
Raisa Miron, grad didactic superior
Utilizarea calculului aproximativ la rezolvarea problemelor
de matematică şi informatică
II. Metoda coardei ( secantei ) de rezolvare a ecuaţiilor.
Fie că se cere de rezolvat ecuaţia
f(x)=0 pe intervalul [a, b]
Condiţiile necesare pentru a putea fi aplicată metoda coardei sunt:
1. Funcţia f -să fie continuă pe [a, b];
2. f(a)*f(b)<0
Pentru simplitate vom presupune că f(a)<0 si f(b)>0.
Ca şi la metoda injumătăţirii, metoda coardei constă în incadrarea (în izolarea), succesivă, a soluţiei
ecuaţii în intervale din ce în ce mai fine (mai mici).
Dacă la metoda înjumătăţirii se ia drept punct interior mijlocul intervalului [a, b], atunci la metoda
coardei se ia punctul de intersecţie al coardei ce trece prin punctele (a, f(a)) şi (b, f(b)) cu axa OX.
Fie că acest punct are coordonatele (c, 0). Pentru a afla abscisa c, scriem ecuaţia dreptei ce trece prin
punctele (a, f(a)) şi (b, f(b)).
y f (a ) xa
Ecuaţia dreptei este
f (b) f (a) b a
f (a) ca f ( a) * (b a)
înlocuim x=c si y=0, primim c a f (b) f (a )
f (b) f (a) b a
f (a) * (b a ) a * f (b) a * f (a) b * f (a ) a * f (a ) a * f (b) b * f (a )
c a
f (b) f (a ) f (b) f (a ) f (b) f (a)
deci
a * f (b) b * f (a )
c
f (b) f (a)
La metoda coardei deasemanea vom construi trei şiruri în felul următor:
a 0 * f (bo ) b0 * f ( a 0 )
ao=a, bo=b, co
f (b0 ) f ( a 0 )
Dacă f(co)=0 atunci co- soluţie
a * f (b1 ) b1 * f (a1 )
altfel Dacă f(co)< 0 atunci a1=co; b1= bo, iar c1 1
f (b1 ) f (a1 )
a1 * f (b1 ) b1 * f (a1 )
altfel a1=ao; b1= co, iar c1
f (b1 ) f (a1 )
ş.a.m.d.
Dacă f(cn-1)=0 atunci cn-1- soluţie
altfel
Dacă f(cn-1)< 0 atunci an=cn-1; bn= bn-1, iar
a * f (bn 1 ) bn 1 * f ( a n 1 )
c n n 1
f (bn 1 ) f (a n 1 )
altfel an=an-1; bn= cn-1, iar
a * f (bn 1 ) bn 1 * f ( a n 1 )
c n n 1
f (bn 1 ) f (a n 1 )
Ilustrarea grafică:
Pagina 1 din 6
Seminarul republican al profesorilor de informatică
Raisa Miron, grad didactic superior
Fundamentarea matematică a metodei coardei
Teoremă: Dacă funcţia f: [a, b] R, este o funcţie continuă, f(a)* f(b) < 0 şi funcţia f -are o singură
rădăcină pe [a, b], atunci şirul (cn) are limită şi limita sa este soluţie a ecuaţiei f(x)=0.
(vezi demonstrarea [Bib.1] )
Din construcţia şirurilor (an), (bn) şi (cn) sunt adevărate inegalităţile :
(1) an < bn , pentru n N şi (2) an < cn < bn , pentru n N
f (bn 1 )
(1. an –bn =cn-1 - bn-1 = (a n 1 bn 1 ) ) sau
f (bn 1 ) f (a n 1 )
f (a n 1 )
an –bn =an-1 - cn-1 = (a n 1 bn 1 )
f (bn 1 ) f (a n 1 )
an-bn are acelaşi semn ca an-1 –bn-1, pentru n an< bn )
(2. an –cn < 0, bn – cn >0 an < cn < bn )
Din construcţia şirurilor şi din (1) şi (2) că
a0 a1 a2 ... an < cn < bn bn-1 ... b0, pentru n N
Deoarece şirurile (an) şi (bn) sunt monotone şi mărginite, conform teoremei Weierstrass, rezultă că ele
sunt convergente.
Este convergent şi şirul (cn) şi lim cn = A iar f(A)=0
n
Deci şirul (cn) converge la A, iar A -soluţia ecuaţiei f(x)=0.
Problemă:
cum se determină limita şirului (cn) şi cât de repede converge şirul (cn) la A.
Mai precis, fiind dat un > 0, cîţi termeni consecutivi ai şirului trebuie calculaţi pentru a obţine un
n astfel încât:
cn A ?
Există iarăşi două modalităţi de aflare aproximativă a soluţiei A cu exactitatea
1. Estimarea aposteriori a erorii.
2. Estimarea apriori a erorii;
Estimarea aposteriori a erorii:
Pagina 2 din 6
Seminarul republican al profesorilor de informatică
Raisa Miron, grad didactic superior
constă în obţinerea unei inegalităţi de forma
c n A const * c n c n 1
În plus la ipotezele cerute în metoda coardei, vom mai presupune că
f: [a, b] R este derivabilă pe (a, b) şi există m, M >0 astfel încât
m f ( x ) M pentru x ( a, b)
Folosind definirea şirului (cn) şi teorema lui Lagrange putem demonstra [Bib. 1], că
M
A c n 1 c n c n 1 ,
m
unde M, m respectiv supremul şi infimul derivatei f (x) în valoare absolută pe intervalul (a, b)
M
Atunci cum numai c n c n 1 , rezultă că şi c n A şi drept soluţie aproximativă a ecuaţiei
m
f(x)=0 cu aproximaţia poate fi luată cn.
Deci pentru a rezolva ecuaţia f(x)=0 prin metoda coardei cu estimarea aposteriori a erorii, trebuie:
1. să citim a si b şi să verificăm, dacă se satisfac toate cerinţele pentru a aplica metoda coardei;
(f –funcţie continuă, f(a)*f(b)<0 si funcţia f – admite doar o rădăcină pe [a, b], adică e monotona)
2. să găsim derivata funcţiei f;
3. să găsim infimul şi supremul derivatei f (x) în valoare absolută pe intervalul (a, b).
4. să calculăm termenii şirului (cn) până când
M
c n c n 1
m
5. drept soluţie a ecuaţiei cu aproximaţia vom lua cn.
Exempu 1:
Să se rezolve ecuaţia ln( x*sin(x))=0, pe intervalul [0.5, 1.5]
(Răspuns: Solutie exacta x=1.114157, =0.0000001)
Rezolvare:
Fie f(x)=ln(x*sin(x))
1) f – este o funcţie continuă pe [0.5, 1.5]
(0.5 29o , 1.5 85o sin(0.5) 0.47 sin (85o) 0.997))
2) f(0.5) = ln (0.5* 0.49) < 0
f(1.5) = ln (1.5 * 0.98) >0
3) f (x) = 1/ (x* sin(x)) * (sin(x)+ x * cos (x)) f (x)>0 , x [0.5, 1.5]
că ecuaţia admite o soluţie pe [0.5, 1.5]
Din 1) – 3) putem aplica metoda secantei
Trebuie să mai calculăm M şi m.
Ne folosim de programul Analiza numerică, autor Rojco Valentin
M1= 3,9, m2= 0,8
Programul în limbajul Pascal:
program prob1_metoda_secantei_aposteriori;
uses crt;
Pagina 3 din 6
Seminarul republican al profesorilor de informatică
Raisa Miron, grad didactic superior
var a,b,c,c1,eps,M1,m2: real; u:boolean;
function f(x:real):real;
begin
f:=ln(x*sin(x));
end;
begin clrscr;
a:=0.5; b:=1.5;M1:=3.9; m2:=0.7;
writeln('Introduceti exactitatea:');
readln(eps);
c:=a; u:=true;
repeat c1:=c;
c:=(a*f(b)-b*f(a))/(f(b)-f(a));
if f(c)=0 then begin
writeln([Link],'-solutia exacta a ecuatiei');
writeln(‘f(c)=’, f(c):15:10);
u:=false; break; end
else
if f(c)<0 then a:=c
else b:=c;
until M1*abs(c-c1)/m2<eps;
if u then begin writeln([Link],'-solutia aproximativa a ecuatiei');
writeln(‘f(c)=’, f(c):15:10); end;
readln;
end.
Rezultatul: Introduceti exactitatea:
0.0000001
1.114157 – solutie exacta a ecuatiei
f(c)= 0.0000000000
Exerciţiu 1 (pagina 33 [Bib.1])
De rezolvat următoarele ecuaţii f(x)=0, pe [a, b] cu estimarea aposterioară a erorii:
=0.000001
Rezultatele:
a) sqr(x)+x-1=0, pe intervalul [-1, 1]; x0.6180339887
b) 2*sqr(x)+5*x-1=0, pe intervalul [-1, 1];
c) x-cos(x)=0, pe intervalul [0, /2];
d) ln(x)+x=0, pe intevalul [1/e, 1];
e) 1/(exp(x))+3*x=0, pe intervalul [-1, 1];
Estimarea apriori a erorii:
Fie f: [a, b] R
În plus la ipotezele cerute în metoda coardei, vom mai presupune că
a) f- este convexă pe [a. b];
b) f -este strict crescătoare;
c) f - este derivabilă şi f (a) >0
Dacă f este o funcţie convexă, atunci f(cn) 0 pentru n bn=b , an =cn-1 pentru n 1 şi şirul
(cn) poate fi calculat, folosind relaţia de recurenţă
Pagina 4 din 6
Seminarul republican al profesorilor de informatică
Raisa Miron, grad didactic superior
c n 1 * f (b) b * f (c n 1 )
cn sau
f (b) f (c n 1 )
f (c n 1 )
c n c n 1 * (b c n 1 )
f (b) f (c n 1 )
( vezi demonstrarea [Bib.1], [Bib.2])
Ilustrarea geometrică
În aceste condiţii are loc inegalitatea:
f (a ) n
A c n (1 ) (b a) ,
f (b)
unde A-soluţia ecuaţiei f(x)=0, pe intervalul [a, b]
f (a ) n
Din inegalitatea (1 ) (b a ) îl calculăm pe n.
f (b)
Calculând n-termeni consecutivi ai şirului (cn), drept soluţie cu aproximaţia putem lua termenul cn.
De exemplu
De rezolvat ecuaţia x2+x-1=0 pe intervalul [0, 1]
2
f(x)=x +x-1
f(x)=2*x+1 – pozitivă pe [0, 1] f – monoton crescatoare pe [0,1]
f(0)=1
f(x)=2 f – convexă pe [0, 1]
Deci funcţia F(x) este strict crescatoare pe intervalul [0, 1] şi convexă. Deaceea putem utiliza metoda
coardei cu estimarea apriori a erorii. Îl calculăm pe n din inegalitatea
f (a) n
(1 ) (b a )
f (b)
f(a)=1, f(b)=3
1 n 2 n ln ln
(1 ) * (1 0) ( ) n n 1
3 3 2 ln 2
ln
3 3
Sau n=trunc(ln(eps)/ln(2/3))+1.
Pagina 5 din 6
Seminarul republican al profesorilor de informatică
Raisa Miron, grad didactic superior
Calculând n-termeni consecutivi ai şirului (cn), ultimul termen cn va fi soluţia aproximativă cu
exactitatea
Programul în Pascal.
program prob2_metoda_secantei_apriori;
uses crt;
var a,b,c,eps: real; i,n:integer;
function f(x:real):real;
begin
f:=sqr(x)+x-1;
end;
begin clrscr;
a:=0; b:=1;
writeln('Introduceti exactitatea:');
readln(eps); c:=a;
n:=trunc(ln(eps)/ln(2/3))+1;
For i:=1 to n do
c:=c-(f(c)*(b-c))/(f(b)-f(c));
writeln([Link],'-solutia aproximativa a ecuatiei');
writeln('f(c)=',f(c):15:10);
readln;
end.
Rezultatul:
0.6180339887 – solutia aproximativa a ecuatiei
f(c)= 0.0000000000
Exerciţiu 1 (pagina 37 [Bib.1 ])
De rezolvat următoarele ecuaţii f(x)=0, pe [a, b] prin metoda coardei cu estimarea aprioră a erorii
=0.000001 Rezultatele:
a) x2+6x-1=0, pe intervalul [-1, 1] x0.1622776601
3
b) 2x +5sin(x)-1=0, pe intervalul [0, 1]
1
c) x3-cosx=0, pe intervalul [ , ]
2 2
1
d) x*ln(x)+x-1=0, pe intervalul [ , e]
e
e) e3x+6x=0, pe intervalul [-1, 1]
f) x3+x+1=0, pe intervalul [-1, 1]
Literatură:
1. George-Daniel Mateescu, Ileana-Carmen Mateescu
Analiza numerică, manual pentru clasa XII
Editura Petrion Bucureşti
2. Sergiu Corlat
Calculul numeric, informatica clasa XII-a, Chişinău 2004
Pagina 6 din 6