Facebook
From Big Wolf, 5 Years ago, written in Plain Text.
This paste is a reply to Untitled from Sweet Leech - go back
Embed
Viewing differences between Untitled and Re: Untitled
#define N 5
#define MLI 30

double E = 0.0001;

void b(double alfa[N][N], double beta[N]);
void c(double alfa[N][N], double beta[N]);

int main()
{
        double alfa[N][N], beta[N];
        b(alfa, beta);
        c(alfa, beta);

}

void b(double alfa[N][N], double beta[N])
{
        double A[N][N] = { { 10, 1, 1, 1, 2 }, { 3, 20, 4, 2, 1 }, { 5, 1, 40, 9, 5 }, { 3, 0, 1, 10, 1 }, { 6, 2, 1, 1, 20 } };
        double B[N] = { 15, 30, 60, 15, 30 };

        for (int i = 0; i < N; i++)
        {
                for (int j = 0; j < N; j++)
                {
                        if (i == j)
                        {
                                if (alfa[i][j] == 0)
                                {
                                        std::cout << "Dzielenie przez ZERO/n";
                                        system("Pause");
                                        return;
                                }else{
                                        beta[i] = B[i] / A[i][i];
                                        alfa[i][j] = 0;
                                }
                        }
                        else if (A[i][i]!=0)
                        {
                                alfa[i][j] = -A[i][j] / A[i][i];
                        }
                }
        }
        
}

void c(double alfa[N][N], double beta[N])
{
        int licznik_iteracji = 0;
        double *Xnowy = beta;
        double *Xstary;
        double norma = 0;
        do{
                Xstary = Xnowy;
                licznik_iteracji++;
                for (int i = 0; i < N; i++)
                {
                        for (int j = 0; j < i-1; j++)
                        {
                                Xnowy[i] += Xnowy[j] * alfa[i][j];
                        }
                        for (int j = i; j < N; j++)
                        {
                                Xnowy[i] += alfa[i][j] * Xstary[j];
                        }
                        Xnowy[i] += Xstary[i];
                        for (i = 0; i < N; i++)
                        {
                                if (abs(Xnowy[i] - Xstary[i])>norma)
                                {
                                        norma = abs(Xnowy[i] - Xstary[i]);
                                }
                        }
                }
        } while (norma > E && MLI < licznik_iteracji);

        for (int i = 0; i < N; i++)
        {
                std::cout << "   " << Xnowy[i];
        }

        std::cout << std::endl << "   " << licznik_iteracji << std::endl;