You are on page 1of 32

Universitatea din Pitesti

Facultatea de Electronica,Comunicatii si Calculatoare


Specialiazarea: Electromecanica
Anul II

Metode Numerice
-Referat de laborator-

Coordonator : Conf. Univ. Dr. Cazacu Dumitru

Student:Serban Dumitru Gabriel


Laborator.1
Recapitulare Matlab
Scopul lucrarii:
Acest laborator prezinta modul de operare in
programul matlab a operatiilor elementare ( *,/,
+,-,operatii cu vectori, ridicarea la putere, transpunere,
operatii element cu element )

Operatii aritmetice cu vectori


x=[2,3,4,5,6,7]
y=[2,4,6,8,10,12]
Avem urmatoarele operatii:
Plus, minus,ridicare la putere, transpunere, operatii element cu
element.
x+y=[4,7,10,13,16,19]
x-y=[0,-1,-2,-3,-4,-5]
x.*y=[4,12,24,20,60,84]
x./y=[1,0.75,1.5,1.6,1.66,1.71]
length-reprezinta functia care arata elementele

Un circuit electric de curent continuu contine patru rezistoare cu


valoriile:
1,3,4,7 ohm. Ele sunt strabatute de curentii:
I1,I2,I3,I4, avand valoriile:
2,3,5,6, Sa se determine puterea disipata de cele patru rezistoare.
R=[1 3 4 7]
I=[2 3 5 6]
P=R.*I.*I
P=383

Matrici:
11 2 7
A= 4 7 1
5 3 8

3 5 2
B= 8 1 4
10 7 3

14 7 9
A+B= 12 8 5
15 10 11

8 3 5
A-B= 4 6 3
5 4 5

3.66 0.4 3.5


A./B= 0.5 7 0.25
0.5 0.42 2.66
119 106 51
A.*B= 78 34 39
119 84 46

11 4 5
A= 2 7 3
7 1 8

Functii elementare
radical(sqrt),exp,log,sin(x),cos(x),tan(x)
Valoarea maxima a unui curent este de 20 de amperi. Sa se
gaseasca valoarea lui efectiva:
I=14,1421

Imax=i* 2 =19,79

I=Imax/ 2

*se da urmatorul set de valori(t,U) reprezentand tensiunile


electrice masurate la anumite momente de timp:
t=[0.5 1 2.4 3 5]
U=[7 12 10 5 8]
Laborator.2

Studiul complexitatii unor algoritmi numerici

Scopul lucrarii:
*Calitatea unui algoritm se poate aprecia prin
eficienta lui temporala, adica timpul necesar
obtinerii solutiei si eficienta spatiala, adica
memoria necesara stocarii programului si a datelor

Aplicatie 1.
Determinarea eficientei temporale a algoritmului de obtinere a
produsului scalar pentru doi vectori cun n componente
n=1000
Timpul de executie in functie de numarul de componente
alevectorului:
t0=clock
i=1
for(n)=1000:2000:11000
x=rand(1,n)
y=rand(1,n)
p=sum(x.*y)
tf(i)=etime(clock,t0)
i=i+1
end
n=1000:2000:11000
plot(n,tf)
Consideram doua situatii:
-cand inhibam afisarea rezultatului
-in functie de dimensiunea matricei
tf=0,0160 cu n=1000;3000;5000
Se observa o dependenta a timpului fata de n datorita prezentei
lui rand, aproximam dependenta lui tf printr-un polinom de gradul
unu, pe care il reprezentam grafic in functie de n.
Aplicatie 2.
Sa se determine eficienta temporara a algoritmului de obtinere a
produsului a 2 matrici patratice aleatoare de dimensiuni n.
La matrice se scrie:
p=(x*y)
- ft fara=1,1710;11,1710;38,9060;89,00
I=7
n=100 300 500 700 900 1100
tf cu 0,0470;0,240;0,6410;1,5630;3,2040
Raport=99,6164
Aplicatia 3.
Determinarea erori relative de rotunjire. Algoritmul de calcul in
pseudocod
err=1
repeta
err=errr/2
Pana cand 1+err=1
Scriem err
Secventa reprezinta descrierea, in pseudocod a algoritmului de
determinare a acestei erori.
Secventa in Matlab este urmatoarea:
% calculeaza eroarea relativa de rotunjire
err=1
while(1+err)N=1
err=err/2
end
O alta secventa in care este reprezentat timpul este
urmatoarea:
t0=clock
t0 = 1.0e+03 * 2.0150 0.0060 0.0020 0.0080 0.0050
0.0149

>> i=1
i=1
>> for n=100:200:1200
x=rand(1,n)
y=rand(1,n)
VS=sum(x.*y)
trez(i)=etime(clock,t0)
i=i+1
end
VS = 267.0682
trez = 294.6390 298.8890 298.9510 298.9550 298.9590
299.2760
i=7
>> n=100:200:1200
n = 100 300 500 700 900 1100
>> plot(n,trez)

Laborator.3

Rezolvarea sistemelor de ecuatii algebrice


liniare folosind factorizarea
Choleski si LU
Scopul lucrarii:
Factorizarea unei matrici semnifica descompunerea acesteia
intr-un produ de doua matrici.
1.Factorizarea LU (Lawr-Upper)
In aceasta situatie matricea intr-un produs LU unde L este o
matrice inferioara triunghiulara iar U este superior triunghiulara.
Cele doua matrici L siu se obtin cu ajutorul comenzi [L,U]= ln(A),
pentru rezolvarea sistemului ax=b folosind factorizarea LU se
foloseste urmatoarea secventa:
Ax=b
[L,U]=ln*(A)
LU*x=b

{Ux=Lyy =b y=L/b
x=U / y =U / L/b

A=[1 1 5;2 1 1;1 3 1]


b=[-7;2;5]
[L,U]=ln(A)
y=L/b
x=U/y

1 1 5 x1 7
A*x= 2 1 1 * x2 = 2
1 3 1 x3 5

2.Factorizarea Choleski
Pentru a implementa aceasta factorizare folosim:
[Rp]=chol(A)
Parametrul p este un scalar care indica, daca A este o matrice
pozitiv definita.
p= 0 A pozitiv definita
p>0 A nu este pozitiv definita si ea nu pote fi factorizata Choleski
Aplicatia1.
8x1+2x2-2x3=1
2x1+8x2-2x4=2
-2x1+9x3+2x4=3
-2x2+2x3+9x4=4
* Sa se verifice daca sistemul este rezolvabil prinn Choleski in caz
afirmativ sa se rezolve. Verificarea sa se faca in doua moduri:
- folosind punctele 2 si 3 de la echivalenta data la curs
A=A*
t
A= A , det ( A) >0

A*x=B=4028
Aplicatia2.
A=[8 2 -2 0;2 8 0 -2;-2 0 9 2;0 -2 9 2]
B=[1;2;3;4]
[r,p]=chol(A)
A=A
Det (A)
Y=R/B
x=R/y A*x
Laborator.4
Factorizarea Choleski
(continare)

1.Consideram matricea patratica cu 100 de elemente aleatoare


Sa se calculeze timpul de executie cu metoda Gauss
t0=clock
A=rand(100,100)
b=rand(100,1)
x=A/b
F=etime(clock,t0)
F=0,4060, se observa ca timpul prin inversare este mai mare
decat timpul prin Gauss
x=inv(A)*b
F=0,2960
2.Reprezentand grafic timpul de executie pentru cele doua
metode pentru n de la 100-1000, cu pasul de 100
t0=clock
n=100:100:1000
A=(n,m)
b=rand(100;1)
t0=clock
for(n)=100:100:1000
A=rand(100:100)
b=rand(100;1)
x=A/b
end
F=etime(clock,t0)
plot(f)
Aplicatia.3
Sa se analizeze rezolvarea sistemului prin:
Choleski folosin punctele 1 si 3 de echivalenta din curs

Laborator.5
Stabilitatea numerica a
S.E.A.L
Scopul lucrarii:
*Sa se studiese stabilitatea urmatorului S.E.A.L, care este
perturbat la termenul liber b

{6 xx1+6.917 ; 1.152=6,543
1+1,152 x 2=1,095 Sistem initial

{6xx1+1,152
1+6,912 x 2=6,543
x 2=1,095 Sistem perturbat

t0=clock
A=[6 6.917;1.152]
b=[6.543;1.095] => x=6.5430
1.0950
x=A\b
Se observa ca perturbatia la zecimala a 3- a a unui coeficient al
matricei sistemului a condus la o variatie foarte mare a solutiei
sistemului.
Cazul 1- o solutie finita mica
Cazul 2- o solutie foarte mare
t0=clock
A=[6.6.912;1.152]
b=[6.543;1.095]
x=A\b
cond(A) => 1.7234 e+004
Secventa matlab pentru obtinerea solutiei sistemului
A= [4 0.24 -0.08;0.09 3 -0.15;0.004 -0.008 4]
B=[8 9 20]
If(abs(a(1,1))>abs(a(1,2))+abs(a(1,3)))
disp(a diagonal dominator)
else
disp(a nu este diagonal dominata)
end
for i=1:3
beta(i)=b(i)/a(i1,i)
else
alfa(i,j)=0
end
end
end
x0=[1 1,25 0,6]
x=beta+alfa*x0
k=1
x0=x
x=beta+alfa*x0
k=k+1
end
3 5
Daca = 10 sunt 3 solutii calculate Daca = 10 sunt 5
solutii calculate
Laborator.6
Siruri de iteratii

V-om considera eroarea de oprire a sirului de iteratii luand


urmatoarele valori:
1 2 7
10 10 -------------- 10

Pentru fiecare se va determina numarul de iteratii K, apoi se va


reprezenta graphic K in functie de eroare
Beta=(1,3)
Alfa=(3,3)
X0=(5,1)
Se observa ca cu cat eroarea este mai mare , numarul de ecuatii
creste

1. Sa se verifice daca sirul de iteratii este convergent, studiind


atat matricea A cat si matricea de iteratii alfa. Vedem daca
matricea sistemului este diagonal dominant:
A=[4 -1 0 0 0;-1 4 1 0 0;0 -1 4 -1 0;0 0 -1 4 -1;0 0 0 -1 4]

=[100;200;200;200;100]

X1=*x0+

{ }
4 >1+ 0+0
4>1+1+0+ 0
4>0+ 1+ 1+ 0 matricea este diagonal dominant
4>0+ 0+1+1
4 >0+0+ 01
x 11=100+ ( 4100200 )=300
1
x 2 =200+ (1100+4200+1200 )=1100

x 31 =200+ (1200+ 42001200 )=600


1
x 4 =200+ (1200+42001100 )=700

x 51=100+ (1200+4100 )=300

[]
1
0 000
4
1

[]
0000 25
4
50
1
0 000 50
= 4 =
50
1
00 00 25
4
1
0 00 0
4

Laborator.7

Regresia polinomiala

Scopul lucrarii:
Sa se determine analitic si in matlab ecuatia dreptei de regresie
care aproximeaza conform metodei celui mai mic patrate:
Fie valorile experimentale date prin vectorii x,y:
x=[-1 0 1 2]
y=[1 0 1 4]

y=ax+b -ecuatia dreptei de regresie


iar a si b,
nxiyixiyi
a= 2
nx i( xi)
2

xi


2
b= nxi
2
xi yixiyi

n=4
xiyi=11+00+ 11+24=8

x 2 i=12 +02 +12 +22=6

yi=6

a=1
b=1
y=x+1
Se observa ca punctele nu sunt pe dreapta asa cum se
intampla la dreapta de interpolare
-secventa matlab:
coef=polyfit(x,y,l)
a=coef(1)
b=coef(2)
y1=(a*x)+b
plot(x,y,o,x,y1)
Laborator.8

Derivarea numerica

Scopul lucrarii:
Se utileaza functia diff pentru vectori si matrici. Aplicad diff la un
vector obtinem un vector cu un nr de component<ca 1

Aplicatia 1:

a) x=[2 5 7 -9]
dx=[3 2 -1 6]
d2x=diff(x,2)
dx=diff(x)
b) A=[2 3 6;-3 0 2;1 7 5]
dx=diff(A)
d2x=diff(A,2)
c) x=[0 1 2 3 4 5 6]
f=[2 5 0 -1 2 7]
dx=diff(x)
df=diff(f)
f_der_m=df/dx

Rezolvare :
a) diffx=5-2=3
7-5=2
-9+7=-16
dx=[3 2 -16]
d2x=[6 4 -32]
In punctul c) este prezentat calculul derivatei unei functii date
tabular
2 3 6
b) A= 3 0 2
1 7 5

5 3 4
dx= 4 7 3

d2x= 9 10 7

Aplicatia 2

Sa se aproximeze derivate functiei:

f(x)= x 3 x , pentru x (-3;4] folosind diferente finite


5 4

progressive. Sa se reprezinte derivate numerica si cea analitica


g
x=-3:0.5:4
5 4 3 2
f= x 3 x 11 x +27 x 10 x24
df_m=diff(f)./diff(x)
xd=x(2:lengh(x))
plot(x,dfanalitic,xd,df_m,o)
Apoi pasul o sa fie 0.3
subplot(3,1,1) 0.5
subplot(3,1,2) 0.3
subplot(3,1,3) 0.1
Se observa ca atunci cand pasul scade, aproximarea este mai
buna.

*Derivarea numerica folosind polinoame de interpolare Newton

Relatiile de calcul:
1 D2 yi D3 yi D 4 yi
f(xi)= h ( Dyi + )
2 3 4

1 11
D2 yiD3 yi+ D4 yi
f(xi)= h (
2
12

Sa se calculeze numeric si analitic primele 2 derivate ale functiei


log(x), x=50. Sa se calculeze erorile. Pasul va avea urmatoarele
1:0.5:0.1
x=50:1:58
h=x(2)-x(1)
y=log(x)
d1y=diff(y)
d2y=diff(d1y)
d3y=diff(d2y)
d4y=diff(d3y)
e
( x) '=e x =e 50=5,181021

1
log(x)= x

1 1 1
'= 2
(log(x))=( x x = 50

1 1
- x 2 =- 2500 =0,004

Aproximarea este foarte buna.

Laborator.9

Integrarea ecuatiilor diferentiale prin metoda


Ronge-Kutta

Sa se integreze ecuatia diferentiala:


2x
y=3y+ e x [0,2]

Conditia initiala y(0)=3

Solutia analitica este:


3x 2x
ya=4* e e

Sa se reprezinte graphic solutia analitica si cea numerica . Facem


un fisier functie care contine expresia derivatei
Function dy=yprim1(x,y)
Dy=3*y+exp(2*x)
Se construieste un fisier script
[x,ym]=ode45(yprim1,0,2,3)
plot(x1ya,x1ym,o)
Se observa o aproximare foarte buna a solutiei analitice.
Modificam conditiia initiala. Solutia numerica difera mult de cea
analitica. Aceasta arata imp. conditia initiala la determinarea
solutiei unei ecuatii
Exemplul 2:
Sa se integreze urmatoarea edo:


y=cosx x [0; 2

conditia initiala y0=1


Solutia analitica=(sinx)+1

Laborator.10

Metoda diferentelor finite

Scopul lucrarii:
Metoda diferentelor finite este o metoda folosita la
aproximarea ecuatiilor derivatei partialei prin ecuatiile diferentei
finite(algoritmice). Rezolvarea prin diferente finite cu relatia
patratului unui camp electrostatic laplacean intr.un domeniu de
camp de forma patrata.

Sa se rezolve ecuatia Laplace:


DU=0
Pentru un camp electrostatic intr-un domeniu de forma patrata
discretizat cu o retea cu pas constant H.Se cunosc valorile
potentialului in nodurile de pe frontier.

V 1 ; V 6 =0v

; V 12
V 11 =0v

V7, V8, . V 10 =1v

Calculul se va face folosind formula celor 5 puncte:


V 1+V 2+V 3+ v 4
V0= 4

V 2+V 3+ V 2+V 12
V1= 4

V 1+V 4 + V 3+ V 5
V2= 4

11
V 1+V 4 + V 9+V
V3= 4

9
V 2+V 3+ V 6+V
V4= 4


4V1-V2-V3= V 2+V 3

4V2-V1-V4= V 3+ V 5

4V3-V1-V4= V 9+V 11

4V4-V2-V3= V 3+ V 9

Se observa ca valoarea potentialului in nodurile mai apropiate de


frontier cu 1v sunt mai mari decat cele departate

q=[4 -1 0;-1 4 -2;0 -1 4]

q=

4 -1 0
-1 4 -2
0 -1 4

>> I=[1 0 0;0 1 0;0 0 1]

I=

1 0 0
0 1 0
0 0 1

>> z=zeros(3)
z=

0 0 0
0 0 0
0 0 0

>> A=[q -I z;-I q -I;z -I q]

A=

4 -1 0 -1 0 0 0 0 0
-1 4 -2 0 -1 0 0 0 0
0 -1 4 0 0 -1 0 0 0
-1 0 0 4 -1 0 -1 0 0
0 -1 0 -1 4 -2 0 -1 0
0 0 -1 0 -1 4 0 0 -1
0 0 0 -1 0 0 4 -1 0
0 0 0 0 -1 0 -1 4 -2
0 0 0 0 0 -1 0 -1 4

>> min(1:8,1)=0

min =
0
0
0
0
0
0
0
0

>> min(14:16,1)=0

min =

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

>> min(9:13,1)=1

min =

0
0
0
0
0
0
0
0
1
1
1
1
1
0
0
0