Sunteți pe pagina 1din 9

UNIVERSITATEA TEHNICĂ A MOLDOVEI

Facultatea Energetică şi Inginerie Electric


Departamentul Inginerie Electrică
Specialitate Ingineria Sistemelor Electromecanice

Raport
La obiectul:

Metode numerice și Informatica aplicată

Varianta 9

Student: gr.ISEM-221

ȘAPTESATE Evelin
(numele prenumele studentului)

A verificat: Grușac Lucian

asist.universitar

Chişinău, 2023
Tema: Bazele programării in mediul MatLab

Sistemul de programare MatLab (Matrix Laboratory) reprezintă un mediu interactiv


de calcul a problemelor inginereşti şi ştiinţifice avănd ca un singur tip de date -matricea.
Programele elaborate în mediul MatLab se salvează în fişiere cu extensia .m, numite M-fişiere.
MatLab este dotat cu un puternic aparat al matematicii de calcul şi de reprezentare grafică.
Pentru diferite aplicaţii tehnice MatLab conţine pachete specializate numite Toolbox-uri cu
destintaţie în domeniul respectiv. Sistemul permite schimbul informaţiei cu editorul de texte
Microsoft Word, în particular, a textului programului şi rezultatelor textuale, a graficelor.

a=0.562;
b=1.317;
x=1:0.1:2;
y=nthroot(a.*x.*sin(2.*x)+exp(-2.*x).*(x+b),3);

subplot(121);
plot(x,y,'g');
grid;
title('Functia y');
xlabel('x');
ylabel('y');

z=a.*cos(a.*x.^2.*tan(b))/(a+b);
subplot(122);
plot(x,z,'r');
grid;
title('Functia z');
xlabel('x');
ylabel('z');

Figura numarul 1
function [s,p]= drept (a,b)
s = a*b;
p = 2*(a+b);
end
a=0.562;
b=1.317;
[s,p]=drept(a,b);
rez=[s p];
disp(rez);

Tema: Rezolvarea ecuațiilor algebrice și trascendente


Metoda Newton
Conform metodei Newton şirul iterativ de valori aproximative se obţine ca punctele de
intersecţie ale tangentelor duse la curba graficului y=f(x) cu axa abscisei x. Din ecuaţia tangentei
se obţine formula metodei Newton de calcul a iteraţiei k a rădăcinei xk prin valoarea ei din
iteraţia precedentă xk-1 , valorile funcţiei fk-1 = f (xk-1) şi derivata ei de ordinul unu f 'k-1 = f '(xk-1).
clc;
x0=input('Introdu valoarea initiala x0=');
xa=x0;
xc=xa;
fa=1; %valoare preventiva fa>eps
eps=1e-2; %eroare prescrisa k=0;
while abs(fa)>eps
k=k+1;
fa=yfx(xa);
dfa=dyfx(xa);
xc=xa-fa/dfa;
xa=xc;
end
rez=[k xc];
disp(rez);

function dyc=dyfx(xc);
% Programarea derivate functiei yc=f(xc)
dyc=12*xc.^3+12*xc.^2-24*xc;

function yc=yfx(xc);
% Programarea functiei yc=f(xc)
yc=3*xc.^4+4*xc.^3-12*xc.^2+1;

Raspuns:

Introdu valoarea initiala x0=


3
32.0000 1.4008
Metoda aproximatiilor successive
Conform Metodei aproximaţiilor successive din ecuaţia iniţială (1) variabila x se separă
în partea stăngă şi se obţine o ecuaţie echivalentă: x=ϕ(x) . În rezultat folosind iteraţia k-1 a
rădăcinei xk-1 în partea dreaptă a ecuaţiei se obţine iteraţia k a rădăcinei : xk=g(xk-1).
clc;
x0=input('Introdu valoarea initiala x0=');
m=input('Introdu valoarea coeficientului m=');
xa=x0;
xc=xa;
fa=1; %valoare preventiva |fa|>eps
eps=1e-2; %eroare prescrisa k=0;
while abs(fa)>eps
k=k+1;
fa=yfx(xa);
xc=xa+m*fa;
rc=[k xa xc fa m*fa];
disp(rc);
xa=xc;
end
rez=[k xc];
disp(rez);

function dyc=dyfx(xc);
% Programarea derivate functiei yc=f(xc)
dyc=12*xc.^3+12*xc.^2-24*xc;

function yc=yfx(xc);
% Programarea functiei yc=f(xc)
yc=3*xc.^4+4*xc.^3-12*xc.^2+1;

Raspuns:

Introdu valoarea initiala x0=


2
Introdu valoarea coeficientului m=
-0.5/yfx(2)

33.0000 2.0000 1.5000 33.0000 -0.5000

34.0000 1.5000 1.4593 2.6875 -0.0407

35.0000 1.4593 1.4368 1.4805 -0.0224

36.0000 1.4368 1.4235 0.8782 -0.0133

37.0000 1.4235 1.4153 0.5412 -0.0082

38.0000 1.4153 1.4102 0.3409 -0.0052

39.0000 1.4102 1.4069 0.2175 -0.0033

40.0000 1.4069 1.4048 0.1400 -0.0021

41.0000 1.4048 1.4034 0.0905 -0.0014

42.0000 1.4034 1.4025 0.0587 -0.0009


43.0000 1.4025 1.4019 0.0382 -0.0006

44.0000 1.4019 1.4015 0.0249 -0.0004

45.0000 1.4015 1.4013 0.0162 -0.0002

46.0000 1.4013 1.4011 0.0106 -0.0002

47.0000 1.4011 1.4010 0.0069 -0.0001

47.0000 1.4010

Metoda injumatatirii
Pentru intervalul separat se compară semnele funcţiei la stânga f s şi mijloc fm . Dacă au
semne opuse, adica fs*fm < 0 , atunci rădăcină este situată in semiintervalul din stânga
din care cauza intervalul iniţial se micşorează de două ori prin eliminarea semiintervalului
din dreapta. Dacă au aceleaşi semne, adica fs*fm > 0 , atunci se elimină semiintervalului
din stânga. Procesul iterativ de calcul se întrerupe dacă este satisfăcută condiţia | fm |< Ɛ.
ltima valoare a argumentului la mijlocul intervalului xm reprezintă soluţia căutată a
rădăcinii în intervalul separat.

clc;
xs=input('Introdu marginea stanga xs=');
xd=input('Introdu marginea dreapta xd=');
fs=yfx(xs);
fm=1; %Valoarea preventiva |fm|>eps
eps=1e-2; %eroare prescrisa
k=0;
while abs(fm)>eps
k=k+1;
xm=(xs+xd)/2;
fm=yfx(xm);
if fs*fm>0
xs=xm;
fs=fm;
else
xd=xm;
end
end
rez=[k xm];
disp(rez);

function yc=yfx(xc);
% Programarea functiei yc=f(xc)
yc=3*xc.^4+4*xc.^3-12*xc.^2+1;

function dyc=dyfx(xc);
% Programarea derivate functiei yc=f(xc)
dyc=12*xc.^3+12*xc.^2-24*xc.;

Raspuns(1)

Introdu marginea stanga xs=


-4
Introdu marginea dreapta xd=
-2
13.0000 -2.7644

Raspuns(2)

Introdu marginea stanga xs=


-2
Introdu marginea dreapta xd=
0
9.0000 -0.2773

Tema: Rezolvarea numerică a sistemelor de ecuații liniare


Metoda Gauss
Aceasta metoda a fost creata de Johann F. Gauss pentru a calcula usor sisteme de ecuatii
de marimi mari.
%% Gauss Seidel Method

%% Solution of x in Ax=b using Gauss Seidel Method

% · _·Initailize 'A' 'b' & intial guess 'x'·_%%

A=[5 -2 3 0;-3 9 1 -2;2 -1 -7 1; 4 3 -5 7]

b=[-1 2 3 0.5]'

x=[0 0 0 0]'

n=size(x,1);

normVal=Inf;

%% % · _·Tolerence for method·_

tol=1e-5; itr=0;

%% Algorithm: Gauss Seidel Method %%

while normVal>tol

x_old=x;

for i=1:n

sigma=0;

for j=1:i-1

sigma=sigma+A(i,j)*x(j);

end

for j=i+1:n

sigma=sigma+A(i,j)*x_old(j);

end

x(i)=(1/A(i,i))*(b(i)-sigma);

end
itr=itr+1;

normVal=norm(x_old-x);

end

%%

fprintf('Solution of the system is : \n%f\n%f\n%f\n%f in %d iterations',x,itr);

Raspuns:

GaussSeidel
A=
5 -2 3 0
-3 9 1 -2
2 -1 -7 1
4 3 -5 7

b=
-1.0000
2.0000
3.0000
0.5000

x=
0
0
0
0

Solution of the system is :


0.178697
0.230293
-0.477635
-0.470549 in 8 iterations

Metoda Jacobi
Aceasta metoda a fost alcatuita de catre matematicianul Carl Gustav
Jacob si are forma de un algoritm iterativ:
%% Jacobi Method
%% Solution of x in Ax=b using
Jacobi Method

% · _·Initailize 'A' 'b' & intial guess


'x'·_
%%
A=[5 -2 3 0;-3 9 1 -2;2 -1 -7 1; 4 3 -5
7]
b=[-1 2 3 0.5]'
x=[0 0 0 0]'
n=size(x,1);
normVal=Inf;
%%
% · _·Tolerence for method·_
tol=1e-5; itr=0;
%% Algorithm: Jacobi Method

normVal>tol

xold=x;

for i=1:n

sigma=0;

for j=1:n

if j~=i

sigma=sigma+A(i,j)*x(j);

end

end

x(i)=(1/A(i,i))*(b(i)-sigma);

end

itr=itr+1;

normVal=abs(xold-x);

end

fprintf('Solution of the system is : \n%f\n%f\n%f\n%f in %d iterations',x,itr);

Raspuns:

Jacobi
A=

5 -2 3 0
-3 9 1 -2
2 -1 -7 1
4 3 -5 7

b=

-1.0000
2.0000
3.0000
0.5000

x=

0
0
0
0

Solution of the system is :


0.178697
0.230293
-0.477635
-0.470549 in 8 iterations

Concluzie:
In urma efectuarii lucrarilor de laborator, am analizat si efectuat calcule in MatLab,
folosind metoda grafica, metoda Gauss, metoda injumatatirii si metoda Newton. In urma
metodelor efectuate am putut observa ca aceste metode sunt foarte intrebate in electrotehnica,
intrucit sunt descries ce sisteme de ecuatii cresc in marime si care scad.

S-ar putea să vă placă și