Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/04/2010, 11:03
guzmy5
 
Fecha de Ingreso: abril-2010
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Multiplicar 2 matrices en C

Cita:
Iniciado por aguirremanuel Ver Mensaje
Aquí está la parte de la multiplicacion mi pana :

Código C:
Ver original
  1. for (i = 0 ; i < 3 ; i++ ) //i para las filas de la matriz resultante
  2. {
  3.     for (k = 0 ; k < 3 ; k++ ) // k para las columnas de la matriz resultante
  4.     {
  5.         temporal = 0 ;
  6.         for (j = 0 ; j < 2 ; j++ ) //j para realizar la multiplicacion de
  7.                 {                                   //los elementos   de la matriz
  8.             temporal += mat[i][j] * mat2[j][k];
  9.             resultado[i][k] = temporal ;
  10.         }
  11.         }
  12. }

Suerte...!!!


Buenas tardes!! Soy nuevo por el foro, estaba buscando algún sitio dónde gente que sepa del tema pudiera ayudarme a resolver las dudas que tengo sobre C++

Resulta que estoy intentando hacer el Método de los Mínimos cuadrados, y he llegado a la siguiente ecuación de matrices At*A*X=At*B

A es una matriz de orden 2x10
B es una matriz de orden 10x2
X es la matriz de los coeficientes (a)
(b)
At es la traspuesta de A, por lo tanto de orden 10x2


Esto es lo que llevo de código:

#include <iostream>
using namespace std;

int main ()
{
int a[10][2],b[10][1],x[2][1],at[2][10];
int i, j, k,sol[2][2],sol2[2][2];
cout << "MATRIZ A." << endl; // Introduce los elementos de la matriz A
for(i = 0 ; i < 10 ; i++){
for(j = 0 ; j < 2 ; j++){
cout << "Introduzca el valor del elemento [" << i << "]["
<< j << "]: ";
cin >> a[i][j];
}
}
cout << endl;
for(i = 0 ; i < 10 ; i++){ // Imprime los elementos de la matriz A
for(j = 0 ; j < 2 ; j++){
cout << a[i][j] << " ";
if(j == 1)
cout << "\n";
}
}
cout << endl;
cout << "MATRIZ B." << endl; // Introduce los elementos de la matriz B
for(i = 0 ; i < 10 ; i++){
for(j = 0 ; j < 1 ; j++){
cout << "Introduzca el valor del elemento [" << i << "]["
<< j << "]: ";
cin >> b[i][j];
}
}
cout<<"MATRIZ B";
cout << endl;
for(i = 0 ; i < 10 ; i++){ // Imprime los elementos de la matriz B
for(j = 0 ; j < 1 ; j++){
cout << b[i][j] << " ";
if(j == 0)
cout << endl;
}
}



// Averiguamos la matriz traspuesta de A, At
cout << endl;
for(i=0;i<10;i++){
for(j=0;j<2;j++){
at[j][i]=a[i][j]; }
}
cout << "\nMATRIZ A traspuesta.\n\n" << endl;
for(i = 0 ; i < 2 ; i++){ // Imprime los elementos de la matriz At
for(j = 0 ; j < 10 ; j++){
cout << at[i][j] << " ";
if(j == 9)
cout << endl;
}
}



for(i=0;i<2;i++){ /* Realiza el producto de At*B*/
for(j=0;j<1;j++){
sol[i][j]=0;
for(k=0;k<10;k++){
sol[i][j]=sol[i][j]+(at[i][k]*a[k][j]);
}
}
}


cout << endl << "MATRIZ C (Matriz At*B)." << endl;
cout << endl;
for(i=0;i<2;i++){ // Imprime la matriz resultado
for(j=0;j<1;j++){
cout << sol[i][j] << " ";
if(j==0)
cout << endl;
}
}






for(i=0;i<2;i++){ /* Realiza el producto de At*A*/
for(j=0;j<2;j++){
sol[i][j]=0;
for(k=0;k<10;k++){
sol2[i][j]=sol2[i][j]+(at[i][k]*b[k][j]);
}
}
}


cout << endl << "MATRIZ D (Matriz At*A)." << endl;
cout << endl;
for(i=0;i<2;i++){ // Imprime la matriz resultado
for(j=0;j<2;j++){
cout << sol2[i][j] << " ";
if(j==0)
cout << endl;
}
}

system("PAUSE");
return 0;
}



Mi problema es que no se bien como hacer la multiplicación, he segido los pasos que ponen ahí pero no me sale correctamente, a ver si alguien le puede echar un vistazo y decirme dónde me estoy equivocando.

Un saludo y muchas gracias de antemano!!