Вычисление определителя матрицы 4х4 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
int main()
{
int B[3][3],i,j,det;
printf("MATRIX 3x3:\n");
for (i=0;i<3;i++)
    for (j=0;j<3;+j++)
        scanf("%d",&B[i][j]);
det=(B[0][0]*(B[1][1]*B[2][2]-B[1][2]*B[2][1]))
-(B[0][1]*(B[1][0]*B[2][2]-B[1][2]*B[2][0]))
+(B[0][2]*(B[1][0]*B[2][1]-B[1][1]*B[2][0]));
                                printf("%d",det);
}
то что выше это 3х3.а если ставить 4х4 то a11-0.0,a12-0.1,a13-0.2.а вот a14 будет 0.3?и можно как то проще посчитать чем я которые написал?

Решение задачи: «Вычисление определителя матрицы 4х4»

textual
Листинг программы
#include <stdio.h>
int main()
{
int B[4][4],i,j,det1,det2,det3,det4,fin;
printf("MATRIX 4x4:\n");
for (i=0;i<4;i++){
    for (j=0;j<4;+j++){
        scanf("%d",&B[i][j]);
    }
}
printf("MATRIX 4X4:\n");
for (i=0;i<4;i++){
    for (j=0;j<4;+j++){
        printf("%d ",B[i][j]);
        }
        printf("\n");
    };
printf("PO PERVOMU:\n");
det1 = (B[1][1]*((B[2][2]*B[3][3])-(B[2][3]*B[3][2])))-
(B[1][2]*((B[2][1]*B[3][3])-(B[2][3]*B[3][1])))+
(B[1][3]*((B[2][1]*B[3][2])-(B[2][2]*B[3][1])));
printf("[%d][%d][%d]\n",B[1][1],B[1][2],B[1][3]);
printf("[%d][%d][%d]=[%d]\n",B[2][1],B[2][2],B[2][3],det1);
printf("[%d][%d][%d]\n",B[3][1],B[3][2],B[3][3]);
printf("PO VTOROMU:\n");
det2 = (B[1][0]*((B[2][2]*B[3][3])-(B[2][3]*B[3][2])))-
(B[1][2]*((B[2][0]*B[3][3])-(B[2][3]*B[3][0])))+
(B[1][3]*((B[2][0]*B[3][2])-(B[2][2]*B[3][0])));
printf("[%d][%d][%d]\n",B[1][0],B[1][2],B[1][3]);
printf("[%d][%d][%d]=[%d]\n",B[2][0],B[2][2],B[2][3],det2);
printf("[%d][%d][%d]\n",B[3][0],B[3][2],B[3][3]);
printf("PO TRIETEMU:\n");
det3 = (B[1][0]*((B[2][1]*B[3][3])-(B[2][3]*B[3][1])))-
(B[1][1]*((B[2][0]*B[3][3])-(B[2][3]*B[3][0])))+
(B[1][3]*((B[2][0]*B[3][1])-(B[2][1]*B[3][0])));
printf("[%d][%d][%d]\n",B[1][0],B[1][1],B[1][3]);
printf("[%d][%d][%d]=[%d]\n",B[2][0],B[2][1],B[2][3],det3);
printf("[%d][%d][%d]\n",B[3][0],B[3][1],B[3][3]);
printf("PO CHETVERTOMU:\n");
det4 = (B[1][0]*((B[2][1]*B[3][2])-(B[2][2]*B[3][1])))-
(B[1][1]*((B[2][0]*B[3][2])-(B[2][2]*B[3][0])))+
(B[1][2]*((B[2][0]*B[3][1])-(B[2][1]*B[3][0])));
printf("[%d][%d][%d]\n",B[1][0],B[1][1],B[1][2]);
printf("[%d][%d][%d]=[%d]\n",B[2][0],B[2][1],B[2][2],det4);
printf("[%d][%d][%d]\n",B[3][0],B[3][1],B[3][2]);
fin=((B[0][0]*det1)-(B[0][1]*det2)+(B[0][2]*det3)-(B[0][3]*det4));
printf("FINALNII DETERMINANT:\n");
printf("DET=(%d*(%d))-(%d*(%d))+(%d*(%d))-(%d*(%d))=%d",B[0][0],det1,B[0][1],det2,B[0][2],det3,B[0][3],det4,fin);

Объяснение кода листинга программы

  1. Ввод матрицы 4х4 с помощью функции scanf.
  2. Вывод матрицы на экран с помощью функции printf.
  3. Вычисление определителя по формуле Лапласа для первого столбца.
  4. Вычисление определителя по формуле Лапласа для второго столбца.
  5. Вычисление определителя по формуле Лапласа для третьего столбца.
  6. Вычисление определителя по формуле Лапласа для четвертого столбца.
  7. Вычисление финального определителя как произведения произведения соответствующих элементов строки и столбца матрицы.
  8. Вывод финального определителя на экран с помощью функции printf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы