Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Help plz!!! (http://www.go4expert.com/forums/help-plz-t1831/)

girish3110 8Nov2006 12:25

Help plz!!!
 
Hello there!! Am havin a lil problem with a program that should carry out iterative methods,namely Jacobi and Seidel methods. The problem is that I don't know (or I can't) how to stop the iteration. The code is given below and if anyone could make any adjustments,plz...
Code:

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#define err 1e-4
void main()
{
        int a[3],b[3],c[3],d[3],i,n,choice=0;

        //Displays the 'format' of the linear equations.
        for (i=1;i<=3;i++)
                cout<<"a"<<i<<"x + b"<<i<<"y + c"<<i<<"z = d"<<i<<endl;
        cout<<endl;
       
        //Asks user to input the values of a,b,c,d and the accuracy of the calculation.
        for (i=0;i<3;i++)
        {
                cout<<"Enter value of a"<<i+1<<" :";
                cin>>a[i];
                cout<<"Enter value of b"<<i+1<<" :";
                cin>>b[i];
                cout<<"Enter value of c"<<i+1<<" :";
                cin>>c[i];
                cout<<"Enter value of d"<<i+1<<" :";
                cin>>d[i];
                cout<<endl;
        }
        cout<<"Enter the accuracy(number of decimal places): ";
        cin>>n;
        //clrscr();

        //Displays the linear equations.
        for (i=0;i<3;i++)
                cout<<a[i]<<"x + "<<b[i]<<"y + "<<c[i]<<"z = "<<d[i]<<endl;
        cout<<endl;

        //Asks user to choose iterative method.
        do
        {
                cout<<"Choose iterative method..."<<endl<<endl;
                cout<<"1. Gauss Jacobi"<<endl;
                cout<<"2. Gauss Seidel"<<endl<<endl;
                cout<<"Enter choice: ";
                cin>>choice;
                if ((choice==1) || (choice==2)) //Exit the WHILE..DO loop if either 1 or 2 is input.
                        break;
        }while((choice!=1)||(choice!=2));

        if (choice==1) //If 1 is input, perform Gauss-Jacobi method;
        {
                int k=1;
                float x,y,z,x1,y1,z1,x2,y2,z2;
                y=0;
                z=0;
                x=0;
                x1=(d[0]-(b[0]*y)-(c[0]*z))/a[0];
                y1=(d[1]-(a[1]*x)-(c[1]*z))/b[1];
                z1=(d[2]-(a[2]*x)-(b[2]*y))/c[2];
                cout<<"x:"<<setprecision(n)<<x1<<"\t";
                cout<<"y:"<<setprecision(n)<<y1<<"\t";
                cout<<"z:"<<setprecision(n)<<z1<<endl<<endl;
                do
                {
                        x2=x;
                        y2=y;
                        z2=z;
                        x=(d[0]-(b[0]*y1)-(c[0]*z1))/a[0];
                        y=(d[1]-(a[1]*x1)-(c[1]*z1))/b[1];
                        z=(d[2]-(a[2]*x1)-(b[2]*y1))/c[2];
                        k++;
                        x1=x;
                        y1=y;
                        z1=z;
                        cout<<"x:"<<setprecision(n)<<x1<<"\t";
                        cout<<"y:"<<setprecision(n)<<y1<<"\t";
                        cout<<"z:"<<setprecision(n)<<z1<<endl<<endl;
                }while(???);

                cout<<"Using Gauss-Jacobi Method..."<<endl;
                cout<<"Number of iterations performed: "<<k<<endl;
                cout<<"Value of x is "<<x1<<endl;
                cout<<"Value of y is "<<y1<<endl;
                cout<<"Value of z is "<<z1<<endl;
        }

        else //If 2 is input, perform Gauss-Seidel method.
                cout<<"Seidel";
}

The Do...WHILE loop is the problem. Try using the following values for the program:
a1=8 , b1=-3 , c1=2 , d1=20
a2 =4 , b2=11 , c2=-1 , d2=33
a3=6 , b3=3 , c3=12 , d3=35

The answers should be x= 3.0168 , y= 1.9859 and z=0.9118

pradeep 8Nov2006 12:49

Re: Help plz!!!
 
What algorithm is this?

girish3110 8Nov2006 12:58

Re: Help plz!!!
 
It's used to solve a system of linear equations by using iteration and the method is that of Jacobi.

girish3110 8Nov2006 15:45

Re: Help plz!!!
 
Can anyone help me?? I just need to know whever the values of x2-x1 are converging...


All times are GMT +5.5. The time now is 19:10.