Aller au contenu

Algèbre matricielle

Algèbre matricielle

Transposée d'une matrice

#include <stdio.h>
#define N 3
#define M 2

int main()
{
    int i, j;
    int A[N][M], T[M][N];

    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            T[j][i] = A[i][j];
        }
    }
}

Trace d'une matrice

#include <stdio.h>
#define N 3

int main()
{
    int i, j;
    int A[N][N];
    int trace;

    trace=0;
    for(i=0; i<N; i++)
    {
        trace += A[i][i];
    }
}

Somme de deux matrices

#include <stdio.h>

int main()
{
    int size, i, j, k;
    int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX];

    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            C[i][j] = 0;
            for(k=0; k<size; k++)
            {
                C[i][j] += A[i][k]*B[k][j];
            }
        }
    }
}

Produit de Hadammard

#include <stdio.h>
#include <stdlib.h>

#define MAX 10

void HadamardMultiply(int *A, int *B)
{
    int Res[MAX][MAX];
    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            Res[i][j] = *(A+i+j) * (*(B+i+j));
        }
    }
}

Produit de deux matrices

#include <stdio.h>

int main()
{
    int size, i, j, k;
    int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX];

    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            C[i][j] = A[i][j]+B[i][j];
        }
    }
#include <stdio.h>
#include <stdlib.h>

#define MAX 10

void HadamardMultiply(int *A, int *B)
{
    int Res[MAX][MAX];
    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            Res[i][j] = *(A+i+j) * (*(B+i+j));
        }
    }
}

int main()
{
    int size, i, j, k;
    int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX];

    printf("Enter the size of matrix: ");
    scanf("%d", &size);

    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            printf("A[%d][%d]=", i+1, j+1);
            scanf("%f", &A[i][j]);
        }
    }
    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            printf("B[%d][%d]=", i+1, j+1);
            scanf("%f", &B[i][j]);
        }
    }

    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            C[i][j] = 0;
            for(k=0; k<size; k++)
            {
                C[i][j] += A[i][k]*B[k][j];
            }
        }
    }

    // Pour Fairouze
    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            C[i][j] = A[i,:]*B[:,j];
        }
    }

    printf("Matrix C = A*B\n");
    for(i=0; i<size; i++)
    {
        for(j=0; j<size; j++)
        {
            printf("%d\t", C[i][j]);
        }
        printf("\n");
    }

    return 0;
}