Тёмный

Curso Java Intermedio #31 | Multiplicación de Matrices en Java 

La Geekipedia De Ernesto
Подписаться 707 тыс.
Просмотров 62 тыс.
50% 1

Curso Java intermedio con NetBeans - En esta entrega del curso de programación Java intermedio, aprenderás a multiplicar matrices en java al mismo tiempo que realizarás un ejercicio que te permitirá desarrollar tanto el análisis y resolución de problemas, así como tu lógica de programación.
¡¡Ayúdame a seguir creciendo, te invito a suscribirte!!
La Geekipedia de Ernesto
➞ Facebook / lageekipediadeernesto
➞ Instagram / lageekipedia
➞ Twitter / lageekipedia
═════════════════════════════════════════
Descarga de la practica: goo.gl/5YW7HR
Enlace al curso Java desde cero: goo.gl/JZu1Lx

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 126   
@LaGeekipediaDeErnesto
@LaGeekipediaDeErnesto 6 лет назад
¿Te gustaría que este contenido siga siendo gratuito?, puedes apoyar al canal de las siguientes maneras: 1. Donaciones: www.paypal.me/LaGeekipedia 2. Desactivando Adblock y Adblock Plus en RU-vid. 3. Compartiendo los vídeos del canal en foros y redes sociales. Cualquier opción es de gran ayuda. ¡Muchas gracias!
@brenjohnson4583
@brenjohnson4583 6 лет назад
La Geekipedia De Ernesto Hola Ernesto.. te pregunto, como se desactivan?. Gracias
@MARQUITOSGUALACBA
@MARQUITOSGUALACBA 5 лет назад
Si, había que configurarlo, gracias
@edgarfhenriquez9974
@edgarfhenriquez9974 4 года назад
Lo hice en 75 pasos. Estoy Aprendiendo
@Dannrar
@Dannrar 5 лет назад
Que estos ejercicios son sumamente sencillos!? Madre mía!... Si estoy echando humo por la cabeza! Jajaja....!!
@enriquebarragan212
@enriquebarragan212 4 года назад
xD Sólo practica un poco más :D
@JSilvaCP
@JSilvaCP 6 лет назад
El código bloque para multiplicar las dos matrices lo realicé de la siguiente forma para que sea mas dinámico; quedo atento a quien lo quiera complementar, saludos: PD: Tener en cuenta que solo se puede multiplicar dos matrices si sus dimensiones son compatibles , lo que significa que el número de columnas en la primera matriz es igual al número de filas en la segunda matriz. /* Multiplicación matrices: "matrizR" = "matrizF1" x "matrizF2" * Dimensiones de las matrices: * int [][] matrizF1 = new int[filasF1][columnasF1]; * int [][] matrizF2 = new int[columnasF1][columnasF2]; * int [][] matrizR = new int[filasF1][columnasF2]; */ for (int i = 0; i < filasF1; i++) { for (int j = 0; j < columnasF2; j++) { for (int k = 0; k < columnasF1; k++) { matrizR[i][j] += matrizF1[i][k] * matrizF2[k][j]; } } }
@federicostoppo1117
@federicostoppo1117 6 лет назад
Hola me parece un gran aporte el que hiciste!! Te quería preguntar : si el numero de columnas de la "MatrizF1" es 11, y el numero de filas de la "MatrizF2" es 7, daría una Matriz que debería tener 77 espacios de memoria... Como es posible crear una Matriz de 77 espacios de memoria si lo máximo que se puede poner son 8 fila y 9 columnas? Osea quedaría así: * int [][] matrizF1 = new int[filasF1][11]; * int [][] matrizF2 = new int[7][columnasF2]; * int [][] MatrizResultante = new int[8][9]; Pero bien sabemos que 8 multiplicado por 9 es 72!!! y 9 por 9 es 81!! Como podría crear una matriz con 77 espacios de memoria?? Saludos.
@JSilvaCP
@JSilvaCP 6 лет назад
Federico cordial saludo, si estás realizando una multiplicación entre matrices debes considerar que sus dimensiones sean compatibles, lo que significa que el número de columnas de la "matrizF1" debe ser igual al número de filas de la "matrizF2"; por tal motivo no es posible realizar la multiplicación que propones. Ahora bien, si lo que quieres es que la "matrizR" (matriz Resultado) contenga 77 espacios , las matrices deben tenes los siguientes parámetros: int [][] matrizF1 = new int[11][n]; int [][] matrizF2 = new int[n][7]; int [][] MatrizResultante = new int[11][7];
@federicostoppo1117
@federicostoppo1117 6 лет назад
Jhony gracias por tu ayuda amigo!! Ahora lo entendí bien!!!!
@fernandod5503
@fernandod5503 5 лет назад
mucho mejor asi.
@michaelmerchan7087
@michaelmerchan7087 5 лет назад
Muy buen aporte. Estaba tratando de optimizar el código y me encontré con estas lineas, me resulto de ayuda.Gracias
@marcmartorell8780
@marcmartorell8780 4 года назад
Gracias por todo el conocimiento que nos das. He aprendido mucho. Para multiplicar matrices creo más adecuado y funciona el siguiente código: for(int i=0; i < 2; i++){ for(int j = 0; j < 2; j++){ for(int k=0; k
@francogiova8818
@francogiova8818 2 года назад
muy buena forma de hacerlo, yo me la complique usando dos fors, con 3 fors es mucho mas sencillo jajaja
@ignaciioGo
@ignaciioGo 6 лет назад
eres un crack Neto! Eres mi maestro desd que empece a ver tus tutoriales
@benjaleal4872
@benjaleal4872 6 лет назад
Me hiciste un parote, espero puedas seguir subiendo videos así, me ayudó mucho y al final analice para saber cómo imprimia y no es tan complejo!!!!!muchísimas gracias!!!!!
@LaGeekipediaDeErnesto
@LaGeekipediaDeErnesto 5 лет назад
¡Excelente!, por supuesto que seguiré creando más contenido. Saludos.
@orlando6804
@orlando6804 Год назад
Excelent video Ernesto, cada día aprendo más. Se me complicó un poco entender la parte de la impresión, pero poco a poco voy mejorando. Sigue así que tus videos son muy buenos.
@sergiocomes435
@sergiocomes435 2 года назад
Me Sirvió mucho para ejercitar la lógica de programación tu propuesta y he aprendido mucho con tus videos tanto del primer curso como de este de nivel intermedio. te envío el código que pude elaborar en el que no pude "acomodar" la presentación de impresión de las matrices operando como de la resultante; pero seguiré practicando. Un afectuoso saludo desde Argentina.
@luisgera22
@luisgera22 4 года назад
yo pensé que teniamos que hacer un llenado de la matriz resultante dinámico, pero fue manual , entonces así en teoría es más fácil
@nicolasscattularo9679
@nicolasscattularo9679 3 года назад
La posición 0-0 de este video, en álgebra es 1-1. Así la posicion 0-1 en algebra es 1-2. Quizás eso genera una dificultad al momento de entender la lógica que usa el autor en el video. Así mismo, es excelente la explicación, muy útil y me hizo sacar humo del cerebro jaja Gracias por el contenido!
@rafaelhernandezgarcia8774
@rafaelhernandezgarcia8774 4 года назад
gracias a tu gran explicacion y video se me facilito modificarlo para uno de 3 por 3
@karlozpuyol3382
@karlozpuyol3382 6 лет назад
Excelente sigo tus videos desde el basico..... y seguire con este.. Gracias le doy like...y suscrito...
@thedarkside228
@thedarkside228 5 лет назад
Que tal amigos, al igual que el vídeo pasado este lo hice a través de hilos y tambien es posible, obviamente considero sube la dificultad pero repito: me parece un excelente desafio para practicar los conceptos dados por Ernesto. los invito a desarrollarlo de esa manera ya que como dijo Ernesto hay varias formas de desarrollarlo. Cualquier pregunta con gusto les responderé.
@enriquebarragan212
@enriquebarragan212 4 года назад
Yo intenté hacer las dos matrices con un mismo método, pero no logro hacer que el .length me de una diferencia entre filas y columnas, no entiendo como funciona todavía xD
@lucassanchez6869
@lucassanchez6869 4 года назад
@@enriquebarragan212 trata de crear dos variables (filas y columnas) y les das el numero de filas y de columnas que aparecen en el video, despues crea las matrices, por ej matriz1 [filas][columnas] y asi, despues tienes que jugar con los for
@lucassanchez6869
@lucassanchez6869 4 года назад
pero hiciste la parte de imprimir o tambien la multiplicacion? es decir: hiciste la logica en el main y la impresion con hilos en otra clase ?
@juancamiloparedeszamora8481
@juancamiloparedeszamora8481 7 месяцев назад
Excelente clase profe, una anotación. Creo que el algoritmo implementado presentará un pequeño bug cuando el resultado de alguno de los elementos de la matriz resultante sea cero, si esto pasa nunca se podrán calcular los elementos de la matriz resultante que le siguen, y tendíamos varios ceros en lugar del resultado de la multiplicación.
@gilbertoflorescastillo9614
@gilbertoflorescastillo9614 4 года назад
Espero algún día tener esa lógica de programación porque la verdad se me dificulto mucho xD
@d-landjs
@d-landjs 2 года назад
Excelente tutorial!!! Me encantan estos ejercicios :D
@erikrtk868
@erikrtk868 3 года назад
Que explicación tan sublime 👏
@jeferos393
@jeferos393 4 года назад
Excelente vídeo. Una pregunta Ernesto, ¿Java tiene librerías o clases (soy nuevo en este lenguaje) que te faciliten las operaciones con matrices, como la librería Numpy en Python?
@extreemmaster4240
@extreemmaster4240 5 лет назад
Hola Ernesto, me encantan tus cursos, voy en esta parte, aquí mi forma de hacer la multiplicación de matrices y la impresión de ellas: //Multiplicación de matrices for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { int temporal = (matriz_uno[j][0] * matriz_dos[0][i]) + (matriz_uno[j][1] * matriz_dos[1][i]) + (matriz_uno[j][2] * matriz_dos[2][i]); matriz_r[j][i] = temporal; } } //Imprimir matrices for (int i = 0; i < 3; i++) { if (i < 2) { for (int j = 0; j < 3; j++) { System.out.print("[" + matriz_uno[i][j] + "]"); } } else { System.out.print(" "); } if (i == 1) { System.out.print(" * "); } else { System.out.print(" "); } for (int j = 0; j < 2; j++) { System.out.print("[" + matriz_dos[i][j] + "]"); } if (i == 1) { System.out.print(" = "); } else { System.out.print(" "); } if (i < 2) { for (int j = 0; j < 2; j++) { System.out.print("[" + matriz_r[i][j] + "]"); } } System.out.println(""); }
@danielcampos4062
@danielcampos4062 4 года назад
Mi cabeza explotó con este video
@ElRincóndelasFantasías
@ElRincóndelasFantasías 7 месяцев назад
😂😂
@ThisAbubu
@ThisAbubu 6 лет назад
Ya esta ya hackeo la nasa :v
@darlin4676
@darlin4676 6 лет назад
jajajajajjaja eso mismo pense
@erikgarcia9545
@erikgarcia9545 6 лет назад
Excelente,. Lo mejor
@christianlazo473
@christianlazo473 5 лет назад
En este video se me ha quemado el cerebro xD, Gran contenido muchas gracias, te sigo desde el curso desde 0
@maurizioros3155
@maurizioros3155 6 лет назад
Hola Ernesto, he escrito my versión del programa que funciona pidiendo el tamaño de las matrices al usuario, lo pongo aquí esperando ser de ayuda a alguien ;) public static void main(String[] args) { Scanner param = new Scanner(System.in); System.out.println("Dame el n. de lineas: "); int lineas = param.nextInt(); System.out.println("Dame el n. de columnas: "); int columnas = param.nextInt(); // creo las 3 matrices int matr_uno[][] = new int[lineas][columnas]; int matr_due[][] = new int[columnas][lineas]; int matr_tre[][] = new int[lineas][lineas]; // pongo los numeros aleatorios en las dos matrices for (int linea = 0; linea < lineas; linea++) { for (int col = 0; col < columnas; col++) { matr_uno[linea][col] = (int) (Math.random() * 10); matr_due[col][linea] = (int) (Math.random() * 10); } } for (int linea = 0; linea < lineas; linea++) { for (int col = 0; col < lineas; col++) { matr_uno[linea][col] = (int) (Math.random() * 10); matr_due[col][linea] = (int) (Math.random() * 10); } } // calculo la matriz 3 for (int linea_3 = 0; linea_3 < lineas; linea_3++) { for (int linea = 0; linea < lineas; linea++) { for (int col = 0; col < columnas; col++) { matr_tre[linea_3][linea] = matr_tre[linea_3][linea] + matr_uno[linea][col] * matr_due[col][linea_3]; } } } // enseño la matriz 1 System.out.println("Matriz 1"); for (int linea = 0; linea < lineas; linea++) { for (int col = 0; col < columnas; col++) { System.out.print("[" + matr_uno[linea][col] + "] "); } System.out.println(""); } // enseño la matriz 2 System.out.println("Matriz 2"); for (int linea = 0; linea < columnas; linea++) { for (int col = 0; col < lineas; col++) { System.out.print("[" + matr_due[linea][col] + "] "); } System.out.println(""); } // enseño la matriz 3 System.out.println("Matriz 3"); for (int linea = 0; linea < lineas; linea++) { for (int col = 0; col < lineas; col++) { System.out.print("[" + matr_tre[linea][col] + "] "); } System.out.println(""); } }
@katsu7188
@katsu7188 6 лет назад
¡¡Por cierto!! Revisando tu código noté que da error cuando agregas Lineas > Columnas, por ejemplo: lineas: 5 columnas: 3 ¿qué tal si te propones a solucionarlo solo como práctica? le buscas más errores y así practicas hasta tener un programa perfecto :3 Yo lo solucionaré por mi parte para practicar y aprender a leer errores. ¡Saludos!
@maurizioros3155
@maurizioros3155 6 лет назад
Verdad! era una tonteria, en la linea 24 debes poner "col < columnas", yo copiando y pegando puse "col
@angelelias.9789
@angelelias.9789 3 года назад
Gracias, me salvaste el pellejo con este código. 👍🏼
@JuansiYT
@JuansiYT Год назад
Muy buenas tardes Ernesto. Lamentablemente, el autocompletado de NetBeans no me está funcionando, ya que al escribir "sout" no pasa absolutamente nada, y cuando escribo, por ejemplo, "java.util", no me sale la lista con las clases del JDK como Scanner y Random. Si usted o algun estudiante sabe como activarlo, le agradezco mucho su ayuda. Los programas que uso son NetBeans IDE 8.2, Java SE Development Kit 8 Update 361 (64-bit) y Java 8 Update 361 (64-bit). No se si tiene algo que ver pero uso Windows 10 MiniOS LTSC (64 Bits).
@GianmarcoContreras
@GianmarcoContreras 4 года назад
Me detuvo un momento a analizar el ejercicio y me di cuenta que no es tan complicado como parece.
@erikjulianmartinezcrispin7024
@erikjulianmartinezcrispin7024 3 года назад
excelente video
@deodato7444
@deodato7444 4 года назад
Muchas gracias por el video. Hice el programa para otros tamaños de matrices aunque sólo funciona si las filas de la matriz 2 son más que las filas de la matriz 1: public class ClasePrincipal { public static void main(String[] args) { int matriz1[][] = new int[3][5]; int matriz2[][] = new int[5][3]; int matriz3[][] = new int[3][3]; //Llenar matriz1 for (int i = 0; i < matriz1.length; i++) { for (int j = 0; j < matriz1[0].length; j++) { matriz1[i][j] = (int) (Math.random() * 5 + 1); } } //Llenar matriz2 for (int i = 0; i < matriz2.length; i++) { for (int j = 0; j < matriz2[0].length; j++) { matriz2[i][j] = (int) (Math.random() * 5 + 1); } } //Multiplicar matrices for (int i = 0; i < matriz1.length; i++) { for (int j = 0; j < matriz2[0].length; j++) { matriz3[i][j] = 0; for (int k = 0; k < matriz2.length; k++) { matriz3[i][j] += matriz1[i][k] * matriz2[k][j]; } } } //Imprimir matrices for (int i = 0; i < matriz2.length; i++) { if (matriz1.length > i) { for (int j = 0; j < matriz1[0].length; j++) { System.out.print("[" + matriz1[i][j] + "]"); } } else { for (int j = 0; j < matriz1[0].length * 3; j++) { System.out.print(" "); } } if(i == 1){ System.out.print(" x "); } else { System.out.print(" "); } if (matriz2.length > i) { for (int j = 0; j < matriz2[0].length; j++) { System.out.print("[" + matriz2[i][j] + "]"); } } if(i == 1){ System.out.print(" = "); } else { System.out.print(" "); } if (matriz3.length > i) { for (int j = 0; j < matriz3[0].length; j++) { System.out.print("[" + matriz3[i][j] + "]"); } } System.out.println(""); } } }
@clementesoza4123
@clementesoza4123 3 года назад
Gracias!
@pamelamuralles9374
@pamelamuralles9374 4 года назад
LO ADOROOOOOO Gracias
@jorgearequipa644
@jorgearequipa644 4 года назад
genial amigo exelente explicacion in like.
@tomasyedid3140
@tomasyedid3140 3 года назад
Hola ernesto, excelente video y gran curso. Pregunta alguien sabe porque es esto? Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 edit: Ya esta ya lo solucione xd
@jacksonprieto8459
@jacksonprieto8459 Год назад
Hola ernesto una pregunta porq cuado ud esta enseñando como realizar el ejercicio en minuto 1:20 y cuando vas a empezar a enseñar a sacar el resultado de la multiplicación estas enseñando otra manera de sacar el resultado?
@jacksonprieto8459
@jacksonprieto8459 Год назад
Segun lo q estoy entendiendo es q ud esta agarrando dos filas de la primera matriz y dos columnas de la segunda matriz para asi crear la matriz resultantes es eso?
@janof21
@janof21 6 лет назад
un curso de PHP estaria muy bueno, Gracias Ernesto
@LaGeekipediaDeErnesto
@LaGeekipediaDeErnesto 6 лет назад
¡Hola!, las votaciones están abiertas en las redes sociales del canal y se cierran el próximo viernes 7 de Septiembre de 2018, entre los cursos disponible se encuentra el curso de PHP, puedes votar para apoyar a que este curso gane y sea parte de los cursos del próximo paquete que será publicado. Saludos.
@nandodo203
@nandodo203 3 года назад
Quiero compartir la lógica que utilicé para resolver este problema ya que es diferente a la del video y pienso que a alguno le podría interesar public class MultiplicaciónDeMatrices { public static void main(String[] args) { int matriz1[][] = new int[2][3]; int matriz2[][] = new int[3][2]; int matrizResultante[][] = new int[2][2]; //llenado de matriz1 for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { matriz1[i][j] = (int) (Math.random() * 5); } } //llenado de matriz2 for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { matriz2[i][j] = (int) (Math.random() * 5); } } //Multiplicación de matrices for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { int valorAcumulado = 0; for (int k = 0; k < 3; k++) { valorAcumulado += matriz1[i][k] * matriz2[k][j]; if (k == 2) { matrizResultante[i][j] = valorAcumulado; } } } } //impresion en pantalla for (int i = 0; i < 3; i++) { if (i < 2) { for (int j = 0; j < 3; j++) { System.out.print("[" + matriz1[i][j] + "]"); } //****************************** if (i == 0) { System.out.print(" x "); } else { System.out.print(" "); } //****************************** for (int j = 0; j < 2; j++) { System.out.print("[" + matriz2[i][j] + "]"); } //***************************** if (i == 0) { System.out.print(" = "); } else { System.out.print(" "); } //****************************** for (int j = 0; j < 2; j++) { System.out.print("[" + matrizResultante[i][j] + "]"); } System.out.println(""); } else { System.out.print(" "); for (int j = 0; j < 2; j++) { System.out.print("["+matriz2[i][j]+"]"); } System.out.println(""); } } } }
@lautycabrera8437
@lautycabrera8437 2 года назад
jajaj a la primera...no sale nada xd lpm
@stevenjm8444
@stevenjm8444 3 года назад
yo en la forma de calcular la matriz resultante lo hice utilizando solo variables del for, esa guevada me demoro horas pensando, pero valio la pena aqui les dejo por si acaso :D package clase; public class Multiplicacion { public static void main(String[] args) { int matrizUno[][] = new int[2][3]; int matrizDos[][] = new int[3][2]; int r_matriz[][] = new int[2][2]; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { matrizUno[i][j] = (int)(Math.random() * 3); } } for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { matrizDos[i][j] = (int)(Math.random() * 3); } } //Estructura matriz resultante for (int i = 0; i < 2; i++) { if(i == 0){ for (int j = 0; j < 3; j++) { r_matriz[i][0] += matrizUno[i][j] * matrizDos[j][i]; r_matriz[i][1] += matrizUno[i][j] * matrizDos[j][i+1]; } }else if(i == 1){ for (int j = 0; j < 3; j++) { r_matriz[i][1] += matrizUno[i][j] * matrizDos[j][i]; r_matriz[i][0] += matrizUno[i][j] * matrizDos[j][i-1]; } } } for (int i = 0; i < 3; i++) { if(i != 2){ for (int j = 0; j < 3; j++) { System.out.print("[ " + matrizUno[i][j] + " ]"); } }else if (i == 2) { System.out.print(" "); } if (i == 1) { System.out.print(" x "); }else{ System.out.print(" "); } for (int j = 0; j < 2; j++) { System.out.print("[ " + matrizDos[i][j] + " ]"); } if (i == 1) { System.out.print(" = "); }else{ System.out.print(" "); } if(i != 2){ for (int j = 0; j < 2; j++) { System.out.print("[ " + r_matriz[i][j] + " ]"); } } System.out.println(""); } } }
@kilokoins1336
@kilokoins1336 2 года назад
El código para multiplicar las matrices la realice de la siguiente forma para que sea mas corto: // Operations for (int i = 0; i < 3; i++) { Matrx_R[0][0] = Matrx_R[0][0] + (Matrx_1[0][i] * Matrx_2[i][0]); Matrx_R[0][1] = Matrx_R[0][1] + (Matrx_1[1][i] * Matrx_2[i][0]); Matrx_R[1][0] = Matrx_R[1][0] + (Matrx_1[0][i] * Matrx_2[i][1]); Matrx_R[1][1] = Matrx_R[1][1] + (Matrx_1[1][i] * Matrx_2[i][1]); }
@MrDanikho
@MrDanikho 5 лет назад
Gente, para los que quieran, les dejo código que sirve para multiplicar 2 matrices sin importar la cantidad de filas o columnas que tengan (siempre respetando las reglas para multiplicar matrices). Me costó pero salió, jeje. Una vez que tenemos las dos matrices y la de resultado declaradas, y las dos matrices a multiplicar llenadas: int rondas = matriz_1 [1].length * (matriz_resultado.length * matriz_resultado[1].length); int ic1 = 0, if1 = 0, ic2 = 0, if2 = 0, icr = 0, ifr = 0; int temporal = 0; for (int i = 0; i < rondas; i++) { temporal += matriz_1[if1][ic1] * matriz_2[if2][ic2]; ic1++; if2++; if (ic1 == matriz_1[1].length) { matriz_resultado[ifr][icr] = temporal; temporal = 0; icr++; if (icr == matriz_resultado[1].length) { icr = 0; ifr++; } ic1 = 0; if2 = 0; if (ic2 < matriz_2[1].length - 1) { ic2++; } else if (ic2 == matriz_2[1].length - 1) { if1++; ic2 = 0; } } } donde ic1 es el indice de columnas de la matriz 1, ifr es el indice de la matriz resultante, y así. saludos!
@oscargm1979
@oscargm1979 4 года назад
Maquina :) Gracias
@Silperscom
@Silperscom 4 года назад
Rayos, creo que me estoy volviendo loco y, así quiero llegar a marte...
@federicostoppo1117
@federicostoppo1117 6 лет назад
Hola Ernesto, te quería preguntar algo que ya se lo he hecho a un usuario que ha comentado tu video. Ejemplo : si el numero de filas de la "Matriz1" es 11, y el numero de columna de la "Matriz2" es 7, daría una Matriz que debería tener 77 espacios de memoria... Como es posible crear una Matriz de 77 espacios de memoria si lo máximo que se puede poner son 8 fila y 9 columnas? Osea quedaría así: * int [][] matriz1 = new int[11][columnas1]; * int [][] matriz2 = new int[filas2][7]; * int [][] MatrizResultante = new int[8][9]; Pero bien sabemos que 8 multiplicado por 9 es 72!!! y 9 por 9 es 81!! Como podría crear una matriz con 77 espacios de memoria?? Saludos.
@juanignacio409
@juanignacio409 5 лет назад
Hola compañero ! Para multiplicar Matrices el numero de filas de la matriz uno debe ser igual al numero de columnas de la matriz dos,esa es la condición que se tiene que respetar. Una Matriz con 11 filas solo se puede multiplicar con una matriz de 11 columnas y resultaría en una Matriz de 11 x 11.
@juanfraucastro
@juanfraucastro 4 года назад
Un truco para saber que matrices se pueden multiplicar y que dimensiones va a tener la matriz resultante es el siguiente. Las matrices se definen por el número de filas y columnas, es decir una matriz de 2 filas y 3 columnas es una matriz de 2X3. Entonces: matriz 1 matriz 2 2 x 3 3 x 4 Números interioress iguales (3, 3) -> Se pueden Multiplicar. | |______| | |__________________| Dimensión matriz producto igual a números interiores 2 X 4 matriz 1 matriz 2 5 x 4 2 x 4 Números interiores diferentes (4, 2) -> No se pueden | |______| | multiplicar. |__________________| Saludos
@juanfraucastro
@juanfraucastro 4 года назад
@@juanignacio409 Es al revés, el número de columnas de la primera ha de ser igual al de filas de la segunda. Piensa que se multiplica el componente de cada vector de la primera matriz (columna) por cada uno de los términos de fila de la segunda Matriz.
@juanignacio409
@juanignacio409 4 года назад
@@juanfraucastro Es cierto!! Gracias por avisar, genial la técnica que pusiste arriba!! Saludos compañero!!
@josepared7243
@josepared7243 5 лет назад
se me complico un poquito pero ya nada gracias lo analice y todo super facil ernesto
@GabrielRodriguez-ok7qh
@GabrielRodriguez-ok7qh 5 месяцев назад
Pero si quiero hacer un programa mas dinamico no me funcionaria porque estoy llenando la matriz resultante manualmente.... Ayuda please 😅
@NaRuToALFA777
@NaRuToALFA777 7 месяцев назад
yo uso eclipse, podias decirme como importarlo ?
@level1agario
@level1agario 5 лет назад
Creo que hay un error en el código. En las estructuras if-else al comparar matriz_resultante[0][0], matriz_resultante[1][0], matriz_resultante[0][1], matriz_resultante[1][1] con el valor 0 para ver si están vacías, ¿no debería ser mejor comparalo con null? De hecho al ejecutarlo varias veces, me salió esto en una de ellas: [ 3 ][ 3 ][ 0 ] [ 0 ][ 2 ] [ 9 ][ 0 ] [ 2 ][ 0 ][ 0 ] x [ 3 ][ 2 ] = [ 0 ][ 0 ] [ 0 ][ 2 ] Aquí se ve que, si al hacer la suma de las multiplicaciones da 0, el programa lo toma como vacío, mostrando valores incorrectos. La matriz resultante en vez de ser [ 9 ][ 0 ] [ 0 ][ 0 ] debería ser [ 9 ][ 12 ] [ 0 ][ 4 ] Agradecería poder aclarar esto y muchas gracias Ernesto por todo el esfuerzo que haces por llevar este curso adelante 👍
@ezequiel2519
@ezequiel2519 5 лет назад
Hola, yo no puse el if-else, tampoco el i
@johnpc6413
@johnpc6413 4 года назад
me da el mismo error asi q tratare de programarlo de otra manera
@johnpc6413
@johnpc6413 4 года назад
LO RESOLVI COLOCANDO UN PEQUEÑO RETRASO CON HILOS EN LA matriz_resultante,ya q parece q al correrlo varias veces el programa resuelve tan rapido y no se sincroniza bueno eso creo.porq con el retraso que le hice ya no volvvi a ver ese error
@johnpc6413
@johnpc6413 4 года назад
@@ezequiel2519 correrlo varias veces y veras que si hace errores como obviar algunos digitos y a saltarse el cero
@MARQUITOSGUALACBA
@MARQUITOSGUALACBA 5 лет назад
Hola Ernesto! Como haces para que el sistema solo te agregue el ciclo for apretanto tab? yo lo hago y me tira otra estructura tengo que seleccionar con el mouse de la lista de opciones para agregar el for predefinido
@carloszambrano8548
@carloszambrano8548 5 лет назад
escribes for y tabulas y listo
@hiramjairramirezsanchez3952
@hiramjairramirezsanchez3952 3 года назад
Buenos días, me percate de que este código contiene un error en dado caso de que de igual a 0 la multiplicación, si eso pasa para el primer resultado de la primera posición de la matriz resultante, los otros 3 espacios también tendrán un 0, ya que el ciclo for tomaría como referencia el primer caso y los demás no se cumplirían. Aquí dejo el código que hice con ese problema resuelto, repito, solo en caso de que la suma de las multiplicaciones de igual a 0 generaría un error. Espero les sirva :D public class ClasePrincipal { public static void main(String[] args) { int matriz_uno [][] = new int [3][2]; int matriz_dos [][] = new int [2][3]; int matriz_resultante [][] = new int [3][3]; int temporal = 0; //Llenado de la matriz_uno for (int i = 0; i < 3; i++) { for (int j = 0; j < 2;j++) { matriz_uno [i][j] = (int) (Math.random() * 5); } } //Llenado de la matriz_dos for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { matriz_dos [i][j] = (int) (Math.random() * 5); } } //Lenado de la matriz_resultante for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { temporal += matriz_uno [j][i] * matriz_dos [i][j]; } matriz_resultante [i][i] = temporal; temporal = 0; if (i == 0) { for (int j = 0; j < 3; j++) { temporal += matriz_uno [j][1] * matriz_dos [i][j]; } matriz_resultante [i][1] = temporal; } else { for (int j = 0; j < 3; j++) { temporal += matriz_uno [j][0] * matriz_dos [i][j]; } matriz_resultante [i][0] = temporal; } temporal = 0; } //Imprimir todo for (int i = 0; i < 3; i++) { if (i < 2) { for(int j = 0; j < 3; j++) { System.out.print("[" + matriz_uno[j][i] + "]"); } } else { System.out.print(" "); } System.out.print(" "); if (i == 1) { System.out.print("x "); } else { System.out.print(" "); } for(int j = 0; j < 2; j++) { System.out.print("[" + matriz_dos[j][i] +"]"); } System.out.print(" "); if (i == 1) { System.out.print("= "); } else { System.out.print(" "); } if (i < 2) { for(int j = 0; j < 2; j++) { System.out.print("[" + matriz_resultante[j][i] + "]"); } } System.out.println(""); } } }
@guillermocotrinavelasquez3301
@guillermocotrinavelasquez3301 5 лет назад
M parecio complicado darle forma al programa que la programacion del ejercicio
@AlejandroSanchez-vt2nj
@AlejandroSanchez-vt2nj 6 лет назад
👌 ok
@Zero-yt1og
@Zero-yt1og 4 года назад
Yo use for como algunos colegas por aqui para la multiplicacion. Pero para imprimir use 24 System.out.print jajajajaja xD
@alfredoaristizbal91
@alfredoaristizbal91 4 года назад
JAJAJAJAJAJA x2. Me sentí estúpido al ver que se podía hacer con un for
@auron-mono6725
@auron-mono6725 3 года назад
-----------------Lo hice más corto---------------------- public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Introduce el numero de filas de la primer matriz: "); int f1 = sc.nextInt(); System.out.println("Introduce el numero de columnas de la primer matriz: "); int c1 = sc.nextInt(); System.out.println("Introduce el numero de filas de la segunda matriz: "); int f2 = sc.nextInt(); System.out.println("Introduce el numero de columnas de la segunda matriz: "); int c2 = sc.nextInt(); System.out.println("---Datos ingresados---"); System.out.println("-- Matriz 1 de: " + f1 + "x" + c1 + " --"); System.out.println("-- Matriz 2 de: " + f2 + "x" + c2 + " --"); System.out.println("----------------------"); if (c1 == f2) { int[][] m1 = new int[f1][c1]; int[][] m2 = new int[f2][c2]; int[][] mR = new int[f1][c2]; System.out.println("-> Comineza matriz 1"); for (int i = 0; i < f1; i++) { for (int j = 0; j < c1; j++) { System.out.println("Introduce el valor del elemento " + i + "," + j + ": "); m1[i][j] = sc.nextInt(); } } // Matriz 1 System.out.println("Matriz 1"); for (int i = 0; i < f1; i++) { for (int j = 0; j < c1; j++) { System.out.print(m1[i][j] + " "); } System.out.println(""); } // Matriz 2 System.out.println("-> Comienza matriz 2"); for (int i = 0; i < f2; i++) { for (int j = 0; j < c2; j++) { System.out.println("Introduce el valor del elemento " + i + "," + j + ": "); m2[i][j] = sc.nextInt(); } } System.out.println("Matriz 2"); for (int i = 0; i < f2; i++) { for (int j = 0; j < c2; j++) { System.out.print(m2[i][j] + " "); } System.out.println(""); } // Matriz Resultante System.out.println("-- Matriz Resultante --"); for (int i = 0; i < f1; i++) { for (int j = 0; j < c2; j++) { for (int h = 0; h < c1; h++) { mR[i][j] += m1[i][h] * m2[h][j]; } System.out.print(mR[i][j] + " "); } System.out.println(""); } } else { System.out.println("No se puede realizar la operación"); } }
@juanmasoler7565
@juanmasoler7565 6 лет назад
¿Para qué se suele isar esto?
@alvaroarratialeonardini7116
@alvaroarratialeonardini7116 6 лет назад
Para Ingenieria sirve bastante.
@darkjoker2190
@darkjoker2190 6 лет назад
Una de las aplicaciones de las matrices es cuando se trabaja con las bases de datos, cuando queremos traer grandes flujos de datos (de la base de datos) para después desplegarlos en la aplicación, es una gran idea usar matrices (siempre y cuando los sepas usar) ya que así ahorras recursos y peticiones al servidor.
@codigobinario135
@codigobinario135 3 года назад
Y si es una matriz de 2*2 seguiría los mismos pasos ?
@ACm3mphis
@ACm3mphis 3 года назад
Puedes hacer la lógica para matrices en general, sin importar el tamaño, siempre manteniendo las condiciones para la multiplicación. No es nada complicado. Saludos.
@clementetorres4984
@clementetorres4984 6 лет назад
Algún día dará el curso c# desde cero ?
@434emm
@434emm 4 года назад
es casi lo mismo que java xd entonces creo que sobra
@joselimatu501
@joselimatu501 4 года назад
Una pregunta porque pone limite de 5 No entiendo
@ramirouffelmann3057
@ramirouffelmann3057 4 года назад
Para que solamente genere números aleatorios hasta 4, si pones 10 aparecerán valores entre 0 y 9
@carlosmejia7545
@carlosmejia7545 4 года назад
ufffff ni se por donde empezar no encuentro un punto para empezar
@pchpgera1112
@pchpgera1112 2 года назад
lo imprimi asi: for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { System.out.print("[" + matriz_uno[i][j] + "]"); } if(i==0){ System.out.print(" " + "[ " + matriz_dos[0][0] + " ]" + "" + "[ " + matriz_dos[0][1] + " ]"); System.out.print(" " + "[ " + matriz_resultante[0][0] + " ]" + "" + "[ " + matriz_resultante[0][1] + " ]"); }else if(i==1){ System.out.print(" * " + "[ " + matriz_dos[1][0] + " ]" + "" + "[ " + matriz_dos[1][1]+ " ]"); System.out.print(" = " + "[ " + matriz_resultante[1][0] + " ]" + "" + "[ " + matriz_resultante[1][1] + " ]"); System.out.print(" " + "[ " + matriz_dos[2][0] + " ]" + "" + "[ " + matriz_dos[2][1]+ " ]"); } System.out.println(""); }
@nicoconi2315
@nicoconi2315 6 лет назад
Cuando llegaremos a bases de datos :(
@katsu7188
@katsu7188 6 лет назад
sdfsd Pensé que era el único que deseaba eso mientras veía esto :3
@elaprendiz7208
@elaprendiz7208 3 года назад
Despues de este video a mi hay que quitarme la computadora para no hacer partir un misil intercontinental nuclear. Espero una propuesta de la NASA para no hackearla.
@juanalbertopolancovargas244
@juanalbertopolancovargas244 4 года назад
Yo hice la multiplicación de forma rudimentaria sin estructura condicional , solo le iba indicando el lugar donde guardar cada multiplicación 😧
@luispulido4592
@luispulido4592 5 лет назад
ayudenme necesito saber multiplicar matrices por el metodo gauss jordan
@kuachicqueh
@kuachicqueh 5 лет назад
El método Gauss Jordan sirve para reducir matrices, es decir, para simplificarla y posteriormente resolverla. No es para multiplicar.
@user-fr6gn6vl2z
@user-fr6gn6vl2z 3 года назад
ya tengo los conocimientos necesarios para hackear la nasa
@enelcorazondeoptimus
@enelcorazondeoptimus 4 года назад
Hmm Álgebra.
@434emm
@434emm 4 года назад
logré hacer un código de mierda luego de mucho esfuerzo, donde meto dos matrices de distinto tamaño y las lleno con números aleatorios y luego las multiplico... aquí dejaré el código por si a alguien le interesa xd import java.util.Scanner; public class MultiplicacionMatrices { //el número de filas debe ser igual al número de columnas public static void main(String[] args) { //[filas][columnas] Scanner texto = new Scanner(System.in); System.out.print("Filas de la Matriz #1: "); int fila_1 = texto.nextInt(); System.out.print("Columnas de la Matriz #1: "); int column_1 = texto.nextInt(); System.out.println(" La primera matríz es de " + fila_1 + " x " + column_1 + " "); System.out.print("Filas de la Matriz #2: "); int fila_2 = texto.nextInt(); System.out.print("Columnas de la Matriz #2: "); int column_2 = texto.nextInt(); System.out.println(" La segunda matríz es de " + fila_2 + " x " + column_2 + " "); System.out.print("Rango de números aleatorios: "); int r = texto.nextInt() + 1; /* int fila_1= ; int column_1= ; int fila_2= ; int column_2= ; int r = ; //Esto es para cuando quiera dejar de usar números aleatorios y comprobar que los calculos sí sean exactos */ int Matriz_1[][] = new int[fila_1][column_1]; int Matriz_2[][] = new int[fila_2][column_2]; int mult = 0; //llenando la primera matriz for (int i = 0; i < fila_1; i++) { for (int j = 0; j < column_1; j++) { Matriz_1[i][j] = (int) (Math.random() * r); } } //llenando la segunda matriz for (int i = 0; i < fila_2; i++) { for (int j = 0; j < column_2; j++) { Matriz_2[i][j] = (int) (Math.random() * r); } } if (column_1 == fila_2) { int Matriz_Resultante[][] = new int[fila_1][column_2]; for (int i = 0; i < column_2; i++) { for (int j = 0; j < fila_1; j++) { for (int k = 0; k < column_1; k++) { Matriz_Resultante[j][i] += (Matriz_1[j][k] * Matriz_2[k][i]); } } } //imprimiendo System.out.println(" Matriz 1:"); for (int i = 0; i < fila_1; i++) { for (int j = 0; j < column_1; j++) { System.out.print(Matriz_1[i][j] + " "); } System.out.println(""); } System.out.println(" Matriz 2:"); for (int i = 0; i < fila_2; i++) { for (int j = 0; j < column_2; j++) { System.out.print(Matriz_2[i][j] + " "); } System.out.println(""); } System.out.println(" Matriz resultante:"); for (int i = 0; i < fila_1; i++) { for (int j = 0; j < column_2; j++) { System.out.print(Matriz_Resultante[i][j] + " "); } System.out.println(""); } System.out.println(" "); if (fila_1 >= fila_2) { for (int i = 0; i < fila_1; i++) { for (int j = 0; j < column_1; j++) { if ((i >= fila_1) == false) { System.out.print("[ " + Matriz_1[i][j] + " ] "); } else { System.out.print(" "); } } if ((i == fila_1 / 2) == false) { System.out.print(" "); } else { System.out.print(" x ");//* } for (int j = 0; j < column_2; j++) { if ((i >= fila_2) == false) { System.out.print("[ " + Matriz_2[i][j] + " ] "); } else { System.out.print(" "); } } if ((i == fila_1 / 2) == false) { System.out.print(" "); } else { System.out.print(" = ");//= } for (int j = 0; j < column_2; j++) { if ((i >= fila_1) == false) { System.out.print("[ " + Matriz_Resultante[i][j] + " ] "); } } System.out.println(""); } } else if (fila_1 < fila_2) { //Esto es para cuando la segunda matriz tenga más filas y no se joda cuando se imprima for (int i = 0; i < fila_2; i++) { for (int j = 0; j < column_1; j++) { if ((i >= fila_1) == false) { System.out.print("[ " + Matriz_1[i][j] + " ] "); } else { System.out.print(" "); } } if ((i == fila_2 / 2) == false) { System.out.print(" "); } else { System.out.print(" x ");//* } for (int j = 0; j < column_2; j++) { if ((i >= fila_2) == false) { System.out.print("[ " + Matriz_2[i][j] + " ] "); } else { System.out.print(" "); } } if ((i == fila_1 / 2) == false) { System.out.print(" "); } else { System.out.print(" = ");//= } for (int j = 0; j < column_2; j++) { if ((i >= fila_1) == false) { System.out.print("[ " + Matriz_Resultante[i][j] + " ] "); } } System.out.println(""); } } } else { System.out.println("Estas matrices no se pueden multiplicar"); } } }
@davidleonidasbernabetorres7717
@davidleonidasbernabetorres7717 3 года назад
No jalo jajajaj’nt
@fabianortiz5946
@fabianortiz5946 4 года назад
joder me hace falta lógica
@roanbaga
@roanbaga 9 месяцев назад
Creo que debes aprender a programar compañero, esa solución no te habría valido ni el 3 en un examen.
@rodrigosolari8103
@rodrigosolari8103 4 года назад
Hola Ernesto, te felicito y te agradezco por tus videos, aparte de lo mucho que debes saber de programación eres excelente pedagógicamente. Hace poco más de tres semanas me empecé a interesar por la programación y debido al tiempo disponible por la pandemia ya he podido completar el curso de programación desde cero, java desde cero y voy por este capítulo del intermedio. Cuando planteas una situación problema trato de resolverla por mi cuenta para luego ver si coincide mí logics con la tuya. En la carga de la matriz resultado(que yo he llamado "matr") he realizado tres estructuras repetitivas for() llegando a cumplir el objetivo de una manera diferente pero quizás por mi poca experiencia no pueda darme cuenta de si haya posibilidad de que el razonamiento que he empleado me pueda traer alguna complicación, la dejo aquí por si tienes tiempo de verla: for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { for (int k = 0; k < 3; k++) { matr[i][j] += mat1[k][j] * mat2[i][k]; } } } Muchas gracias por todo el material que brinda, te mando un abrazo desde argentina!
@ronpb3943
@ronpb3943 4 года назад
de aquí a 10 años seré un pvto pro en esto, empece gracias a ti Ernesto
@DanViL1992
@DanViL1992 Год назад
Hola, dime que lo lograste en 2años...
@smopy_uwu5342
@smopy_uwu5342 4 года назад
2020 todavia funciona jajaja, buen video, me salvaste
@ElenixYT
@ElenixYT 2 года назад
sigo sin entender pk 22 espacios??
@oscarvillega7513
@oscarvillega7513 6 лет назад
Yo apenas voy por el curso de Java v:
@mariaguevara5177
@mariaguevara5177 5 лет назад
Saludos Ernesto, gracias por tan excelente contenido compartido. Aunque no tendría porqué, pero me estaba confundiendo. Cuando explicabas la parte gráfica del desarrollo del ejercicio, te referías a las columnas y filas desde la posición uno en adelante. Pero al momento de desarrollar el ejercicio en netbeans ya empezabas a contar o enumerar las filas y columnas desde la posición cero. Repito, no tendría porqué pero ese detalle me estaba creando una tremenda confusión.
@xxconyutoxx
@xxconyutoxx 5 лет назад
En la mayoría de lenguajes, los vectores comienzan en la posición [0] Si tienes un vector de 3 elementos, sus componentes serán [0], [1] y [2]. Al principio del vídeo solo lo explico de la manera que lo hizo para que entendiéramos mejor lo de la multiplicación de matrices.
Далее
Beatrise (пародия) Stromae - Alors on danse
00:44
Reto #12| Multiplicación de matrices
11:12
Просмотров 73 тыс.
Como usar correctamente los punteros en C
24:22
Просмотров 188 тыс.
Matrices en Java (declarar y recorrer una matriz)
11:53
How I Would Learn To Code (If I Could Start Over)
13:43
Fast Inverse Square Root - A Quake III Algorithm
20:08