Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вычесления опредилителя 4х4

18K
28 мая 2006 года
TOXA23
2 / / 28.05.2006
как можно вычеслить опредилитель 4х4 спомощью цикла или какнибудь динамически
929
29 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by TOXA23
как можно вычеслить опредилитель 4х4 спомощью цикла или какнибудь динамически


Можно рекурсивно.
Определитель раскладывается по первому ряду следующим образом:

Код:
|a11 a12 a13 a14|
|a21 a22 a23 a24|
|a31 a32 a33 a34|
|a41 a42 a43 a44|

= (-1)^(1+1) * a11 * |a22 a23 a24| +
                     |a32 a33 a34|
                     |a42 a43 a44|

+ (-1)^(1+2) * a12 * |a21 a23 a24| +
                     |a31 a33 a34|
                     |a41 a43 a44|

+ (-1)^(1+3) * a13 * |a21 a22 a24| +
                     |a31 a32 a34|
                     |a41 a42 a44|

+ (-1)^(1+4) * a14 * |a21 a22 a23|
                     |a31 a32 a33|
                     |a41 a42 a43|

Далее определитель 3-го порядка аналогично:
Код:
|a11 a12 a13|
|a21 a22 a23|
|a31 a32 a33|

= (-1)^(1+1) * a11 * |a22 a23| +
                     |a32 a33|

+ (-1)^(1+2) * a12 * |a21 a23| +
                     |a31 a33|

+ (-1)^(1+3) * a13 * |a21 a22|
                     |a31 a32|

Далее определитель 2-го порядка:
 
Код:
|a11 a12|
|a21 a22|

= (-1)^(1+1) * a11 * |a22| +

+ (-1)^(1+2) * a12 * |a21|

А определитель 1-го порядка равен элементу:
 
Код:
|a11| = (-1)^(1+1) * a11 = a11
18K
29 мая 2006 года
TOXA23
2 / / 28.05.2006
Цитата:
Originally posted by sp999
Можно рекурсивно.
Определитель раскладывается по первому ряду следующим образом:
Код:
|a11 a12 a13 a14|
|a21 a22 a23 a24|
|a31 a32 a33 a34|
|a41 a42 a43 a44|

= (-1)^(1+1) * a11 * |a22 a23 a24| +
                     |a32 a33 a34|
                     |a42 a43 a44|

+ (-1)^(1+2) * a12 * |a21 a23 a24| +
                     |a31 a33 a34|
                     |a41 a43 a44|

+ (-1)^(1+3) * a13 * |a21 a22 a24| +
                     |a31 a32 a34|
                     |a41 a42 a44|

+ (-1)^(1+4) * a14 * |a21 a22 a23|
                     |a31 a32 a33|
                     |a41 a42 a43|

Далее определитель 3-го порядка аналогично:
Код:
|a11 a12 a13|
|a21 a22 a23|
|a31 a32 a33|

= (-1)^(1+1) * a11 * |a22 a23| +
                     |a32 a33|

+ (-1)^(1+2) * a12 * |a21 a23| +
                     |a31 a33|

+ (-1)^(1+3) * a13 * |a21 a22|
                     |a31 a32|

Далее определитель 2-го порядка:
 
Код:
|a11 a12|
|a21 a22|

= (-1)^(1+1) * a11 * |a22| +

+ (-1)^(1+2) * a12 * |a21|

А определитель 1-го порядка равен элементу:
 
Код:
|a11| = (-1)^(1+1) * a11 = a11



я все это себе предстовляю, но немогу написать сам код проги...

929
30 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by TOXA23
я все это себе предстовляю, но немогу написать сам код проги...


Вот немного коряво (не Сишник я), но работает:

Код:
#pragma hdrstop
#pragma argsused
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <conio.h>

int A[4][4]={{2,5,3,8},
             {7,3,9,2},
             {1,6,0,2},
             {5,2,8,7}};

int Calculate(int N, int M[4][4])
{
        if (N == 1)
                return M[0][0];
        else
        {
                int M1[4][4];
                int i, x, X, Y, Res = 0;
                for (i = 0; i < N; i++)
                {
                        for (Y = 1; Y < N; Y++)
                        {
                                x = 0;
                                for (X = 0; X < N; X++)
                                        if (X != i)
                                                M1[Y-1][x++] = M[Y][X];
                        }
                        if (i % 2 == 0)
                                Res += M[0] * Calculate(N - 1, M1);
                        else
                                Res -= M[0] * Calculate(N - 1, M1);
                }
                return Res;
        }
}

int main(int argc, char* argv[])
{
        int Op = Calculate(4, A);
        cout << Op << endl;
        getch();
        return 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог