Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Durata
Activitatea elevilor
Metoda de
nvmnt
2 min
Momentul organizatoric
Se stabilete prezena i se verific dac sunt asigurate condiiile didactico-materiale
utile desfurrii leciei.
Raporteaz absenii.
Conversaia
Evaluare
7 min
Operatorii sunt:
a.
combinaii de cifre i litere cu o ordine bine stabilit;
b.
simboluri sau cuvinte cheie prin care se reprezint operaiile;
c.
definii printr-un nume i o list de parametrii;
2. Stabilii valoarea de adevr a afirmaiei de mai jos:
Funcia este un program care poate s execute operaii complexe i care
furnizeaz un rezultat ce poate fi folosit ca operand ntr-o expresie.
3. Atribuii fiecrui tip de operator din prima coloan exemplul corect
prezentat n coloana a doua:
Numerici
&, +
Logici
>, <, >=,
<=, <>
Text
AND,
OR, NT
Relaionali +, -, *, /,
%
4. Macrocomanda este:
1.b
2.A
3. 1 4
23
31
42
4. O secven de comenzi de aciuni
supra unui obiect din baza de date
care se execut ca rspuns la un
eveniment declanat de acionarea
unui obiect de interfa.
5. F
test de parcurs
conversaie
Conversaia,
explicaia
scris
2 min
Exerciiul
Conversaia
Practic
f()
f()
Gsirea rdcinilor reale ale f(x)=0 implic dou etape:
1. Separarea
(sauxizolarea) rdcinilor, adic stabilirea
bi
Dac trecem la limit n inegalitatea(**), obinem (f())20 de unde f()=0, adic este rdcina ecuaiei
f(x)=0.
n practic numrul de iteraii este finit, de aici rezult c rdcina gsit este aproximativ:
f(xi), sau bi-ai .
Estimarea aprirori a erorii o realizm din relaia:
bn an
ba
.
2n
ba
, adic :
2n
n ln((b a ) / ) / ln 2 1
a n bn 2 x n 1 x n .
x:=(a+b)/2;
end;
bisect_apost:=x;
end;
function bisect_apriori(a,b,e:real;var n:integer):real;
label 1;
var x:real;
i:integer;
begin
n:=trunc(ln((b-a)/e)/ln(2))+1;
for i:=1 to n do
begin
x:=(a+b)/2;
if f(x)=0 then goto 1;
if f(a)<0 then if f(x)<0 then a:=x else b:=x
else if f(x)<0 then b:=x else a:=x;
end;
1: bisect_apriori:=x;
end;
begin
clrscr;
write('Introduceti a : '); readln(a);
write('Introduceti b : '); readln(b);
write('Introduceti e : '); readln(e);
if f(a)*f(b)=0
then if f(a)=0 then writeln(a:0:6) else writeln(b:0:6)
else if f(a)*f(b)<0 then
begin
writeln('bisect_apost=',bisect_apost(a,b,e):0:6,'numarul de iteratii=',n);
writeln('bisect_apriori=',bisect_apriori(a,b,e):0:6,'numarul de iteratii=',n);
end;
end.
x ai
y f (ai )
bi ai
f (bi ) f (ai )
se poate obine coordonata punctului de intersecie x i al coardei cu axa absciselor
xi
ai f (bi ) bi f (ai )
f (bi ) f ( ai )
Dup un anumit numr de pai se obine, fie o rdcin exact =xi, astfel nct
f(xi)=0, fie o secven de intervale
[a0, b0], [a1, b1] [ai, bi]
Cu ai+1 = ai , bi+1= xi , dac f(ai)*f(bi)0
y
f(bi)
x
f(ai)
ai i
x
bi
b (cazul f'' (x) < 0 se reduce la cazul analizat dac ecuaia este rescris n
form - f(x) = 0). Atunci curba = f(x) este concav i se afl mai jos de coarda sa . Sunt posibile dou
situaii: 1) f() > 0 (Fig. 2, ) i 2) f(a) < 0 (Fib 2, b).
Fig. 2, , b.
n primul caz captul al segmentului rmne nemicat, dar iteraiile consecutive:
x0 = b;
(1)
formeaz un ir mrginit, monoton descresctor cu proprietate:
n cazul al doilea rmne nemicat captul b, dar iteraiile consecutive:
x0 = ;
(2)
formeaz un ir mrginit, monoton cresctor cu proprietate:
Generaliznd, conchidem:
1. Nemicat este acel capt al intervalului pentru care semnul funciei f () coincide cu semnul derivatei
de ordinul doi f'' ();
2. Aproximri consecutive xn se afl n acea parte de rdcin unde funcia f () are semnul opus
semnului derivatei de ordinul doi f'' ().
Pentru oprire a procesului iterativ putem folosi sau condiia f(xn) < , sau condiia xn xn - 1 <., unde eroare absolut iniial dat.
program Metoda_coardelor;
var a,b,e : real;
n : integer;
function f(x:real) : real;
begin
f:=sqr(cos(x))-x/4
end;
function coarda(a,b,e:real):real;
var c0,c1,d:real;
begin
c0:=(a*f(b)-b*f(a))/(f(b)-f(a));
n:=0;
repeat
n:=n+1;
if f(a)<0 then if f(c0)<0 then a:=c0 else b:=c0
else if f(c0)<0 then b:=c0 else a:=c0;
c1:=c0;
c0:= (a*f(b)-b*f(a))/(f(b)-f(a));
d:=abs(c0-c1)
until (d<e) or (abs(f(c1))<e);
coarda:= c0;
end;
begin
writeln('introduceti intervalul[a,b]:');
write('introduceti a:');read(a);
write('introduceti b:');read(b);
write('introduceti e:');read(e);
if f(a)*f(b)<0 then writeln('x =',coarda(a,b,e):0:6,'n=',n);
else
if f(a)*f(b)=0 then begin if f(a)=0 then write('solutia este ,a:0:4)
else write('solutia este ,b:0:4) ;
end
else writeln(metoda nu poate fi aplicata pe acest interval);
end.
Metoda Newton
Se consider f:(-r, +r)R, i f()=0 ( este soluie a ecuaiei f(x)=0).
Presupunem c f este de dou ori derivabil pe intervalul (-r, +r) i exista m,M>0 astfel nct:
f ' ( x) m, x ( r , r ),
f " ( x) M , x ( r , r ).
Fiind dat x0 (-r, +r), construim elementul x1 ca fiind intersecia tangentei la graficul funciei f(x) n
punctul de coordonate (x0, f(x0)) cu axa Ox . Pentru a determina acest punct, vom scrie ecuaia dreptei
tangent la grafic n punctul de coordonate ( x0, f(x0)), i anume: y-f(x0)=f'(x0)(x-x0).
Dac n ecuaia de mai sus punem y=0, obinem un numr x1 reprezentnd abscisa punctului de intersecie
al dreptei cu axa Ox:
f(x0)=-f'(x0)(x1-x0) de unde rezult: x1= -(f(x0)/f'(x0))+x0
n general, repetnd construcia prin intersectarea dreptei tangent la grafic ntr-un punct de coordonate
(xn,f(xn)) cu axa Ox, se obine:
xn+1 = xn -(f(xn)/f'(xn))
Fig. 3.
n cazul metodei Newton nu este necesar ca s fie dat intervalul [, b], care s conin rdcina ecuaiei
f(x)=0, dar este suficient s se determine prima aproximare a rdcinii x = 0.
Utiliznd metoda Newton este important s inem cont de urmtoarea regul: n calitate de prima
aproximare 0 se alege acel capt al intervalului [, b] cu soluia separat (dac acesta se cunoate),
sau alt careva punct din apropiere la , pentru care f(x) are acelai semn ca i derivata de ordinul doi
f'' ().
Pentru oprire a procesului iterativ putem folosi sau condiia f(xn) < , sau condiia xn xn - 1 <.
Procesul iterativ converge la soluie dac f(0) * f'' (0) > 0.
program Metoda_Newton;
var a,b,e,x0:real;
n:integer;
function f(x:real):real;
begin
f:= sqr(cos(x))-x/4
end;
function fp(x:real):real;
begin
fp:=sin(2*x)-1/4;
end;
function fpp(x:real):real;
begin
fpp:=-2*cos(2*x);
end;
function Newton (x0,e:real):real;
var x,d:real;
begin
n:=0;
repeat
n:=n+1;
x:=x0-f(x0)/fp(x0);
d:=abs(x-x0);
x0:=x;
until (d<e) or (abs(f(x))<e);
newton:=x;
end;
begin
writeln('A=');readln(a);
writeln('B=');readln(b);
writeln('e=');readln(e);
if f(a)*f(b)=0 then if f(a)=0 then writeln('x=',a:0:6) else writeln('x=',b:0:6)
else if f(a)*f(b)<0 then
if (f(a)*fpp(a)<0) and (f(b)*fpp(b)<0) then writeln(metoda nu poate fi aplicat pe acest interval)
else begin
if f(a)*fpp(a)>0 then x0:=a else x0:=b;
writeln ('x=',newton (x0,e):0:6,'num de iteratii=',n);
end;
end.