Logo 
Search:

C++ Programming Articles

Submit Article
Home » Articles » C++ Programming » Mathematics ProgramRSS Feeds

Program to read a Linear System of Equations,then evaluate it by using Jacobi's Itrative Method and show the result

Posted By: Easy Tutor     Category: C++ Programming     Views: 3340

A C++ Program to read a Linear System of Equations,then evaluate it by using Jacobi's Itrative Method and show the result.

Code for Program to read a Linear System of Equations,then evaluate it by using Jacobi's Itrative Method and show the result in C++ Programming

 # include <iostream.h>
 # include   <stdlib.h>
 # include    <stdio.h>
 # include    <conio.h>
 # include     <math.h>

 constint max_size=5;

 int n=0;
 int iterations=0;

 char Diagonally_dominant=NULL;

 longdouble input[max_size][max_size]={0};
 longdouble previous_output[max_size]={0};
 longdouble output[max_size]={0};

 void show_screen( );
 void clear_screen( );
 void get_size_of_linear_equations( );
 void show_input(constint,constint);
 void get_input_linear_equation( );
 void sort_system_of_linear_equations( );
 void apply_jacobi_iterative_method( );
 void show_result( );

 int main( )
    {
       clrscr( );
       textmode(C4350);

       show_screen( );
       get_size_of_linear_equations( );
       get_input_linear_equation( );

       if(Diagonally_dominant=='Y' || Diagonally_dominant=='y')
      sort_system_of_linear_equations( );

       apply_jacobi_iterative_method( );
       show_result( );

       getch( );
       return 0;
    }

 /*************************************************************************///--------------------------  show_screen( )  ---------------------------///*************************************************************************/void show_screen( )
    {
       cprintf("\n********************************************************************************");
       cprintf("*************************-                            -*************************");
       cprintf("*------------------------- ");

       textbackground(1);
       cprintf(" Jacobi's Itrative Method ");
       textbackground(8);

       cprintf(" -------------------------*");
       cprintf("************************-                             -*************************");
       cprintf("********************************************************************************");

       for(int count=0;count<42;count++)
      cprintf("*                                                                              *");

       gotoxy(1,46);
       cprintf("********************************************************************************");
       cprintf("*------------------------------------------------------------------------------*");
       cprintf("********************************************************************************");

       gotoxy(1,2);
    }

 /*************************************************************************///-------------------------  clear_screen( )  ---------------------------///*************************************************************************/void clear_screen( )
    {
       textbackground(8);

       for(int count=0;count<37;count++)
      {
         gotoxy(3,8+count);
         cout<<"                                                                            ";
      }

       gotoxy(1,2);
    }

 /*************************************************************************///------------------  get_size_of_linear_equations( )  ------------------///*************************************************************************/void get_size_of_linear_equations( )
    {
       do
      {
         clear_screen( );

         gotoxy(38,11);
         cout<<"[ Maximum size = 4 ]";

         gotoxy(4,9);
         cout<<"Enter the size of the System of Linear Equations = n = ";

         cin>>n;

         if(n<=0 || n>max_size)
        {
           gotoxy(12,25);
           cout<<"Error : Wrong Input. Press <Esc> to exit or any other key";

           gotoxy(12,26);
           cout<<"        to try again.";

           n=int(getche( ));

           if(n==27)
              exit(0);
        }
      }
       while(n<=0 || n>max_size);

       gotoxy(4,15);
       cout<<"Enter the number of iterations that you want to perform = ";

       cin>>iterations;

       gotoxy(4,18);
       cout<<"Do you want to make the System Diagonally Dominant : (Y/N) ? : ";

       cin>>Diagonally_dominant;

       gotoxy(1,2);
    }

 /*************************************************************************///-----------------  show_input(const int,const int)  -------------------///*************************************************************************/void show_input(constint x,constint y)
    {
       int counter=0;
       int number_of_inputs=((x*n)+y+x);

       for(int count_1=0;count_1<n;count_1++)
      {
         gotoxy(4,(17+(count_1*2)));
         cout<<"                                                                      ";

         gotoxy(4,(17+(count_1*2)));

         for(int count_2=0;count_2<=n;count_2++)
        {
           if(counter==(number_of_inputs+1))
              textbackground(12);

           else
              textbackground(8);

           if(count_2==n)
              gotoxy((wherex( )+5),(17+(count_1*2)));

           gotoxy(wherex( ),(17+(count_1*2)));
           cprintf("      ");

           if(count_2==n)
              gotoxy((wherex( )-5),(17+(count_1*2)));

           gotoxy((wherex( )-6),(17+(count_1*2)));

           if(counter<=number_of_inputs && counter!=-1)
              {
             if(count_2==n)
                {
                   cout<<"  =  ";
                   cout<<input[count_1][count_2];
                }

             elseif(count_2==0)
                cout<<input[count_1][count_2]<<" x"<<(count_2+1);

             else
                cout<<fabs(input[count_1][count_2])<<" x"<<(count_2+1);
              }

           elseif(count_2==n)
              cout<<"  =  b"<<(count_1+1);

           else
              cout<<"a"<<(count_1+1)<<(count_2+1)<<" x"<<(count_2+1);

           if(count_2<(n-1) && input[count_1][(count_2+1)]>=0)
              cout<<"  +  ";

           elseif(count_2<(n-1))
              cout<<"  -  ";

           counter++;
        }
      }
    }

 /*************************************************************************///--------------------  get_input_linear_equation( )  -------------------///*************************************************************************/void get_input_linear_equation( )
    {
       clear_screen( );

       gotoxy(4,9);
       cout<<"Size of the System of Linear Equations = n = "<<n;

       gotoxy(4,13);
       cout<<"System of Linear Equations :";

       gotoxy(4,14);
       cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";

       show_input(0,-1);

       for(int count_1=0;count_1<n;count_1++)
      {
         for(int count_2=0;count_2<=n;count_2++)
        {
           gotoxy(4,35);
           cout<<"                                                                    ";

           gotoxy(4,35);

           if(count_2<n)
             cout<<"Enter the value of a"<<(count_1+1)<<(count_2+1)<<" =  ";

           else
             cout<<"Enter the value of b"<<(count_1+1)<<" =  ";

           cin>>input[count_1][count_2];

           show_input(count_1,count_2);
        }
      }
    }

 /*************************************************************************///-----------------  sort_system_of_linear_equations( )  ----------------///*************************************************************************/void sort_system_of_linear_equations( )
    {
       for(int count_1=0;count_1<(n-1);count_1++)
      {
         for(int count_2=count_1;count_2<(n-1);count_2++)
        {
           for(int count_3=count_1;count_3<(n-1);count_3++)
              {
             longdouble temp[max_size]={0};

             if(fabs(input[count_3][count_1])<
                       fabs(input[(count_3+1)][count_1]))
                {
                   for(int count_4=0;count_4<=n;count_4++)
                  temp[count_4]=input[count_3][count_4];

                   for(int count_5=0;count_5<=n;count_5++)
                  input[count_3][count_5]=
                         input[(count_3+1)][count_5];

                   for(int count_6=0;count_6<=n;count_6++)
                  input[(count_3+1)][count_6]=temp[count_6];
                }
              }
        }
      }
    }

 /*************************************************************************///------------------  apply_jacobi_iterative_method( )  -----------------///*************************************************************************/void apply_jacobi_iterative_method( )
    {
       clear_screen( );

       gotoxy(4,10);
       cout<<"Solution :";

       gotoxy(4,11);
       cout<<"ÍÍÍÍÍÍÍÍÍÍ";

       if(n==1)
      {
         gotoxy(4,13);
         cout<<"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";

         gotoxy(4,14);
         cout<<"³   n   ³      X1       ³";

         gotoxy(4,15);
         cout<<"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´";

         gotoxy(4,16);
         cout<<"³       ³               ³";
      }

       elseif(n==2)
      {
         gotoxy(4,13);
         cout<<"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";

         gotoxy(4,14);
         cout<<"³   n   ³      X1       ³      X2       ³";

         gotoxy(4,15);
         cout<<"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´";

         gotoxy(4,16);
         cout<<"³       ³               ³               ³";
      }

       elseif(n==3)
      {
         gotoxy(4,13);
         cout<<"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";

         gotoxy(4,14);
         cout<<"³   n   ³      X1       ³      X2       ³      X3       ³";

         gotoxy(4,15);
         cout<<"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´";

         gotoxy(4,16);
         cout<<"³       ³               ³               ³               ³";
      }

       elseif(n==4)
      {
         gotoxy(4,13);
         cout<<"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";

         gotoxy(4,14);
         cout<<"³   n   ³      X1       ³      X2       ³      X3       ³      X4       ³";

         gotoxy(4,15);
         cout<<"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´";

         gotoxy(4,16);
         cout<<"³       ³               ³               ³               ³               ³";
      }

       for(int count_1=0;count_1<n;count_1++)
      {
         longdouble temp[max_size]={0};

         for(int count_2=0;count_2<=n;count_2++)
        {
           if(count_2!=count_1)
              temp[count_2]=(input[count_1][count_2]/input[count_1][count_1]);
        }

         for(int count_3=0;count_3<=n;count_3++)
        input[count_1][count_3]=temp[count_3];
      }

       for(int count_4=0;count_4<n;count_4++)
      {
         for(int count_5=0;count_5<n;count_5++)
        input[count_4][count_5]*=-1;
      }

       int x_cord=4;
       int y_cord=17;

       for(int count_6=0;count_6<=iterations;count_6++)
      {
         if(n==1)
        {
           gotoxy(x_cord,y_cord);
           cout<<"³       ³               ³";

           gotoxy(x_cord,(y_cord+1));
           cout<<"³       ³               ³";
        }

         elseif(n==2)
        {
           gotoxy(x_cord,y_cord);
           cout<<"³       ³               ³               ³";

           gotoxy(x_cord,(y_cord+1));
           cout<<"³       ³               ³               ³";
        }

         elseif(n==3)
        {
           gotoxy(x_cord,y_cord);
           cout<<"³       ³               ³               ³               ³";

           gotoxy(x_cord,(y_cord+1));
           cout<<"³       ³               ³               ³               ³";
        }

         elseif(n==4)
        {
           gotoxy(x_cord,y_cord);
           cout<<"³       ³               ³               ³               ³               ³";

           gotoxy(x_cord,(y_cord+1));
           cout<<"³       ³               ³               ³               ³               ³";
        }

         gotoxy((x_cord+3),y_cord);
         cout<<count_6;

         gotoxy((x_cord+10),y_cord);
         cout<<output[0];

         if(n>=2)
        {
           gotoxy((x_cord+26),y_cord);
           cout<<output[1];
        }

         if(n>=3)
        {
           gotoxy((x_cord+42),y_cord);
           cout<<output[2];
        }

         if(n>=4)
        {
           gotoxy((x_cord+58),y_cord);
           cout<<output[3];
        }

         for(int count_7=0;count_7<n;count_7++)
        {
           output[count_7]=0;

           for(int count_8=0;count_8<n;count_8++)
              {
             if(count_8!=count_7)
                output[count_7]+=(input[count_7][count_8]*previous_output[count_8]);
              }

           output[count_7]+=input[count_7][count_8];
        }

         for(int count_9=0;count_9<n;count_9++)
        previous_output[count_9]=output[count_9];

         y_cord+=2;

         if((count_6%12)==0 && count_6<iterations && count_6>0)
        {
           y_cord=17;

           gotoxy(30,44);
           cout<<"Press any key to continue...";
           getch( );

           for(int count_10=1;count_10<25;count_10++)
              {
             gotoxy(3,(16+count_10));
             cout<<"                                                                            ";
              }
        }
      }

       if(n==1)
      {
         gotoxy(x_cord,y_cord);
         cout<<"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";
      }

       elseif(n==2)
      {
         gotoxy(x_cord,y_cord);
         cout<<"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";
      }

       elseif(n==3)
      {
         gotoxy(x_cord,y_cord);
         cout<<"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";
      }

       elseif(n==4)
      {
         gotoxy(x_cord,y_cord);
         cout<<"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";
      }

       gotoxy(30,44);
       cout<<"Press any key to continue...";
       getch( );
    }

 /*************************************************************************///-----------------------------  show_result( )  ------------------------///*************************************************************************/void show_result( )
    {
       clear_screen( );

       gotoxy(4,9);
       cout<<"Jacobi's System of Linear Equations :";

       gotoxy(4,10);
       cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";

       for(int count_1=0;count_1<n;count_1++)
      {
         gotoxy(4,(13+(count_1*3)));
         cout<<"x"<<(count_1+1);

         gotoxy((wherex( )-1),(wherey( )-1));
         cout<<"(k+1)";

         gotoxy((wherex( )-3),(wherey( )+1));
         cout<<"    =  ";

         for(int count_2=0;count_2<=n;count_2++)
        {
           gotoxy(wherex( ),(13+(count_1*3)));

           if(count_2!=count_1 && count_2<n)
              {
             if(count_2!=0)
                cout<<fabs(input[count_1][count_2])<<" x"<<(count_2+1);

             else
                cout<<input[count_1][count_2]<<" x"<<(count_2+1);

             gotoxy((wherex( )-1),(wherey( )-1));
             cout<<"(k)";

             gotoxy((wherex( )-1),(wherey( )+1));

             if(input[count_1][(count_2+1)]>=0)
                cout<<" + ";

             else
                cout<<" - ";
              }

           elseif(count_2!=count_1)
              cout<<fabs(input[count_1][count_2]);
        }
      }

       if(Diagonally_dominant=='Y' || Diagonally_dominant=='y')
      {
         gotoxy(4,26);
         cout<<"Note: The given System of Linear Equations is solved by making it";

         gotoxy(10,28);
         cout<<"Diagonally Dominant.";
      }

       gotoxy(4,31);
       cout<<"Result of Given System of Linear Equations :";

       gotoxy(4,32);
       cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";

       for(int count_3=0;count_3<n;count_3++)
      {
         gotoxy(8,(34+count_3+count_3));
         cout<<"x"<<(count_3+1)<<" = "<<output[count_3];
      }

       gotoxy(4,(36+count_3+count_3));
       cout<<"* Number of Iterations for the above result = "<<iterations<<".";

       gotoxy(1,2);
    }
  
Share: 



Easy Tutor
Easy Tutor author of Program to read a Linear System of Equations,then evaluate it by using Jacobi's Itrative Method and show the result is from United States. Easy Tutor says

Hello Friends,

I am Free Lance Tutor, who helped student in completing their homework.

I have 4 Years of hands on experience on helping student in completing their homework. I also guide them in doing their final year projects.

I have share many programs on this website for everyone to use freely, if you need further assistance, than please contact me on easytutor.2ya [at the rate] gmail [dot] com

I have special discount scheme for providing tutor services. I am providing tutor service to students from various contries, currently most of my students are from United States, India, Australia, Pakistan, Germany, UK and Canada.

I am also here to expand my technical network to receive more opportunity in my career, make friends to help them in resolving their technical problem, learn and share my knowledge, If you like to be my friend, Please send me friend request.

Thanks,
Happy Programming :)

 
View All Articles

Related Articles and Code:


 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
Sam Servin from United States Comment on: Oct 09
That Jacobi code looks very complicated. What i need is: to read a text file containing equations like these

2x - 5y + 3z = 10
5x + y - 2z = 4
-4x +3y -z = 6

and then do jacobi on them. Can you tell me how I can read those equations from file. I am planning to have those before the "=" sign in an A[][] matrix and the numbers after "=" in B[] matrix.

View All Comments