Metode Numerice - Lucrarea de laborator 5 1 Lucrarea de laborator nr. 5 I. Scopul lucrării Rezolvarea ecuațiilor/sistemelor neliniare II. Conținutul lucrării 1. Familia de comenzi solve din MAPLE 2. Metoda bisecției 3. Metoda coardei 4. Metoda tangentei 5. Metoda punctului fix 6. Metoda Newton – cazul m-dimensional III. Prezentarea lucrării III.1. Familia de comenzi solve din MAPLE Spre deosebire de atribuiri, ecuațiile sunt expresii matematice simple care stabilesc relații între anumite variabile și/sau valori (fără a asocia vreo valoare explicită pentru variabilele conținute). Operatorul folosit este = (reamintim că în cazul atribuirii se utilizează : =). O familie de comenzi care folosesc ecuațiile ca parametrii este familia de comenzi solve. Forma generală a comenzii solve este: >solve(ecuatie, necunoscuta); sau >solve(ecuatii, neconoscute); MAPLE dispune de comenzi specializate pentru rezolvarea diverselor tipuri de ecuații (rezolvarea ecuațiilor în diverse mulțimi): fsolve: rezolvă ecuații aplicând aritmetica virgulei mobile isolve: rezolvă ecuații în mulțimea numerelor întregi msolve: rezolvă ecuații modulo m
32
Embed
Lucrarea de laborator nr. 5Mădălina Roxana Buneci Metode Numerice –Laborator 4 Rezultatele pe care le vom obține în secțiunile următoare pot fi comparate cu rezultatele comenzii
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Metode Numerice - Lucrarea de laborator 5
1
Lucrarea de laborator nr. 5
I. Scopul lucrării
Rezolvarea ecuațiilor/sistemelor neliniare
II. Conținutul lucrării
1. Familia de comenzi solve din MAPLE
2. Metoda bisecției
3. Metoda coardei
4. Metoda tangentei
5. Metoda punctului fix
6. Metoda Newton – cazul m-dimensional
III. Prezentarea lucrării
III.1. Familia de comenzi solve din MAPLE
Spre deosebire de atribuiri, ecuațiile sunt expresii matematice simple care
stabilesc relații între anumite variabile și/sau valori (fără a asocia vreo valoare explicită
pentru variabilele conținute). Operatorul folosit este = (reamintim că în cazul atribuirii
se utilizează : =). O familie de comenzi care folosesc ecuațiile ca parametrii este
familia de comenzi solve. Forma generală a comenzii solve este:
>solve(ecuatie, necunoscuta);
sau
>solve(ecuatii, neconoscute);
MAPLE dispune de comenzi specializate pentru rezolvarea diverselor tipuri de ecuații
(rezolvarea ecuațiilor în diverse mulțimi):
fsolve: rezolvă ecuații aplicând aritmetica virgulei mobile
isolve: rezolvă ecuații în mulțimea numerelor întregi
msolve: rezolvă ecuații modulo m
Mădălina Roxana Buneci Metode Numerice –Laborator
2
rsolve: rezolvă ecuații date prin relații de recurență
dsolve: rezolvă ecuații diferențiale ordinare
pdsolve: rezolvă ecuații cu derivate parțiale
linsolve: rezolvă sisteme de ecuații liniare; această comandă aparține pachetului
linalg, deci înainte de utilizare trebuie încărcat acest pachet sau comanda trebuie
apelată sub forma linalg[linsolve]. Parametrii acestei comenzi sunt: matricea
sistemului A, vectorul termenilor liberi b, și opțional un al treilea parametru, căruia i
se va atribui rangul matricei. Dacă vectorul termenilor liberi se înlocuiește cu o matrice
B, atunci comanda întoarce matricea X care verifică AX = B.
Exemple
> solve(cos(x)+y=9,x);
> solve({cos(x)+y=9, x+y-Pi/2=9},{x,y});
> solve(x^2-2*x+1,x);
> solve(x^2-2*x+7,x);
> dsolve({diff(y(t),t)+t=0, y(1)=2}, y(t));
> isolve(3*x+4*y=7);
> isolve(3*x+4*y=7,t);
> msolve({2*x+3*y=1,5*x-2*y=4},5);
> rsolve(f(n)=2*f(n-1)+3*f(n-2), f(k));
> with(linalg):
> A:=matrix(3,3,[1,2,3,6-8,7,8,1,0,1]);
( )arccos y 9
{ },y 9 x
2
,1 1
,1 6 I 1 6 I
( )y t t2
2
5
2
{ },x 1 4 _Z1 y 1 3 _Z1
{ },x 1 4 t y 1 3 t
{ },x 1 y 3
3
4( )f 0
1
4( )f 1 ( )-1 k
1
4( )f 0
1
4( )f 1 3k
Metode Numerice - Lucrarea de laborator 5
3
> b:=vector(3,[-7,2,3]);
> linsolve(A,b);
> linsolve(A,b,'r');
> r;
> B:=matrix(3,2,[-7,3,2,4,3,5]);
> linsolve(A,B);
> C:=matrix(2,2,[1,2,-5,-10]);
> d:=vector(2,[7,-35]);
> linsolve(C,d);
> e:=vector(2,[7,-34]);
> linsolve(C,e)
Ultimul sistem (sistemul Cx = b1) este incompatibil. În această situație MAPLE
întoarce constanta NULL. Această explică lipsa răspunsului la ultima comandă.
:= A
1 2 3
-2 7 8
1 0 1
:= b [ ], ,-7 2 3
, ,
-34
3
-58
3
43
3
, ,
-34
3
-58
3
43
3
3
:= B
-7 3
2 4
3 5
-34
3-2
-58
3-8
43
37
:= C
1 2
-5 -10
:= d [ ],7 -35
[ ],7 2 _t1
_t1
:= e [ ],7 -34
Mădălina Roxana Buneci Metode Numerice –Laborator
4
Rezultatele pe care le vom obține în secțiunile următoare pot fi comparate cu
rezultatele comenzii fsolve. Comanda fsolve admite un set de opțiuni. Specificarea lor
nu este obligatorie. Astfel forma generală a comenzii este:
> fsolve(ecuatii, necunoscute (opțional), alți parametrii opționali)
Opțiunile (parametrii opționali) sunt:
complex: caută rădăcinile ecuației în mulțimea numerelor complexe (în virgulă
mobilă).
fulldigits: previne micșorarea numărului de cifre semnificative pe măsură ce se
execută calculele; precizia evaluării crește dar viteză de execuție scade.
optiuni
maxsols = n: calculează cele mai mici n rădăcini; opțiunea are sens doar pentru
ecuațiile polinomiale, pentru că numai pentru acestea se calculează mai multe rădăcini.
interval: caută rădăcinile în intervalul dat; intervalul se specifică sub forma
a..b, sau x = a..b, sau {x = a..b, y = c..d, …}; intervalul se consideră închis. Dacă se
folosește împreună cu opțiunea complex, mulțimea de numere complexe în care se
caută soluția se specifică sub forma unei zone rectangulare din plan dată prin colțul
stânga-jos și colțul dreapta-sus: x = a +I*b..c +d* I (unde a≤c și b≤d).
starting_values: specifică valori inițială pentru o variabilă, sau pentru lista
variabilelor; specificarea se face, de exemplu, sub forma x = a sau {x = a, y = b}, sau
[a, b]. Dacă se utilizează această opțiune nu se mai pot specifica explicit variabilele.
avoid specifică valorile excluse la aplicarea algoritmului de rezolvare
(aproximare). Specificarea se face, de exemplu, sub forma avoid= {x = a, x=b} sau
avoid={ {x = a, y = b},{x=c,y=d} }sau avoid={[a, b]}.
Exemple
> fsolve(tan(sin(x))=1,x,fulldigits);
> fsolve(tan(sin(x))=1,x);
> fsolve(x^4-1,x);
> fsolve(x^4-1,x,0..4);
0.9033391108
0.9033391108
,-1.000000000 1.000000000
Metode Numerice - Lucrarea de laborator 5
5
> fsolve(x^4-1,x,complex);
> fsolve(x^4-1,x,complex, maxsols=2);
> Digits:=20;
> fsolve(x^2=2,x=0..infinity);
> fsolve(x^2=2,x=0..infinity,fulldigits);
III.2. Metoda bisecției (metoda înjumătățirii intervalului)
Fie f : [a,b] R, o funcție continuă cu proprietatea că
f(a)f(b) < 0.
Atunci există cel puțin o rădăcină x* (a,b) a ecuației f(x)=0. Pentru găsirea rădăcinii
se micșorează la fiecare pas intervalul în care funcția își schimbă semnul. Metoda
bisecției presupune înjumătățirea la fiecare pas a acestui interval. Astfel
se determină mijlocul c = 2
ba al intervalului (a,b).
dacă f(c)f(a)<0, atunci se continuă algoritmul cu intervalul [a,c]
dacă f(c)f(b)<0, atunci se continuă algoritmul cu intervalul [c,b]
dacă f(c) =0 s-a determinat o rădăcină a ecuației f(x) = 0.
Se construiește astfel un șir de intervale (In)n , In = [an, bn], cu lungimea lui In egală cu
jumătate din lungimea lui In-1. Fiecare din aceste intervale conține o soluție a ecuației
f(x) = 0. Presupunem că se dă o precizie >0. Considerăm că cn mijlocul intervalului In
este o aproximație satisfăcătoare a soluției ecuației f(x) = 0 dacă lungimea lui In este
mai mică decât . Dacă notăm Ln = bn - an lungimea intervalului In, avem Ln = 1
2Ln-1
= ... = n
1
2L0 =
n
1
2b-a. Ca urmare Ln dacă și numai dacă
n
1
2b-a sau echivalent
n
ln b a
ln 2
.
1.000000000
, , ,-1.000000000 -1.000000000 I 1.000000000 I 1.000000000
,-1.000000000 -1.000000000 I
:= Digits 20
1.4142135623730950488
1.4142135623730950488
Mădălina Roxana Buneci Metode Numerice –Laborator
6
Algoritm
Date de intrare:
f continuă, a,b cu f(a)f(b)<0
(precizie)
Date de ieșire:
c mijlocul intervalului In = [an, bn] cu | an-bn |< (c este o aproximație a unei
rădăcini x* (a,b) a ecuației f(x) = 0 cu eroarea absolută x*-c 2
).
nmax:=
ln b a
ln 2
+1;
pentru j = 0, 1, ...., nmax execută
c: =2
ba ;
dacă f(c) = 0 atunci j : = nmax +1
altfel dacă f(c)f(a)<0 atunci b : = c;
altfel a : = c;
sfârșit dacă
sfârșit dacă
sfârșit pentru
Rata convergenței pentru metoda bisecției este liniară (r = 1, C = 1
2).
Procedură MAPLE
> bisectie:=proc(f,A,B,epsilon)
local c,a,b,nmax,j;
a:=A;b:=B;
nmax:=floor(ln(abs(b-a)/epsilon)/ln(2))+1;
for j from 0 to nmax do
c:=(a+b)/2;
if f(c)=0 then a:=c;b:=c;else
if evalf(f(c)*f(a))<0 then b:=c else a:=c end if end if
end do;
c:=(a+b)/2;
return c
end proc;
Utilizăm această procedură pentru determinarea rădăcinilor reale ecuației:
Metode Numerice - Lucrarea de laborator 5
7
x8 –3x+3 = 0.
Reprezentăm grafic funcția
x->x8 –3x+3
pentru a localiza rădăcinile.
> plot(x^8-3*x-3,x,color=black);
> plot(x^8-3*x-3,x=-5..5,color=black);
> plot(x^8-3*x-3,x=-2..2,color=black);
> plot(x^8-3*x-3,x=-1.5..1.5,color=black);
Mădălina Roxana Buneci Metode Numerice –Laborator
8
Se observă că ecuația are două rădăcini reale. Una în intervalul (-1.5, 0) și alta în
intervalul (1,1.5).
> f:=x-> x^8-3*x-3:
> bisectie(f,1,3/2,10^(-3));
> evalf(bisectie(f,1,3/2,10^(-3)));
> bisectie(f,1,1.5,10^(-3));
> bisectie(f,-1.5,0,10^(-3));
> fsolve(f(x),x);
> evalf(bisectie(f,1,3/2,10^(-10)));
> evalf(bisectie(f,1,-3/2,10^(-10)));
III.3. Metoda coardei
Fie f : [a,b] R, o funcție continuă cu proprietatea că
f(a)f(b) < 0.
Rădăcina a ecuației f(x)=0 se caută ca și în cazul metodei bisecției prin micșorarea la
fiecare pas a intervalului în care funcția își schimbă semnul. Metoda coardei presupune:
5207
4096
1.271240234
1.271240234
-0.8801879883
,-0.8800582880 1.271068437
1.271068437
-0.8800582880
Metode Numerice - Lucrarea de laborator 5
9
se determină punctul c în care coarda AB intersectează axa Ox, unde A(a,f(a))
și B(b,f(b)).
dacă f(c)f(a)<0, atunci se continuă algoritmul cu intervalul [a,c]
dacă f(c)f(b)<0, atunci se continuă algoritmul cu intervalul [c,b]
dacă f(c) =0 s-a determinat o rădăcină a ecuației f(x) = 0.
Să determinăm coordonatele punctului C de intersecție a dreptei AB cu axa Ox, unde
A(a,f(a)) și B(b,f(b)) .
Ox: y = 0
AB:
afbf
afy
ab
ax
Dacă C(c,0) =AB Ox, atunci
c = a - afbf
ab
f(a)
Teoremă. Fie f : [a, b] R o funcție de două ori derivabilă cu proprietățile:
f’(x) 0, f”(x) 0, oricare ar fi x [a, b] și f(a)f(b) < 0. Atunci unica soluție a ecuației
f(x) = 0 poate fi obținută ca limită a șirului strict monoton din [a, b] definit prin:
x0 = a, xn = xn-1 -
bfxf
xf
1n
1n
(xn-1-b), dacă f(a)f”(a)<0
și
x0 = b, xn = xn-1 -
afxf
xf
1n
1n
(xn-1-a), dacă f(b)f”(b)<0
b c1 c2 a
Mădălina Roxana Buneci Metode Numerice –Laborator
10
Dacă m1 > 0, M1 > 0 sunt astfel încât m1 |f’(x)| M1, atunci unica soluției, x*, a
ecuației satisface inegalitățile:
|x*-xn|
1
n
m
xf
|x*-xn| 1nn1
11 xxm
mM
Semnificație geometrică. Fie f : [a, b] R o aplicație de două ori derivabilă
cu f’(x)0, f”(x) 0 oricare ar end if x[a, b], f(a)f(b)<0, și fie
x0 = a, xn = xn-1 -
bfxf
xf
1n
1n
(xn-1-b), dacă f(a)f”(a)<0
și
x0 = b, xn = xn-1 -
afxf
xf
1n
1n
(xn-1-a), dacă f(b)f”(b)<0
Atunci șirul (xn)n converge la x* unica soluție a ecuației f(x) = 0.
Cazul 1. f(a)f”(a) 0: pentru orice n 1, xn reprezintă abscisa punctului de
intersecție a axei Ox cu coarda BCn-1 unde B(b,f(b)) și Cn-1(xn-1, f(xn-1)). Așadar avem
subcazurile
1.1 f > 0 (f strict crescătoare)
1.2 f < 0 (f strict descrescătoare)
x0 = a x1 x2
b
1.1. f” > 0, f(a)
0
Metode Numerice - Lucrarea de laborator 5
11
Cazul 2. f(b)f”(b) 0 (sau echivalent f(a)f”(a) 0) : pentru orice n 1, xn
reprezintă abscisa punctului de intersecție a axei Ox cu coarda ACn-1 unde A(a,f(a)) și
Cn-1(xn-1, f(xn-1)). Așadar avem subcazurile
2.1. f > 0 (f strict descrescătoare)
2.2. f < 0 (f strict crescătoare)
x0 = a x1 x2 b
1.2. f” 0, f(a) 0
a x2 x1 x0 = b
2.1. f” > 0, f(b) 0
Mădălina Roxana Buneci Metode Numerice –Laborator
12
Algoritm
Date de intrare:
f de două ori derivabilă pe [a,b], cu f (x) 0, f”(x) 0 pentru orice x și
f(a)f(b)<0
(precizie)
Date de ieșire:
xN aproximație a unicei rădăcini x* (a,b) a ecuației f(x) = 0, unde
x0 = a, xn = xn-1 -
bfxf
xf
1n
1n
(xn-1-b), dacă f(a)f”(a)<0
x0 = b, xn = xn-1 -
afxf
xf
1n
1n
(xn-1-a), dacă f(b)f”(b)<0
iar N este cel mai mic număr natural cu proprietatea că xN –xN-1
a x2 x1 x0 = b
2.2 f” 0, f(b) 0
Metode Numerice - Lucrarea de laborator 5
13
dacă f(a) f”(a) 0 atunci
x1: = b ; x2: = a;
cât timp | x1-x2 | execută
x1: = x2;
x2 : = x1 -
f x1
f x1 f b(x1-b),
sfârșit cât timp,
altfel
x1: = a ; x2: = b;
cât timp | x1-x2 | execută
x1: = x2;
x2 : = x1 -
f x1
f x1 f a(x1-a);
sfârșit cât timp,
sfârșit dacă,
x2 reprezintă xN unde N este cel mai mic număr natural cu proprietatea că
xN –xN-1 .
Procedură MAPLE
> mcoarda:= proc(f,a,b,epsilon)
local x1, x2;
if evalf(f(a)*(D@@2)(f)(a))<0 then
x1:=b; x2:=a;
while evalf(abs(x1-x2))>=epsilon do
x1:=x2;
x2:= x1-f(x1)*(x1-b)/(f(x1)-f(b))
end do;
else
x1:=a; x2:=b;
while evalf(abs(x1-x2))>=epsilon do
Mădălina Roxana Buneci Metode Numerice –Laborator
14
x1:=x2;
x2:= x1-f(x1)*(x1-a)/(f(x1)-f(a))
end do;
end if;
return x2
end proc;
Aplicăm această procedură pentru determinarea rădăcinilor reale ale ecuației:
x8 –3x+3 = 0.
În secțiunea precedentă rădăcinile au fost localizate în intervalele (+1.5,0) și (1,1.5).
> f:=(x-> x^8-3*x-3);
> mcoarda(f,1,1.5,10^(-3));
> mcoarda(f,-1.5,0,10^(-3));
> fsolve(f(x),x);
> mcoarda(f,1,1.5,10^(-10));
> mcoarda(f,-1.5,0,10^(-10));
III.4. Metoda tangentei
Metoda tangentei este utilizată pentru determinarea unei rădăcini a ecuației f(x)
= 0. Presupunem că f este derivabilă și că derivata nu se anulează. Rădăcina ecuației
este determinată ca limita unui șir. Se pleacă de la un punct x0 dat. Presupunând că s-a
construit termenul xn-1, termenul xn se determină ca fiind abscisa intersecției dintre
tangenta la graficul funcției în xn-1 și axa Ox.
:= f x x8 3 x 3
1.270281421
-0.8741520730
,-0.8800582880 1.271068437
1.271068437
-0.8800582876
Metode Numerice - Lucrarea de laborator 5
15
Ecuația tangentei în xn-1 este:
y – f(xn-1) = f (xn-1)(x – xn-1)
Deci intersecția cu axa Ox se află rezolvând sistemul
n-1 n-1 n-1y- f(x ) f (x ) x-x
y 0
În consecință ,
xn = xn-1 -
n 1
n 1
f x
f x
.
Convergența șirului este determinată de termenul inițial x0. Următoarea
teoremă stabilește condiții suficiente pentru convergența metodei tangentei.
Teoremă (Metoda tangentei). Fie f : [a, b] R o aplicație de două ori
derivabilă cu f’(x)0, f”(x) 0 oricare ar end if x[a, b] și f(a)f(b)<0. Atunci ecuația
f(x) = 0 are o unică soluție x*. x* poate end if obținută ca limită a șirului (xn)n definit
prin:
xn = xn-1 -
n 1
n 1
f x
f x
, n 1
unde x0 [a, b] este ales astfel încât f(x0)f”(x0) > 0. În plus, oricare ar end if n 1 au
loc următoarele inegalități:
|x* - xn|
1
n
m
xf
xn xn-1
Mădălina Roxana Buneci Metode Numerice –Laborator
16
|x* - xn| 21nn1
2 xxm2
M
unde m1 = x [a,b]
f xinf
și M2 = x [a,b]
f xsup
.
Rata convergenței este pătratică.
Semnificație geometrică. Fie f : [a, b] R o aplicație de două ori derivabilă
cu f’(x)0, f”(x) 0 oricare ar end if x[a, b], f(a)f(b)<0, și fie
xn = xn-1 -
n 1
n 1
f x
f x
, n 1
unde x0 [a, b] este ales astfel încât f(x0)f”(x0) > 0. Atunci șirul (xn)n converge la x*
unica soluție a ecuației f(x) = 0. Pentru orice n 1, xn reprezintă abscisa punctului de
intersecție a axei Ox cu tangenta la graficul lui f în punctul de coordonate (xn-1, f(xn-1)).
Deoarece f’ și f” nu se anulează pe [a, b], rezultă că sunt fie strict pozitive fie strict
negative. Așadar avem
Cazul 1. f” > 0 (f strict convexă)
1.1. f’ > 0 (f strict crescătoare)
1.2. f’ < 0 (f strict descrescătoare)
x2 x1 x0
1.1. f’ > 0, f” > 0
Metode Numerice - Lucrarea de laborator 5
17
Cazul 2. f” < 0 (f strict concavă)
2.1.f’ > 0 (f strict crescătoare)
2.2. f’ < 0 (f strict descrescătoare)
x0 x1 x2
1.2. f’ 0, f” > 0
x0 x1 x2
2.1. f’ 0, f” 0
x2 x1 x0
2.2. f’ 0, f” 0
Mădălina Roxana Buneci Metode Numerice –Laborator
18
Deci pentru aplicarea metodei tangentei în rezolvarea ecuației f(x) = 0 trebuie stabilite
intervalele de monotonie și intervalele de convexitate/concavitate pentru funcția f.
Dacă a și b sunt capetele unui astfel de interval și dacă f(a)f(b)<0, atunci se alege în
intervalul [a, b] un punct x0 astfel încât f(x0)f”(x0)>0. Șirul construit rin metoda
tangentei, având termenul inițial x0 converge la unica rădăcină a ecuației f(x) = 0,
situată în intervalul [a, b].
Algoritm
Date de intrare:
f - în condițiile 1.1,1.2,2.1 sau 2.2
x0 - f(x0)f”(x0)>0
0 (precizia –determină condiția de oprire a iterațiilor)
Date de ieșire: xN cu proprietatea că N este cel mai mic număr natural pentru care
xN – xN-1 |2 < .
unde (xn)n este șirul corespunzător metodei tangentei (xN este considerat o aproximație
satisfăcătoare a unicei soluții a ecuației f(x)=0)
x1 := x0;
x2 : = x1 - 1xf
1xf
;
cât timp | x2 – x1 |2 execută
x1 := x2;
x2 : = x1 - 1xf
1xf
;
sfârșit cât timp
Prezentăm în continuare o variantă a acestui algoritm pentru cazul în care f nu verifică
neapărat condițiile suficiente de convergență. Introducem ca dată suplimentară de
intrare numărul maxim de termeni din șir ce urmează a end if calculați (Nmax).
Condiția de oprire se transformă
| xn - xn-1 |2 < sau n > Nmax
x1 := x0;
Metode Numerice - Lucrarea de laborator 5
19
x2 : = x1 - 1xf
1xf
;
n : = 1;
cât timp (| x2 – x1 |2 ) și (n Nmax) execută
x1 := x2;
x2 : = x1 - 1xf
1xf
;
n : = n + 1;
sfârșit cât timp
Trebuie verificat la ieșirea din ciclu dacă f(x1) 0. Dacă problema este bine
condiționată, aceasta condiție va asigura acuratețea aproximației.