Ir para conteúdo
Fórum Script Brasil
  • 0

Multiplicação De Matrizes


tuga

Pergunta

ei

eu queria multiplicar duas matrizes para comparar com outra pra fazer um sistema tipo "A.x=B"ex:

matrizA=[2,3,5] matrizx= [u1] matrizB= [6]

[0,2,5] [u2] [0]

[0,0,6] [u3] [0]

para isso utizei ciclos

for(m=0;n<=m;m++)

for(n=0;m<= n;n++)

matrixA[m][n]. matrixu[m][1]=Uh;

mas não tenho certeza...digão alguma coisa,,,,obrigado

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

a multiplicacão de matrizes possui algumas regras, vamos a elas:

temos 2 matrizes A(x,y) e B(m,n)

A . B só é possível se e somente se y = m. A matriz resultante seria do tipo x,n.

B . A só é possível se e somente se n = x. A matriz resultante seria do tipo m,y.

então primeira coisa que precisa fazer é testar se número de colunas de uma é igual ao número de linhas da outra.

se sim, é possível fazer o cálculo

usualmente voce usa 2 ou mais loop para fazer essa multiplicacão sua lógica toda vai estar baseada nos índices da matriz.

Link para o comentário
Compartilhar em outros sites

  • 0

mas digamos que a matriz A[m][n] x B[j][1] = C[m][1] em que m=n=j as matrizes A é quadrada

eu teria de fazer 2 loop

for(m=0;m=j;m++)

for(j=0;j=m;j++)

matrizC[j]=matrizA[m][n] x matrizB[m][1]

era mais ou menos isto mas como é que se faz para incrementar no [n]????????

*já agora como é que se põe os anexos "code" que costumo ver e não sei como por e assim o codigo não fica direito!!

se pudessem responder a tudo agredecia muito

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

mas digamos que a matriz A[m][n] x B[j][1] = C[m][1] em que m=n=j as matrizes A é quadrada

eu teria de fazer 2 loop

for(m=0;m=j;m++)

for(j=0;j=m;j++)

matrizC[j]=matrizA[m][n] x matrizB[m][1]

era mais ou menos isto mas como é que se faz para incrementar no [n]????????

para multiplicacao de uma matriz qualquer voce pode usar 3 loops um que controla a Linha de A, outro que controla a Coluna de B e outro que controla a Coluna de A.


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

int main(){
   int la=2, lb, ca=3,cb, x, y, z;
   cb=la;// definicao
   lb=ca; // definicao 

   for(x=0;x<la;x++){
      for(y=0;y<cb;y++){
         for(z=0;z<ca;z++){
        printf("Matriz A[%i][%i] * B[%i][%i]\n", x, z, z, y);
         }
      }
   }
   exit(0);
}

*já agora como é que se põe os anexos "code" que costumo ver e não sei como por e assim o codigo não fica direito!!

para iniciar o código coloque a a palavra "code" entre colchetes

e para encerrar use "[/" seguido da palavra "code" seguido de ]"

Link para o comentário
Compartilhar em outros sites

  • 0

Estou tendo C na faculdade também....

Ví o tópico e achei que outros que pesquisarem podem se beneficiar. Código abaixo de um programa que faz a multiplicação de matriz quadrada de tamanho informado pelo usuário.

/*
  Autor: Helton Eduardo Ritter 2º Semestre Sistemas de Informação SETREM
  Data: 26/08/2007

  Programa: Multiplicação de matrizes quadradas de n tamanho

  Crie duas matrizes quadradas de tamanho informado pelo usuário,
  faça a multiplicação e aramzene o resultado
  em uma terceira matriz. Mostre o resultado.


*/
#include <stdio.h>

int main()
{
    // variável que vai guardar o tamanho das matrizes, informado pelo
    // usuário, vai servir também para controle dos loops do programa
    int iTm;
    printf("Quer calcular matrizes quadradas de que tamanho? ");
    scanf("%d",&iTm);
    {
    // fMA = tipo float, a primeira matriz, os dados serão informados pelo
    //       usuário
    // fMB = matriz B informada pelo usuário
    // fMR = matriz Resultado, os valores serão calculados e atribuidos
    //       aos índices dessa matriz
    //fTemp = antes da matriz R receber o valor, os valores são acumulados
    //        nessa variável
    float fMA[iTm][iTm],fMB[iTm][iTm],fMR[iTm][iTm],fTemp;


    // iL e iC = variáveis inteiras que serão usadas para controlar os laços
    //           de leitura e para calcular os valores

    //iTempL e iTempC = variáveis que são usadas para saber qual o índice
    //                  na B matriz que deve ser multiplicado pelo
    //                  índice que está sendo passado na matriz A
    int iL,iC,iTempL=0,iTempC=0;

   //lê os valores da matriz A, passando pela leitura das três
   // colunas em cada uma das linhas
   for(iL=0;iL <iTm;iL++)
    {
        for(iC=0;iC<iTm;iC++)
        {
            printf("Matriz A valor da linha %d coluna %d: ",(iL+1),(iC+1));
            scanf("%f",&fMA[iL][iC]);
        }
       // apenas para o usuário identificar mais fácil quando passou
       // para os valores da outra linha da matriz
       printf("\n");
    }

   //O mesmo que na matriz A só que para a matriz B
   for(iL=0;iL <iTm;iL++)
    {
        for(iC=0;iC<iTm;iC++)
        {
            printf("Matriz B valor da linha %d coluna %d: ",(iL+1),(iC+1));
            scanf("%f",&fMB[iL][iC]);
        }
       printf("\n");
    }

   // Mostra para o usuário como ficou a matriz A que ele digitou
   printf("\nMATRIZ A:\n\n");
   for(iL=0;iL <iTm;iL++)
    {
        for(iC=0;iC<iTm;iC++)
        {
           printf("%4.2f\t",fMA[iL][iC]);
        }
       printf("\n");
    }

    // Mostra para o usuário como ficou a matriz B que ele digitou
   printf("\nMATRIZ B:\n\n");

   for(iL=0;iL <iTm;iL++)
    {
        for(iC=0;iC<iTm;iC++)
        {
          printf("%4.2f\t",fMB[iL][iC]);

        }
       printf("\n");
    }

   // dentro deste bloco for vai ser feito o cálculo da matriz resultado
   // e exibido os valores
   printf("\nMATRIZ C, RESULTADO:\n\n");

   // passa todas as linhas da matriz A
   for(iL=0;iL <iTm;iL++)
     {
        // passa todas as colunas da matriz A
        for(iC=0;iC<iTm;iC++)
         {
            // quando chegar a execução aqui estamos posicionados em
            // uma linha e uma coluna específica de A, estamos em UM dos
            // valores de A

            // limpa o fTemp, pois nele serão acumulados os valores
            // calculados
            fTemp=0;
            // a multiplicação e soma deve ir avançando nas colunas de A
            // e nas linhas de B, mas mantendo a mesma colunas de B

            // aqui iTempL controla as Colunas de A e Linhas de B
            // quando chegar em 2 já leu as iTm colunas de A e as três
            //linha de B no primeiro índice de cada linha
             while(iTempL < iTm)
              {
                // fTemp recebe o que já tinha + a multiplicação
                // da Linha/coluna atual e sua linha/coluna correspondente

                // a coluna correspondente vai ser a mesma do índice da linha
                // atual
                fTemp=(fTemp +(fMA[iL][iTempL] * fMB[iTempL][iTempC]));
                // fez o primeiro cálculo, na matriz A tem que avançar 1
                // para a direita, e na Matriz B tem que avançar uma linha
                // para baixo, mantendo o o índice de coluna igual ao índice de
                // linha da matriz A
                iTempL++;
              } // fim do while que calcula os valores
            // quando termina o while, significa que já calculou o UM dos
            // valores da matriz resultado, mas tem que calcular o próximo
            // por isso incrementa 1 na coluna  de B, e zera i índice da linha
            // pois tem que multiplicar desde o iício de cada linha
            // por todos da coluna
            iTempC++;
            iTempL=0;

            // mostra esse um valor já encontrado
            printf("%4.2f\t",fTemp);

            // já temos um valor calculado, entâo gaurdamos ele na matriz
            // resultado.
            fMR[iL][iC]=fTemp;

            // limpa o fTemp, pois ele vai acumulando, e agora servirá
            // para calcular o próximo valor
            fTemp=0;
         } // fim do for que vare as colunas
       // quando terminou de calcular todos os valores dessa linha, zera o índice
       // da coluna, pois a próxima linha, terá que multiplicar desde o primeiro
       // índice de coluna matriz correspondente
       iTempC=0;
       // aqui é o ponto que temos todos os valores de uma linha calculados
       // estamos iniciando o cálculo da seguinte, damos uma quebra de linha
       // para a saída dos valores se parecer com uma matriz
       printf("\n");
     } // fim do for que vare as linhas
}
    // agurada um ENTER para fechar o programa

    getchar();
    getchar();
    return 0;
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...