Gauss Jacobi Inversion Method
Algorithm Of Gauss Jacobi Inversion Method GaussJacobiinversion(a,n) { for(k=0 to k<n) { for(c=n*2 to c>=0) { a[k][c]=a[k][c]/a[k][k] } for(r=0 to r<n) { if(k!=r) { m=a[r][k] for(col=0col<n*2col++) a[r][col]=a[r][col]-m*a[k][col] } } } } C Program For Gauss Jacobi Inversion Method Source Code: #include<stdio.h> #include<conio.h> #include<stdlib.h> linkfloat() { float a,*b; b=&a; a=*b; } void show(float **A,int n1,int n2) { int i,j; for(i=1;i<=n1;i++) { for(j=1;j<=n2;j++) { printf("\t%g",A[i][j]); } printf("\n"); } } void gauss_jacob_inv(float **A,float B[5][5],int n) { int k,i,j,row,col,n1; float m,s,R[5],C[5][5]; n1=n; for(k=1;k<=n;k++) { for(col=2*n;col>=1;col--) { A[k][col]=A[k][col]/A[k][k]; } for(row=1;row<=n;row++) { if(k!=row) { m=A[row][k]; for(col=1;col<=2*n;col++) { A[row][col]=A[row][col]-m*A[k][col]; } } } printf("\nStep %d:",k); show(A,n1,2*n1); printf("--------------------------------------"); } printf("\nLast step:\n"); show(A,n1,2*n1); for(i=1;i<=n;i++) { j=1; k=n+1; while(j<=n && k<=2*n) { C[i][j]=A[i][k]; j++; k++; } } printf("\nmatrix c :\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf(" %g",C[i][j]); } printf("\n"); } for(i=1;i<=n;i++) { s=0; for(j=1;j<=n;j++) { s=s+C[i][j]*B[j][1]; } R[i]=s; } for(i=1;i<=n;i++) { printf("\nX%d=%g",i,R[i]); } } void main() { int n,r,c,j,i; float **A,B[5][5]; clrscr(); printf("\nEnter number of variables:"); scanf("%d",&n); r=n+1; c=n+2; A=(float **)malloc(sizeof(float *)*r); for(i=1;i<=r;i++) { A[i]=(float *)malloc(sizeof(float)*2*c); } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("\nEnter term %d of equation %d:",j,i); fflush(stdin); scanf("%f",&A[i][j]); } } for(i=1;i<=n;i++) { for(j=1;j<=1;j++) { printf("\nEnter const part of eqn%d :",i); fflush(stdin); scanf("%f",&B[i][j]); } } for(i=1;i<=n;i++) { for(j=1;j<=2*n;j++) { if(j>n) { if(j==i+3) { A[i][j]=1; } else { A[i][j]=0; } } } } printf("\nInitially: matrix A\n"); show(A,n,2*n); printf("\n\t\tmatrix B\n"); for(i=1;i<=n;i++) { for(j=1;j<=1;j++) { printf("%g",B[i][j]); } printf("\n"); } gauss_jacob_inv(A,B,n); getch(); }
Tags:
Linear
0 comments