Tuesday, 21 April 2015

Gauss_Jacobi

Gauss Jacobi Method

Code : 
 #include<stdio.h>  
 #include<conio.h>  
 #include<math.h>  
 void main()  
 {  
      float x[50], y[50], z[50], xans, yans, zans;  
      int i,j,ac, xt, yt, zt, xt1, yt1, zt1;  
      float a[3][3],b[3];  
      clrscr();  
      printf("\nEnter Matrix for Gauss Jacobi Method : \n");  
      for(i=0;i<3;i++)  
      {  
           for(j=0;j<3;j++)  
           {  
                printf("Enter A[%d][%d] : ",i,j);  
                scanf("%f",&a[i][j]);  
           }  
      }  
      printf("\nEnter column vactor of constant : \n");  
      for(i=0;i<3;i++)  
      {  
           printf("Enter B[%d] : ",i);  
           scanf("%f",&b[i]);  
      }  
      x[0]=0;  
      y[0]=0;  
      z[0]=0;  
      printf("\nEnter accuracy : ");  
      scanf("%d",&ac);  
      printf("\nNo.\tX\t\tY\t\tZ");  
      for(i=0;i<50;i++)  
      {  
           x[i+1] = (1/a[0][0]) * (b[0] - (a[1][0]*y[i]) - (a[2][0]*z[i]) );  
           y[i+1] = (1/a[1][1]) * (b[1] - (a[0][1]*x[i]) - (a[2][1]*z[i]) );  
           z[i+1] = (1/a[2][2]) * (b[2] - (a[0][2]*x[i]) - (a[1][2]*y[i]) );  
           xt = x[i] * pow(10,ac);  
           yt = y[i] * pow(10,ac);  
           zt = z[i] * pow(10,ac);  
           xt1 = x[i+1] * pow(10,ac);  
           yt1 = y[i+1] * pow(10,ac);  
           zt1 = z[i+1] * pow(10,ac);  
           printf("\n%d.\t%f\t%f\t%f",i,x[i],y[i],z[i]);  
           if(abs(xt-xt1)==0 && abs(yt-yt1)==0 && abs(zt-zt1)==0)  
           {  
                break;  
           }  
      }  
      xans = xt * pow(10,-ac);  
      yans = yt * pow(10,-ac);  
      zans = zt * pow(10,-ac);  
      printf("\n\nRequired %d Decimal accurate answer is : \n==>\tX = %f\tY = %f\tZ = %f", ac, xans, yans, zans);  
      getch();  
 }  

Output : 

No comments:

Post a Comment