UTNianos

Versión completa: ayuda ejercicio 6-49 calcular determinante
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
6-49.
Escribir una función que reciba una matriz cuadrada de doubles y su dimensión, y retorne el valor de su determinante.

No tengo idea de como hacer para calcular un determinante de dimensión desconocida. Ayuda cry
Leete algo sobre la fórmula de Leibniz, quizás te sirva.
http://es.wikipedia.org/wiki/F%C3%B3rmul...erminantes

http://es.wikipedia.org/wiki/Determinant...C3.A1lculo

yo haria laplace recursivamente, hasta que llegues a una matriz de 1x1
El único método me me enseñaron en AGA es el del menor complementario y aplicar eso en info es un hachazo a las bolas va, también gauss pero claramente ni lo pienso para info
Vas a tener que aplicarlo, lo hice en informática 1 y era ese el método.
Tenes que hacer una función recursiva (que se llame a si misma y que en algun caso salga de la recursividad), que te valla contruyendo el determinante aplicando matrices adjuntas eligiendo de alguna forma la columna o fila mas apropiada para cada matriz que reciba la función, es un quilombo, pero si no lo haces asi lo mas probable es que la maxima que resuelvas sea de 7x7, agarrando cualquier lugar para arrancar a calcular el determinante, sin tener en cuenta los 0´s.

Dependiendo de la memoria con la que cuentes, si lo haces de ese método capas llegas a una de 12x12, es increíble la memoria que consume. Vas a tener que ir liberando la memoria a medida de que vas saliendo de cada funcion, sino vas a tener que reiniciar la pc.

Despues tenes que definir los casos en los que sale de la recursividad, el mas genérico es el de 3x3 que lo podes sacar con una operación entre los valores de la matriz, la de 2x2 también, que en el caso de recibir una de 2x2, lo tendrías que contemplar y una de 1x1, también jaja


La verdad no me acuerdo como era exactamente.
Yo haria una funcion que sea asi

return double determinante(matriz,dimensión)



Si la dimension en mayor a 3

Adentro utilizaría otra que me arme la adjunta
adjunta(posicion i, posicion j, dimensión-1)

E iría armando con un for el determinante que es la suma de otros determinantes de otras matrices.(No se si me explico) es aca donde esta la recursividad, ya que volves a llamar a la funcion determinante, igual como harías en AGA, con una matriz de 4x4 por ejemplo, que tenes que calcular los determinantes de las de 3x3. Cuando sea de 3x3, no va a entrar en el armado, sino que deberia retornar el valor del determinante.



Si es menoro igual que 3

Cuando la funcion entre en esos de 3x3 ya no va a volver a llamar a la funcion determinante sino que va a retornar el valor calculado.



No se si me explique bien, espero que te sirva, tenes que manejar un poco punteros, acordate de liberar la memoria. Un abrazo y cualquier cosa pregunta!
gracias besthandball2010!!
Todavía no me puse a codear pero entiendo esa forma de encarar el problema (aunque sigue siendo un hachazo en las bolas y lo de la memoria es re flashero, lo voy a tener en cuenta)
Por otro lado le rompí las bolas a mi profe de info y me pasó esta joyita "Numerical Recipes in C The Art of Scientific Computing (University of Cambridge)" tiene cosas muy muy copadas que pueden salvar a mas de uno con problemas similares
Mandate el apunte!
Jaja. Recuerdo un par de viajes en bondi con besthandball2010 craneando ese problema

Igual la solución que implementamos es la mas "facil", el problema es que si le mandas una matriz de mas de 10x10 se me queda la pc sin ram

El ayudante que teniamos nos hacia comparar cuanto tardaba matlab y cuando nuestro codigo.. Y ahi te das cuenta que matlab fue hecho por alienigenas en roswell
Jajaja si ¿te acordas? Fue una de las cosas mas locas que programamos jaja

Igual estaba pensando, se puede optimizar bastante creo.. Y si.. matlab era demencial ajajja uno de 100x100 en 0.00002 segundos, seguro hace otra cosa
URLs de referencia