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

7,666

Published on

mayank awasthi......iiit jabalpur ECE

Published in: Education, Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,666
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
135
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "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.

×