Documente Academic
Documente Profesional
Documente Cultură
Coordonator:Prof.Univ.Dr.Ing.Bogdan Sebacher
Grupa:E222
Se considera sistemul:
5a+7b+3c=3
4a+6b+3c=4
3a+6b+3c=2
1.2 Metoda de eliminare a lui Gauss
Se considera sistemul:
a+5b+3c=6
5a+3b+7c=4
8a+4b+6c=6
Se considera sistemul:
a+3b+2c=4
2a+4b+7c=2
a+b+3c=1
L =
0.5000 1.0000 0
1.0000 0 0
0.5000 -1.0000 1.0000
U =
4.7500
0.7500
-1.5000
solutia2 =
4.7500
0.7500
-1.5000
>>
tic
sol1=linsolve(A,b);
toc
tic
sol2=A^(-1)*b;
toc
tic
sol3=Cramer(A,b);
toc
tic
sol4=Eliminare_Gauss(A,b);
toc
Elapsed time is 0.014195 seconds.-SOL1
Elapsed time is 0.035349 seconds.-SOL2
Elapsed time is 20.075823 seconds.-SOL3
Elapsed time is 3.849522 seconds.-SOL4
sol =
2.7692
-3.0769
0.3077
A =
9 3 5
2 7 3
4 3 8
>> b=[2;8;3]
b =
>> [sol1,it1]=Jacobi(A,b,10^(-4),1000)
sol1 =
-0.1861
1.1860
0.0232
it1 = 48
if Norm_inf(B)>=1
b=A'*b;
A=A'*A;
for i=1:n
B(i,:)=-A(i,:)/A(i,i);B(i,i)=0;
c(i)=b(i)/A(i,i);
end
X0=zeros(n,1); X1=zeros(n,1);% initializarea --->
primul termen din sirul care converge la solutie
nr_iter=1;
for i=1:n
X1(i)= B(i,1:i-1)*X1(1:i-1)+B(i,i+1:n)*X0(i+1:n)+c(i);
%facem prima iteratie si il calculam pe X1
end
while max(abs(X1-X0)) > eps && nr_iter<=maxiter
nr_iter=nr_iter+1;% trec la urmatoarea iteratie,
incrementez numarul de iteratii
X0=X1; % reinitializez procedura
for i=1:n
X1(i)=B(i,1:i-1)*X1(1:i-1)+B(i,i+1:n)*X0(i+1:n)+c(i);
%facem o noua iteratie si il calculam pe X1
end
end
sol_aprox=X1;
if nr_iter>maxiter
error('Numarul maxim de iteratii a fost atins.
Verifica solutia');
end
else
X0=zeros(n,1); X1=zeros(n,1);% initializarea --->
primul termen din sirul care converge la solutie
nr_iter=1;
for i=1:n
X1(i)= B(i,1:i-1)*X1(1:i-1)+B(i,i+1:n)*X0(i+1:n)+c(i);
%facem prima iteratie si il calculam pe X1
end
while max(abs(X1-X0)) > eps && nr_iter<=maxiter
nr_iter=nr_iter+1;% trec la urmatoarea iteratie,
incrementez numarul de iteratii
X0=X1; % reinitializez procedura
for i=1:n
X1(i)=B(i,1:i-1)*X1(1:i-1)+B(i,i+1:n)*X0(i+1:n)+c(i);
%facem o noua iteratie si il calculam pe X1
end
end
sol_aprox=X1;
if nr_iter>maxiter
error('Numarul maxim de iteratii a fost atins.
Verifica solutia');
end
end
end
>> clear
>> A=[3 4 5;1 2 3;2 3 4];
>> b=[2;3;4];
>>
>> [sol2,it2]=Gauss_Seidel(A,b,10^(-2),2000)
sol2 =
-3.2485
2.0597
0.8239
it2 =
97
>> clear
>> A=[4 1 2;1 4 2;1 2 5];
>> b=[1;2;3];
>> [sol2,it2]=Gauss_Seidel2(A,b,10^(-2),1000)
sol2 =
-0.0704
0.2638
0.5086
it2 =
>>
2.4 Norm_inf
normainf=max(sum(abs(A')));
end
b=randn(n,1);
tic
sol=linsolve(A,b);
toc
tic
[sol1,it1]=Jacobi(A,b,10^(-4),1000);
toc
% tic
% [sol2,it2]=Gauss_Seidel(A,b,10^(-2),1000);
% toc
>> timpi_executie
>> [sol,nriter]=Newton_Rahpson([1;1;2],10^(-3),100)
F(x, y, z) =
J_F(x, y, z) =
sol =
0.2404
1.8275
1.7252
nriter =
nriter=0;
fid=fopen('Newton_Rahpson2.txt','w');
fprintf(fid,' Iteratia x y z
f1(x,y,z) f2(x,y,z) f3(x,y,z) \n');
fprintf(fid,' %8d %8.6f %8.6f %8.6f %8.6f %8.6f %8.6f \n
',nriter, X0', double(F(X0(1),X0(2),X0(3)))');
nriter=nriter+1;
X1=X0-double(subs(J_F,[x y z],[X0(1) X0(2) X0(3)]))^(-
1)*double(F(X0(1),X0(2),X0(3)));
fprintf(fid,' %8d %8.6f %8.6f %8.6f %8.6f %8.6f %8.6f \n
',nriter,X1',double(F(X1(1),X1(2),X1(3)))');
>> [sol,nriter]=Newton_Rahpson2([3;1;2],10^(-3),200)
Numarul maxim de iteratii a fost atins. Verifica solutia
sol =
-2.3350
-0.6002
-0.4337
nriter =
201
>> clear
>> [sol,nriter]=Newton_Rahpson2([4;1;2],10^(-2),100)
sol =
8.2602
2.4252
-3.6923
nriter =
101
[sol,nriter]=Gradient_Descent([1;3;2],10^(-3),10^(-2),2000)
sol =
1.0019
2.4873
2.0058
nriter =
42
function [sol,
nriter]=Gradient_Descent2(X0,alfa,eps,maxiter)
syms x y z
f(x,y,z)=abs(((x-6)^2+(y-3)^2+(z-4)^2)^(1/2)-((x-1)^2+
(y+2)^2+(z-3)^2)^(1/2)-sqrt(3)+sqrt(13))+...
abs(((x+2)^2+(y-1)^2+(z+1)^2)^(1/7)-((x-1)^2+(y+11)^2+(z-
3)^2)^(1/2)-3*sqrt(6)+sqrt(12))+...
abs(((x-3)^2+(y+1)^2+(z-2)^2)^(1/2)-((x-1)^2+(y+2)^2+(z-
1)^2)^(1/5)-sqrt(18)+sqrt(17));
Grad_f=gradient(f);
nriter=0;
fid=fopen('GradientDescent2.txt','w');
fprintf(fid,' Iteratia x y z f(x,y,z) \n');
fprintf(fid,' %8d %8.6f %8.6f %8.6f %8.6f \n ',nriter, X0',
double(f(X0(1),X0(2),X0(3))));
nriter=nriter+1;
X1=X0-alfa*double(Grad_f(X0(1),X0(2),X0(3)));
fprintf(fid,' %8d %8.6f %8.6f %8.6f %8.6f \n
',nriter,X1',double(f(X1(1),X1(2),X1(3))));
while max(abs(X1-X0))>=eps && nriter<=maxiter
nriter=nriter+1
X0=X1;
X1=X0-alfa*double(Grad_f(X0(1),X0(2),X0(3)));
fprintf(fid,' %8d %8.6f %8.6f %8.6f %8.6f \n
',nriter,X1',double(f(X1(1),X1(2),X1(3))));
end
sol=X1;
if nriter>maxiter
fprintf('Numarul maxim de iteratii a fost atins. Verifica
solutia \n')
end
fclose(fid);
[sol,nriter]=Gradient_Descent2([2;2;1],10^(-2),10^(-3),2000)
sol =
5.3373
0.2237
3.0292
nriter =
786
INTERPOLARE
5.1 Lagrange
function [X, lag]=lagrange(x,y)
n=length(x);
m=length(y);
lag=0;
if m~=n
error('Date incorecte; lungimi de vectori diferite');
else
syms X
for i=1:n
pp=1;
for j=1:n
if j~=i
pp=pp*(X-x(j))/(x(i)-x(j));
end
end
lag=lag+y(i)*pp;
end
m=300;
u=linspace(min(x),max(x),m);
v=zeros(1,m);
for i=1:m
v(i)=subs(lag,X,u(i));
end
lag=simplify(lag);
figure
plot(x,y,'o','MarkerEdgeColor','k','MarkerFaceColor','g','Ma
rkerSize',8);
hold on
plot(u,v,'r','Linewidth',2)
legend('Noduri','Polinom Lagrange')
title('Polinomul de interpolare Lagrange')
end
end
>> x=[22;52;16;55;79]
y=[26;71;42;66;32]
[X,lag]=lagrange(x,y)
lag =
function f=interp_liniara(x,y,alfa)
n=length(x);
m=length(y);
if m~=n
display('Date incorecte; lungimi de vectori diferite')
else
if alfa>=x(1) && alfa<=x(n)
i=1;
while alfa>=x(i)
i=i+1;
end
f=y(i-1)+(alfa-x(i-1))/(x(i)-x(i-1))*(y(i)-y(i-1));
end
if alfa<x(1);
f=y(1)+(alfa-x(1))/(x(2)-x(1))*(y(2)-y(1));
end
if alfa>x(n)
f=y(n-1)+(alfa-x(n-1))/(x(n)-x(n-1))*(y(n)-y(n-1));
end
figure
plot(x,y,'o','Linewidth',2,'MarkerEdgeColor','k','MarkerFace
Color','g','MarkerSize',10);
hold on
plot(alfa,f,'o','Linewidth',2,'MarkerEdgeColor','k','MarkerF
aceColor','m','MarkerSize',10);
plot(x,y,'--')
end
end
>> x=[5,6,9,4];
>> y=[2,6,8,12];
>> f=interp_liniara(x,y,0.01)
f =
-17.9600
5.3 Script Lagrange
n=13;
x=linspace(-pi,pi,n);
y=abs(x).*exp(cos(x))+atan(x)./(x.^3+4);
[X,lag]=lagrange(x,y)
xx=linspace(-pi,pi,200);
yy=abs(xx).*exp(sin(xx))+acos(xx)./(xx.^3+1);
hold on
plot(xx,yy,'k','Linewidth',2);
legend('noduri','Pol Lagrange','f(x)')
x0=linspace(-2*pi,2*pi,300);
y0=abs(x0).*exp(sin(x0))+atan(x0)./(x0.^3+1);
figure
plot(x0,y0,'k','Linewidth',2);
y_pol=zeros(1,300);
for i=1:300
y_pol(i)=subs(lag,X,x0(i));
end
hold on
plot(x0,y_pol,'r','Linewidth',2);
plot(x,y,'o','MarkerEdgeColor','k','MarkerFaceColor','g','Ma
rkerSize',8);
legend('f(x)','Pol Lagrange','noduri')
lag =
(X*(853284438859913621319168*X^11 -
820439095568840332756416*X^10*pi -
1722591861511671660508416*X^9*pi^2 +
1864990155956081963331600*X^8*pi^3 +
984145707088043416085664*X^7*pi^4 -
1426504881950966624021028*X^6*pi^5 -
45329647057510717997568*X^5*pi^6 +
419575166009098003351755*X^4*pi^7 -
80810969330889998103332*X^3*pi^8 -
38549748872807568496331*X^2*pi^9 +
11551416071256262108784*X*pi^10 +
927292884435466133720*pi^11))/(208066302784516915200*pi^12)
lag =
(X*(33709355848748263226896085721890732496221632497077606047
3632015067*X^38 -
212362525142523491402680311443000986673635252643574619608796
35056701*X^36*pi^2 +
608613651948951822357511383631721991473961191595007673274952
631828769*X^34*pi^4 -
105188907041193209744214307252553139329707053773485802817032
98180194223*X^32*pi^6 +
122545834483180148823284106792358364552696090843313263634335
742375553036*X^30*pi^8 -
101876148272248007303896473195705042751331264115432399595036
2982602733716*X^28*pi^10 +
621857720225806972876625013778472315908587579812981261909494
9577395360308*X^26*pi^12 -
265608158186185557443550183298294570528810093209785100289175
60850465908940*X^24*pi^14 -
354304690577888862471656333646804453192184157420090762123562
96086782304310*X^22*pi^16 +
671058004602866971042894900565098501351992599275362371282936
0489790347141690*X^20*pi^18 -
296425707702366254605535418023068828088331675134146119672396
381792491791551602*X^18*pi^20 +
102896134580010152704327470300769979656415899365603190195898
38214392491750545646*X^16*pi^22 -
283596896677402998223565020213652663274564170004095269060013
644768653450140389604*X^14*pi^24 +
603423732660598621129609224256066145615406884152241846142353
9936878389392412058748*X^12*pi^26 -
953777981939638555809940295363852291161082973325916857994241
04884546165722606444796*X^10*pi^28 +
106301705937010914358834542081389950594692719438692048746439
1666931916167646563454596*X^8*pi^30 -
775484256267507950720136181549623703453858988927172719464984
5319501020395295680012493*X^6*pi^32 +
330006527513948638352136605230750188213006771319488665111484
33912283777552060598677275*X^4*pi^34 -
668733039548322988575280307361665376506474742937797830966824
79089265863903043034054375*X^2*pi^36 +
406540938646647907528826581691190636887502297130171206629469
62216490836812744412015625*pi^38))/
(12940599990966594200633658893117375358266428015954690708323
577463473600620134400000000*pi^39)
plot(x,y,'o','MarkerEdgeColor','k','MarkerFaceColor','g','Ma
rkerSize',7);
hold on
plot(u,v,'k','Linewidth',3);
title('Modelul liniar de regresie');
legend('Punctele','Modelul liniar')
end
end
y=[3 36 24 2 34 64 27 98 34 2 5 5 26 24 95 34]
[a,b,Er]=regresie_liniara(x,y)
x =
2 6 5 32 24 56 67 34 63 15
7 2 3 23 53 34
y =
3 36 24 2 34 64 27 98 34 2
5 5 26 24 95 34
a =
0.6782
b =
14.0056
Er =
1.0053e+04
u=linspace(min(x),max(x),300);
v=a*u.^2+b*u+c;
figure
plot(x,y,'o','MarkerEdgeColor','k','MarkerFaceColor','g','Ma
rkerSize',7);
hold on
plot(u,v,'b','Linewidth',3);
title('Modelul parabolic de regresie');
legend('Punctele','Modelul parabolic')
end
Er=sum((a*x.^2+b*x+c-y).^2);
end
>> x=[0;5;10;15;20;25;30;35;40];y=[2;4;6;8;10;12;14;16;18];
>> [a,b,c,Er]=regresie_parabolica(x,y)
a =
2.7756e-17
b =
0.4000
c =
2.0000
Er =
6.0506e-28
6.3 Regresie cubica
function [a, b, c, d, Er]=regresie_cubica(x,y)
m=length(x);
n=length(y);
if m~=n
error('Date incorecte; lungimi diferite ale vectorilor');
else
A=[sum(x.^6) sum(x.^5) sum(x.^4) sum(x.^3);...
sum(x.^5) sum(x.^4) sum(x.^3) sum(x.^2);...
sum(x.^4) sum(x.^3) sum(x.^2) sum(x);...
sum(x.^3) sum(x.^2) sum(x) n];
B=[sum((x.^3).*y);sum((x.^2).*y); sum(x.*y) ;sum(y)];
sol=A^(-1)*B;
a=sol(1);b=sol(2);c=sol(3);d=sol(4);
u=linspace(min(x),max(x),300);
v=a*u.^3+b*u.^2+c*u+d;
figure
plot(x,y,'o','MarkerEdgeColor','k','MarkerFaceColor','g','Ma
rkerSize',7);
hold on
plot(u,v,'b','Linewidth',3);
title('Modelul cubic de regresie');
legend('Punctele','Modelul cubic')
end
Er=sum((a*x.^3+b*x.^2+c*x+d-y).^2);
end
>> x=[4;5;7;8;9;5];
>> y=[5;3;12;13;4;9];
>> [a,b,c,d,Er]=regresie_cubica(x,y)
a =
-0.5795
b =
10.2239
c =
-56.0281
d =
102.7738
Er =
19.4368
6.4 Regresie 4th
function [a, b, c, d, e, Er]=regresie_4th(x,y)
m=length(x);
n=length(y);
if m~=n
error('Date incorecte; lungimi diferite ale vectorilor');
else
A=[sum(x.^8) sum(x.^7) sum(x.^6) sum(x.^5) sum(x.^4);...
sum(x.^7) sum(x.^6) sum(x.^5) sum(x.^4) sum(x.^3);...
sum(x.^6) sum(x.^5) sum(x.^4) sum(x.^3) sum(x.^2);...
sum(x.^5) sum(x.^4) sum(x.^3) sum(x.^2) sum(x);...
sum(x.^4) sum(x.^3) sum(x.^2) sum(x) n];
B=[sum((x.^4).*y);sum((x.^3).*y);sum((x.^2).*y);
sum(x.*y) ;sum(y)];
sol=A^(-1)*B;
a=sol(1);b=sol(2);c=sol(3);d=sol(4);e=sol(5);
u=linspace(min(x),max(x),300);
v=a*u.^4+b*u.^3+c*u.^2+d*u+e;
figure
plot(x,y,'o','MarkerEdgeColor','k','MarkerFaceColor','g','Ma
rkerSize',7);
hold on
plot(u,v,'b','Linewidth',3);
title('Modelul 4th de regresie');
legend('Punctele','Modelul 4th')
end
Er=sum((a*x.^4+b*x.^3+c*x.^2+d*x+e-y).^2);
end
>> x=[2;3;5;6;7;9;3;5;6;11];
>> y=[4;5;12;6;8;9;6;4;2;1];
>> [a,b,c,d,e,Er]=regresie_4th(x,y)
a =
-0.0300
b =
0.7294
c =
-6.2052
d =
21.9757
e =
-21.0582
Er =
59.1033
>>