Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
EC 313: Numerical Methods                           Mayank Awasthi(2006033)
MATLAB Assignment – 2                         ...
% Calculating(dis(A*x,b)<1e-6)to stop iteration at the given tolerance
   temp=0;
   for j=1:n
       temp=temp+power(m(j,...
MATLAB routine for Forward Substitution:

% Implementing Forward Substitution

function x=forward_subs(A,b)
n=length(A);
f...
Part3:

>> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1]
a=

  1.0000     0.9000     0.9000
  0.9000     1.0000     0.9000
  0.9000    ...
1). >> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1]
a=

  1.0000         0.2000       0.2000
  0.2000         1.0000       0.2000
  0....
2).
>> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1]
a=

  1.0000         0.5000       0.5000
  0.5000         1.0000       0.5000
  0....
3).
>> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1]
a=

  1.0000         0.9000       0.9000
  0.9000         1.0000       0.9000
  0....
Steps vs t :




Spectral radius vs t :
Ques2:


Jacobi Method for Solving the Linear Equations:

%Implementing Jacobi Method
function x = jacobi(A,b,x)


I=[1 0 ...
Part1:                                Part2

>> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1]   >> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1]

a=...
Part3 :

>> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1]

a=

  1.0000     0.9000     0.9000
  0.9000     1.0000     0.9000
  0.9000  ...
Ques3:



Cholesky Method for Solving the Linear Equations:
% Implementing Cholesky Method
function x = cholesky(A,b,x)
n=...
Part1:                                Part2

>> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1]   >> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1]
a= ...
Part3:
>> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1]
a=

  1.0000     0.9000     0.9000
  0.9000     1.0000     0.9000
  0.9000     ...
Ques4:

Matlab Subroutine to calculate Condition Number:
% Calculating Condition Number

function [] = cond(a,b,b1);
x0=[0...
>> cond(a,b,b1)

a=

  1.0800     0.4400     0.4400
  0.4400     1.0800     0.4400
  0.4400     0.4400     1.0800


val =
...
>> cond(a,b,b1)
a=

  1.5000     1.2500     1.2500
  1.2500     1.5000     1.2500
  1.2500     1.2500     1.5000

val =

 ...
>> cond(a,b,b1)

a=

  2.6200   2.6100   2.6100
  2.6100   2.6200   2.6100
  2.6100   2.6100   2.6200


val =

 28.0000   ...
Upcoming SlideShare
Loading in …5
×

jacobi method, gauss siedel for solving linear equations

8,312 views

Published on

mayank awasthi......iiit jabalpur ECE

Published in: Education, Technology
  • Be the first to comment

jacobi method, gauss siedel for solving linear equations

  1. 1. EC 313: Numerical Methods Mayank Awasthi(2006033) MATLAB Assignment – 2 B.Tech 3rd Year(ECE) Pdpm IIITDM, JABALPUR Ques1: Gauss Siedel Method for Solving the Linear Equations: % Implementing Gauss Siedel method % a is matrix whose diagonal elements are non-zero else rearrange it function x = gauss_siedel(a,b,x) n=length(a); l=zeros(n,n); u=zeros(n,n); d=zeros(n,n); id=[1,0,0;0,1,0;0,0,1]; for i=1:n for j=1:n a(i,j)= a(i,j)/a(i,i); %making the diagonal elements 1. % Breaking the matrix as a sum of ( L+U+I ) if i>j l(i,j)=a(i,j); end if i<j u(i,j)=a(i,j); end if i==j d(i,j)=a(i,j); end end end %Implementing Norm of c where c = inverse(I+L)*U norm2(inv2(id+l)*u); if norm2(inv2(id+l)*u)>1 fprintf('Norm of c is greater than 1, Solution will diverge'); return; end for i=1:n b(i,1)=b(i,1)/a(i,i); end % Calculating x using FORWARD DIFFERENCE CONCEPT x=[0;0;0]; for i=1:100 x= forward_subs((l+d),(b-u*x)); m=a*x-b;
  2. 2. % Calculating(dis(A*x,b)<1e-6)to stop iteration at the given tolerance temp=0; for j=1:n temp=temp+power(m(j,1),2); end temp=sqrt(temp); if temp<0.0000001 break; end end fprintf('nThe maximum no. of iteration required is %d',i); end MATLAB routine for Inverse of 3x3 matrix : % Calculating Inverse of 3x3 matrix function x = inv2(A) I=[1,0,0;0,1,0;0,0,1]; n=length(A); a21=A(2,1)/A(1,1); for k = 1:n-1 % Elimination Phase for i= k+1:n if A(i,k) ~= 0 lambda = A(i,k)/A(k,k); A(i,k:n) = A(i,k:n) - lambda*A(k,k:n); I(i,k:n)= I(i,k:n) - lambda*I(k,k:n); I(3,1)=I(2,1)*I(3,2)+I(3,1); end end end x1=back_subs(A,I(:,1)); % Backward Substitution x2=back_subs(A,I(:,2)); x3=back_subs(A,I(:,3)); x=[x1,x2,x3]; end MATLAB routine for Norm: % Calculating Norm of matrix function n0= norm2(c) l=length(c); n0=0; for m=1:l for n=1:l n0 = n0 + c(m,n)*c(m,n); end end n0=sqrt(n0); end
  3. 3. MATLAB routine for Forward Substitution: % Implementing Forward Substitution function x=forward_subs(A,b) n=length(A); for i = 1:3 t=0; for j = 1:(i-1) t=t+A(i,j)*x(j); end x(i,1)=(b(i,1)-t)/A(i,i); end Part1: Part2: >> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1] >> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1] a= a= 1.0000 0.2000 0.2000 1.0000 0.5000 0.5000 0.2000 1.0000 0.2000 0.5000 1.0000 0.5000 0.2000 0.2000 1.0000 0.5000 0.5000 1.0000 >> b=[2;2;2] >> b=[2;2;2] b= b= 2 2 2 2 2 2 >> x=[0;0;0] >> x=[0;0;0] x= x= 0 0 0 0 0 0 >> gauss_siedel(a,b,x) >> gauss_siedel(a,b,x) The maximum no. of iteration required is 8 The maximum no of iteration required is 17 ans = ans = 1.4286 1.0000 1.4286 1.0000 1.4286 1.0000
  4. 4. Part3: >> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1] a= 1.0000 0.9000 0.9000 0.9000 1.0000 0.9000 0.9000 0.9000 1.0000 >> b=[2;2;2] b= 2 2 2 >> x=[0;0;0] x= 0 0 0 >> gauss_siedel(a,b,x) Norm of c is greater than 1, Solution will diverge ans = 0 0 0 ************************************************************************ Spectral radius of C: Spectral radius of C is maximum eigenvalue of C*CT. In this case C=(I+L)-1 * U
  5. 5. 1). >> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1] a= 1.0000 0.2000 0.2000 0.2000 1.0000 0.2000 0.2000 0.2000 1.0000 >> L=[0,0,0;.2,0,0;.2,.2,0] L= 0 0 0 0.2000 0 0 0.2000 0.2000 0 >> I=[1,0,0;0,1,0;0,0,1] I= 1 0 0 0 1 0 0 0 1 >> U=[0,.2,.2;0,0,.2;0,0,0] U= 0 0.2000 0.2000 0 0 0.2000 0 0 0 >> C=inv2(I+L)*U C= 0 0.2000 0.2000 0 -0.0400 0.1600 0 -0.0320 -0.0720 >> lamda=eig(C*C') lamda = 0.0000 0.0181 0.0953 >> SR=max(lamda) SR = Spectral Radius 0.0953
  6. 6. 2). >> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1] a= 1.0000 0.5000 0.5000 0.5000 1.0000 0.5000 0.5000 0.5000 1.0000 >> L=[0,0,0;.5,0,0;.5,.5,0] L= 0 0 0 0.5000 0 0 0.5000 0.5000 0 >> I=[1,0,0;0,1,0;0,0,1] I= 1 0 0 0 1 0 0 0 1 >> U=[0,.5,.5;0,0,.5;0,0,0] U= 0 0.5000 0.5000 0 0 0.5000 0 0 0 >> C=inv2(I+L)*U C= 0 0.5000 0.5000 0 -0.2500 0.2500 0 -0.1250 -0.3750 >> lamda=eig(C*C') lamda = 0.0000 0.1481 0.6332 >> SR=max(lamda) SR = Spectral Radius 0.6332
  7. 7. 3). >> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1] a= 1.0000 0.9000 0.9000 0.9000 1.0000 0.9000 0.9000 0.9000 1.0000 >> L=[0,0,0;.9,0,0;.9,.9,0] L= 0 0 0 0.9000 0 0 0.9000 0.9000 0 >> I=[1,0,0;0,1,0;0,0,1] I= 1 0 0 0 1 0 0 0 1 >> U=[0,.9,.9;0,0,.9;0,0,0] U= 0 0.9000 0.9000 0 0 0.9000 0 0 0 >> C=inv2(I+L)*U C= 0 0.9000 0.9000 0 -0.8100 0.0900 0 -0.0810 -0.8910 >> lamda=eig(C*C') lamda = 0.0000 0.7301 2.3546 >> SR=max(lamda) SR = Spectral Radius 2.3546
  8. 8. Steps vs t : Spectral radius vs t :
  9. 9. Ques2: Jacobi Method for Solving the Linear Equations: %Implementing Jacobi Method function x = jacobi(A,b,x) I=[1 0 0; 0 1 0; 0 0 1]; c=I-A; %Checking Norm if norm2(c) > 1 fprintf('nNorm is greater than one so it will diverge'); return; end for j=1:50 x=b+(I-A)*x; n=A*x-b; %checking the condition of tolerance to stop the iterations temp=0; for i = 1:3 temp= temp+ power(n(i,1),2); end temp=sqrt(temp); if temp < 0.0001 break; end end fprintf('nThe iteration required is %d',j); end MATLAB routine for Norm: % Calculating Norm of matrix function n0= norm2(c) l=length(c); n0=0; for m=1:l for n=1:l n0 = n0 + c(m,n)*c(m,n); end end n0=sqrt(n0); end
  10. 10. Part1: Part2 >> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1] >> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1] a= a= 1.0000 0.2000 0.2000 1.0000 0.5000 0.5000 0.2000 1.0000 0.2000 0.5000 1.0000 0.5000 0.2000 0.2000 1.0000 0.5000 0.5000 1.0000 >> b=[2;2;2] >> b=[2;2;2] b= b= 2 2 2 2 2 2 >> x=[0;0;0] >> x=[0;0;0] x= x= 0 0 0 0 0 0 >> jacobi(a,b,x) >> jacobi(a,b,x) The iteration required is 12 Norm is greater than one so it will diverge ans = ans = 1.4285 0 1.4285 0 1.4285 0
  11. 11. Part3 : >> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1] a= 1.0000 0.9000 0.9000 0.9000 1.0000 0.9000 0.9000 0.9000 1.0000 >> b=[2;2;2] b= 2 2 2 >> x=[0;0;0] x= 0 0 0 >> jacobi(a,b,x) Norm is greater than one so it will diverge ans = 0 0 0 From the Data we have calculated we find that Gauss_Siedel Method Diverge more fastly than Jacobi Method.
  12. 12. Ques3: Cholesky Method for Solving the Linear Equations: % Implementing Cholesky Method function x = cholesky(A,b,x) n=length(A) l(1,1)=sqrt(A(1,1)); for i=2:n l(i,1)=A(i,1)/l(1,1); end for j=2:(n-1) temp=0; for k=1:j-1 temp=temp+l(j,k)*l(j,k); end l(j,j)= sqrt(A(j,j)-temp); end for j=2:(n-1) for i=j+1:n temp=0; for k=1:j-1 temp=temp+l(i,k)*l(j,k); end l(i,j)=(A(i,j)-temp)/l(j,j); end end temp1=l(n,1)*l(n,1)+l(n,2)*l(n,2); l(n,n)=sqrt(A(n,n)-temp1); y=forward_subs(l,b); %Using Forward Substitution Concept x=back_subs(l',y); end
  13. 13. Part1: Part2 >> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1] >> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1] a= a= 1.0000 0.2000 0.2000 1.0000 0.5000 0.5000 0.2000 1.0000 0.2000 0.5000 1.0000 0.5000 0.2000 0.2000 1.0000 0.5000 0.5000 1.0000 >> b=[2;2;2] >> b=[2;2;2] b= b= 2 2 2 2 2 2 >> x=[0;0;0] >> x=[0;0;0] x= x= 0 0 0 0 0 0 >> cholesky(a,b,x) >> cholesky(a,b,x) ans = ans = 1.4286 1.0000 1.4286 1.0000 1.4286 1.0000
  14. 14. Part3: >> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1] a= 1.0000 0.9000 0.9000 0.9000 1.0000 0.9000 0.9000 0.9000 1.0000 >> b=[2;2;2] b= 2 2 2 >> x=[0;0;0] x= 0 0 0 >> cholesky(a,b,x) ans = 0.7143 0.7143 0.7143
  15. 15. Ques4: Matlab Subroutine to calculate Condition Number: % Calculating Condition Number function [] = cond(a,b,b1); x0=[0;0;0]; val1=max(abs(eig(a))); val2=min(abs(eig(a))); val=val1/val2 %definition of Condition number x=gauss_siedel(a,b,x0); x1=gauss_siedel(a,b1,x0); errip=norm(x-x1)/norm(x); errop=norm(b-b1)/norm(b); fprintf('nerror in i/p is %d nand error in o/p is %dn',errip,errop); end 1). >> a=[1 ,.2 .2;.2, 1, .2;.2, .2, 1] a= 1.0000 0.2000 0.2000 0.2000 1.0000 0.2000 0.2000 0.2000 1.0000 >> b=[2;2;2] b= 2 2 2 >> b1=[1.1;2.1;3.1] b1 = 1.1000 2.1000 3.1000
  16. 16. >> cond(a,b,b1) a= 1.0800 0.4400 0.4400 0.4400 1.0800 0.4400 0.4400 0.4400 1.0800 val = 3.0625 Condition Number. The maximum no. of iteration required is 14 error in i/p is 1.309812e+000 and error in o/p is 4.112988e-001 2). >> a=[1 ,.5 .5;.5, 1, .5;.5, .5, 1] a= 1.0000 0.5000 0.5000 0.5000 1.0000 0.5000 0.5000 0.5000 1.0000 >> b=[2;2;2] b= 2 2 2 >> b1=[1.1;2.1;3.1] b1 = 1.1000 2.1000 3.1000
  17. 17. >> cond(a,b,b1) a= 1.5000 1.2500 1.2500 1.2500 1.5000 1.2500 1.2500 1.2500 1.5000 val = 16.0000 Condition Number Norm of c is greater than 1, Solution will diverge. 3). >> a=[1 ,.9 .9;.9, 1, .9;.9, .9, 1] a= 1.0000 0.9000 0.9000 0.9000 1.0000 0.9000 0.9000 0.9000 1.0000 >> b1=[1.1;2.1;3.1] b1 = 1.1000 2.1000 3.1000 >> b1=[1.1;2.1;3.1] b1 = 1.1000 2.1000 3.1000 >> b=[2;2;2] b= 2 2 2
  18. 18. >> cond(a,b,b1) a= 2.6200 2.6100 2.6100 2.6100 2.6200 2.6100 2.6100 2.6100 2.6200 val = 28.0000 Condition Number. Norm of c is greater than 1, Solution will diverge.

×