Alguien me puede decir como se hace, se ke se ace con tres for, , pero no se ke ahi ke poner en cada uno, si alguien me pudiera ayudar se lo agradeceria
LOL!!! eso mismo iba a postear yo ahora mismo XDD pero lo mio en C. estoy fatal. nunca habia tenido un problema de este tipo... siempre acaban saliendo, pero llevo toda la tarde pensado y no me sale. supongo q sera igual q en java solo q con los for escritos de otra forma.
create dos tablas, y las vas recorriendo con dos variables "i" y "j" por ejemplo, con eso vas introduciendo los valores q qieras darlas y para multiplicarlas = con for como tu dices haciendo un contador de filas y columnas las recorres y listo.
Pero multiplicar matrices como se multiplican en algebra no multiplicar los dos numeros de una posicion
Vamos a intentar hacerlo entre los dos. a ver, pensemos como seria para dos matrices 3x3:
#define N 3 (esto es pa sustituir N por 3)
for(i=0;i<N;i++)
for(j=0;j<N;j++)
for(k=0;k<N;k++)
M3][]+=M1[][]*M2[][];
lo q va entre corchetes no se q es... porq lo he preovao un millon de veces y me da numeros altisimos siempre.
creo q lo mejor es hacerlo por pasos.
1º para multiplicar 2 vectores:
for(i=0;i<N;i++)
num=V1*V2;
2º matriz NxN por Vector N
for(j=0;j<N;j++)
for(i=0;i<N;i++)
V3[j]=V1[j]*V2;
ahora matriz NxN por matriz NxN....estoy pillao
prueba esto a ver...
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n,k++)
f[j]+=p[k]*q[k][j];
solo q java no se sorry PD inicializa la matriz final a 0
Yo tengo esto, pero creo ke no esta bien, se ke es algo parecido pero algo falla y no se ke es
for(int i=0;i<matriz1.length;i++){
for(int j=0;j<matriz2[0].length;j++){
for(int k=0;k<matriz1.length;k++){
multi[j]=multi[j] + (matriz1[k]*matriz2[k][j]);
}
}
No eso no es si la tengo puesto solo ke al pasarlo aki se ma colao , lo ke pasa es ke el resultado te tendria ke dar otra matriz con el nº de filas de la primera matriz y el nº de columnas de las segunda matriz, pero no me sale y no se por ke :S
Bueno, conociendo el foro, no tardará en aparecer gente que te ponga el código completo, y luego se peleen por cual está mejor xD
Yo creo que lo suyo sería que aprendieras tú mismo, y si quieres te ayudo en eso. Lo primero, ¿te has molestado en mirar como se multiplican matrices, para luego pensar el algoritmo?
Si, me lo e mirado y creo ke ya kasi lo tengo, lo ke no se es por ke a veces me da este error "ArrayIndexOutOfBoundsException" es es ke me salgo de la matriz o algo asi no?
Sí, te has salido del límite de la matriz.
Bueno, si has mirado como se multiplican matrices, antes de escribir el código, haz una lista de todas las acciones que tiene que realizar tú código. Si pones la lista en otro post te sigo ayudando, y te digo si está bien o mal.
el ultimo trozo d codigo q puse antes es la solucion del problema en C. si lo pasas a java pues ya lo tienes.
PD: las matrices en C son matriz[fila][columna]
me parece q la tienes igual. por cierto no olvides inicializar la matriz final a 0 en todas las posiciones. mejor hazlo fuera del bucle para no liarte
int [][] matriz1=new int[filas1][columnas1];
int [][] matriz2=new int[filas2][columnas2];
int [][] multi=new int[filas1][columnas2];
for(int i=0;i<matriz1.length;i++){
for(int j=0;j<matriz2.length;j++){
for(int k=0;k<matriz1.length;k++){
multi[j]=multi[j] + (matriz1[k]*matriz2[k][j]);
}
}
}
Este es el codigo ke tengo yo, pero me sigue dando el error ke me salgo de la matriz cuando no lo ago con matrices cuadradas y no se por ke :S, tambien le tengo puesto para ke detecte si el nº de columnas de la 1ª matriz es = al nº de columnas de la 2ª para ke no aga nada si no son =les
Mira, con nombres largos para que lo veas más claro:
for (FilaMatriz1 = 0; filamatriz1 < numero_filas_matriz1; FilaMatriz1++)
for (ColumnaMatriz2 = 0; ColumnaMatriz2 < numero_columnas_matriz2; ColumnaMatriz2++)
for(ColumnaMatriz1=0; ColumnaMatriz1 < numero_columnas_matriz1, i++)
matriz_producto[filamatriz1,columnamatriz2] += matriz1[FilaMatriz1,ColumnaMatriz1] * matriz2[ColumnaMatriz1,ColumnaMatriz2];
En tú código tienes:
for(int i=0;i<matriz1.length;i++){
for(int j=0;j<matriz2.length;j++){
for(int k=0;k<matriz1.length;k++){
Utilizas lo mismo en los 2, mientras que en uno es el número de filas, y en otro el número de columnas. En matrices cuadradas no te peta por que el numero de filas y el de columnas es el mismo.