Cita:
Iniciado por aguirremanuel Aquí está la parte de la multiplicacion mi pana :
Código C:
Ver originalfor (i = 0 ; i < 3 ; i++ ) //i para las filas de la matriz resultante
{
for (k = 0 ; k < 3 ; k++ ) // k para las columnas de la matriz resultante
{
temporal = 0 ;
for (j = 0 ; j < 2 ; j++ ) //j para realizar la multiplicacion de
{ //los elementos de la matriz
temporal += mat[i][j] * mat2[j][k];
resultado[i][k] = temporal ;
}
}
}
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!!