Documente Academic
Documente Profesional
Documente Cultură
CALCULE NUMERICE
( xx 0)
f (x) = f (x0) + (x x0) f(x0) +
2!
( xx 0) (n)
f
(x0) + .
n!
f(x0) + +
(3.1)
Expresia de mai sus poate fi generalizata pentru a descrie o functie cu mai multe variabile f (x,y,) in
jurul unui punct (x0,y0, . ):
f (x,y,) = f (x0,y0,) + (x x0) fx (x0, y0, )
2
( xx 0)
+(y y0) fy (x0, y0, . . . ) +
2!
2
( y y 0)
2!
2( xx 0) ( y y 0)
2!
f ( xi ) lim
h 0
f ( xi h) f ( xi )
h
,
(3.3)
f (x)
reprezint derivata funciei
raportul
adic:
f ( xi h ) f ( xi )
h
n punctul
xi
f (x)
,
f ( xi )
f ( xi h ) f ( xi )
h
n punctul
xi
(3.4)
unde h este distana dintre dou noduri.
Desigur, raportul
f (x)
n punctul
xi
f ( xi h) f ( xi )
h
f ( xi )
, adic:
f ( xi h ) f ( xi )
h
(3.5)
unde
xi
xi
f (x)
se obtine daca derivata funciei
f ( x i h ) f ( xi h )
2h
f ( xi )
f ( x i h ) f ( xi h )
2h
(3.6)
f (x)
Dezvoltarea n serie Taylor a funciei
( x xi )
( x xi ) 2
f ( x ) f ( xi )
f ( xi )
f ( xi )
1!
2!
xi
, este:
.
(3.7)
x xi h
x xi h
, se obin relaiile:
f ( xi h ) f ( x i )
h
h2
f ( xi )
f ( xi )
1!
2!
(3.8)
f ( xi h ) f ( x i )
h
h2
f ( xi )
f ( xi )
1!
2!
.
(3.9)
Prin scderea parte cu parte a celor dou relaii (3.8) i (3.9), se obine:
f ( xi )
f ( x i h ) f ( xi h )
2h
,
(3.10)
f ( xi )
f ( xi h) 2 f ( xi ) f ( xi h)
h2
.
(3.11)
f (x) xi 1 xi h xi xi 1 xi h
(
).
n practic, de cele mai multe ori funcia este cunoscut numeric. De aceea, nainte de a se trece la
derivarea propriu-zis, se recomand o analiz mai atent a datelor numerice (obinute din experimentri
sau dintr-un grafic), eliminarea punctelor care nu se ncadreaz ntr-o anumit distribuie sau efectuarea
unei uniformizri a datelor prin media a trei valori consecutive. De asemenea, pentru obinerea derivatei
de ordinul doi, se recomand folosirea formulelor corespunztoare derivatei de ordinul unu, aplicate la
valorile derivatei de ordinul unu, dup ce acestea au fost uniformizate
Folosind dezvoltarea in serie Taylor, si combinatia de f i +1 si f i 1 , obtinem :
h2i1 f +h2ih h 2i1
= f i h2i f i1
hi hi1 (hi + hi1)
i+ 1
(3.12)
Aceasta este formula derivatei de ordinul intai cu trei puncte pentru valorile neuniformizate ale
derivatei.
y f (x)
Fie
o funcie definit i integrabil pe intervalul
determinat o primitiv, F, a integralei definite
[ a, b ]
S f ( x)dx
a
(3.13)
sau dac aceast primitiv exist, dar are o expresie analitic foarte complicat, folosirea n calculele
ulterioare este foarte greoaie. De aceea, pentru calculul integralei (9.3.1) se stabilesc formule
aproximative simple i uor de folosit pe orice calculator.
Formula:
b
a
f ( x) dx f ( x)
i 0
S
Formula :
h n1
( f i f i 1 ) 0(h 2 )
2 i 1
(3.15)
Putem optine o cuadratura cu o precizie mai mare, daca aplicam Interpolarea Lagrange functiei
f(x) in regiunea [xi1, xi+1], avem :
( xx i+1 )
f(x) =
( xx i+1 )
( xx i )
h3 )
( xx i ) + ( xx i1 ) + ( xx i1 ) + O(
(3.16)
Daca vom efectua integrala pentru fiecare pereche, impreuna cu integral data de ecuatia de mai
sus, obtinem regula lui Simpson :
5
h n / 21
( f 2 j 4 f 2 j 1 f 2 j 2 ) 0(h 4 )
3 i 0
(3.17)
METODA BISECTIEI
Fie o functie f : [a, b], functia f fiind continua pe intervalul [a, b]. Presupunem ca exista x =
xr
apartinand intervalului [a, b], astfel incat f(x) = 0. Deoarece nu exista o radacina in intervalul [a, b],
f(a)f(b) < 0. Se poate imparti intervalul in doua parti egale cu x 0 = (a+b) / 2. Apoi avem f(a) f( x 0 )
< 0 sau f( x 0 ) f(b) < 0. Daca f(a) f( x 0 ) < 0,
x 1 = (a + x 0 ) / 2, astfel incat
x 1 = ( x 0+ b ) /
2.
METODA NEWTON
Aceast metod propus de ctre Isaac Newton n anul 1669 i apoi revzut de ctre Joseph Raphson n
1690 i mai apoi de ctre Thomas Simpson n 1740 este o metod iterativ de calcul a rdcinilor
ecuaiilor algebrice sau transcendente. Ea este una dintre cele mai rspndite metode folosite n acest
scop i n plus, algoritmul bazat pe aceast metod poate fi folosit i la determinarea minimului sau
maximului unei funcii prin determinarea zeroului primei derivate a funciei, n metode de optimizare.
Metoda Newton-Raphson folosete primii doi termeni ai dezvoltrii n serie Taylor a
unei funcii f(x) n vecintatea unui zero al funciei.
Dezvoltnd funcia f(x) n serie Taylor n vecintatea unui punct x = x r obinem:
f ( x r ) f (x) + ( x r x) f `(x)+ = 0,
(3.18)
unde x poate fi considerat o valoare de incercare pentru radacina
xk
f ( x k+1 ) = f ( x k ) + ( x k+1
) f`( x k ) 0,
(3.19)
care este :
x k+1 = x k
xk
xk
xk
fk / f
(3.20)
cu k = 0, 1, . Noi am folosit notatia f k =f k+1 .
Aceasta schema este cunoscuta ca metoda lui Newton.
x
Pentru a vedea cum functioneaza aceasta metoda intr-un program, luam functia f (x) = e
2
ln x x
xk
x k x k1
fk
) f k / - f k1 .
(3.21)
Aceasta reprezinta metoda secantei, sau metoda discreta a lui Newton.
1.2 Metoda de calculare a derivatei de ordinul intai cu trei puncte pentru valorile neuniformizate ale
derivatei.
public static double[] firstOrderDerivative2
(double x[], double f[], int k) {
int n = x.length-1;
double[] y = new double[n+1];
double[] xl = new double[k+1];
double[] fl = new double[k+1];
double[] xr = new double[k+1];
double[] fr = new double[k+1];
// Calculate the derivative at the field points
double h0 = x[1]-x[0];
double a0 = h0*h0;
for (int i=1; i<n; ++i) {
double h = x[i+1]-x[i];
double a = h*h;
double b = a-a0;
double c = h*h0*(h+h0);
y[i] = (a0*f[i+1]+b*f[i]-a*f[i-1])/c;
h0 = h;
a0 = a;
}
for (int i=1; i<=(k+1); ++i) {
xl[i-1] = x[i]-x[0];
fl[i-1] = y[i];
xr[i-1] = x[n]-x[n-i];
fr[i-1] = y[n-i];
}
y[0] = aitken(0, xl, fl);
y[n] = aitken(0, xr, fr);
return y;
}
public static double aitken(double x, double xi[],
double fi[]) {...}
2. INTEGRAREA NUMERICA
2.1 Un exemplu de evaluare a integralei cu metoda Simpson pentru f(x)=sin(x).
Include java.lang.*;
public class Integral {
static final int n = 8;
public static void main(String argv[]) {
10
}
else {
a = x;
dx = b-a;
}
k++;
}
System.out.println("Iteration number: " + k);
System.out.println("Root obtained: " + x);
System.out.println("Estimated error: " + dx);
}
// Metoda pentru a furniza functia f(x)=exp(x)*log(x)-x*x.
public static double f(double x) {
return Math.exp(x)*Math.log(x)-x*x;
}
}
3.2 Un exemplu de determinare a radacinii prin metoda lui Newton pentru f(x)=exp(x)*ln(x)-x*x=0.
include java.lang.*;
public class Newton {
public static void main(String argv[]) {
double del = 1e-6, a = 1, b = 2;
double dx = b-a, x=(a+b)/2;
int k = 0;
while (Math.abs(dx) > del) {
dx = f(x)/d(x);
x -= dx;
k++;
}
System.out.println("Iteration number: " + k);
System.out.println("Root obtained: " + x);
System.out.println("Estimated error: " + dx);
}
public static double f(double x) {...}
// Metoda de a furniza derivata f'(x).
public static double d(double x) {
return Math.exp(x)*(Math.log(x)+1/x)-2*x;
}
}
12
13