Frage von Guentraud, 27

Wie berechnet dieses Programm die Determinante?

int determinant(int f[20][20], int x) {

int pr, c[20], d = 0, b[20][20], j, p, q, t;



if (x == 2)
{
    d = 0;

    d = (f[1][1] * f[2][2]) - (f[1][2] * f[2][1]);

    return(d);
}



else {

    for
        (j = 1; j <= x; j++)

    {

        int
            r = 1, s = 1;

        for
            (p = 1; p <= x; p++)

        {

            for
                (q = 1; q <= x; q++)

            {

                if
                    (p != 1 && q != j)

                {

                    b[r][s] = f[p][q];

                    s++;

                    if
                        (s > x - 1)

                    {

                        r++;

                        s = 1;

                    }

                }

            }

        }

        for
            (t = 1, pr = 1; t <= (1 + j); t++)

            pr = (-1)*pr;

        c[j] = pr*determinant(b, x - 1);

    }

    for
        (j = 1, d = 0; j <= x; j++)

    {

        d = d + (f[1][j] * c[j]);

    }

    return
        (d);

}

}

Antwort
von triopasi, 14

Für eine 2x2 Matrix gibt es eine explizite Formel. Ansonsten wird glaub ich der Laplace'sche Entwicklungssatz genutzt, habe den Code aber nur gannzz grob überflogen. (Sieht aber wegen der Rekursion mit x-1 als Große sehr danach aus.)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten