Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - juancaa

#51
He aqui mi nueva version remasterizada del codigo para el calculo del determinante de una matriz cuadrada de orden N.
Este codigo es lo mas simple posible para realizar el calculo del determinante de una matriz que se me ha ocurrido (62 lineas), evidentemente se puede optimizar para reducir la complejidad del algoritmo pero eso va a gusto de cada uno, yo solo comparto el codigo para aquellos que les interese.

Nota: El algoritmo calcula el determinante de una matriz de orden "N" mediante adjuntos, empieza desde la primera columna y va reduciendo hasta llegar a la ultima mediante recursividad, tan simple como eso.


#include <stdio.h>
#define N 100

int sgn (int x) {
if (x%2==0) return(1);
return(-1);
}
int read_dim (int *dim) {
int nl;
char aux;
printf("\nIntroduzca dimension matriz cuadrada (<100): ");
nl=scanf("%d", &(*dim));
if (nl!=1) {
scanf("%c", &aux);
while (aux!='\n')
scanf("%c", &aux);
}
if ( (*dim>=100) || (*dim<=0) )
return(0);
return(1);
}
void read_matrix (int matrix[N][N], int dim) {
int i, j;
printf("\nIntroduzca elementos matriz...\n");
for (i=1; i<=dim; i++) {
printf("Elementos fila %d: ", i);
for (j=0; j<dim; j++)
scanf("%d", &matrix[i-1][j]);
}
}
void matrix_adj (int matrix[N][N], int matrix_aux[N][N], int dim, int m, int n) {
int i, j, p, q;
for (j=0, q=0; j<dim; j++)
if (j!=n) {
for (i=0, p=0; i<dim; i++)
if (i!=m) {
matrix_aux[p][q]=matrix[i][j];
p++;
}
q++;
}
}
int det_matrix_N (int matrix[N][N], int dim) {
int i, j, dim_aux, det;
for (i=0, j=0, det=0, dim_aux=dim; i<dim; i++)
det+=sgn(i+j)*matrix[i][j]*det_matrix_adj(matrix,dim_aux,i,j);
return(det);
}
int det_matrix_adj (int matrix[N][N], int dim, int m, int n) {
int matrix_aux[N][N];
if (dim==1) return(1);
matrix_adj(matrix,matrix_aux,dim,m,n);
return det_matrix_N(matrix_aux,dim-1);
}

main() {
int dim, matrix[N][N];
while (!read_dim(&dim))
printf("Dimension no valida (<100).");
read_matrix(matrix,dim);
printf("\nDeterminante = %d.\n\n", det_matrix_N(matrix,dim));
}
#52
Multimedia / Re: Duda conversores de Video
8 Mayo 2012, 13:29 PM
Muchas gracias por tu respuesta SonGoku, muy completa y amena.
#53
Multimedia / Duda conversores de Video
9 Marzo 2012, 17:44 PM
Buenas! Hace poco me aficione a pasar mis vidios .avi con sus subtitulos en .srt a .mkv añadiendo asi los subtitulos dentro del video. Pues bien, el caso es que tube que encontrar un conversor gratuito que se ajustara a dichos requisitos y vale decir que no fue muy dificil, los que uso actualmente son RIPBOT264 y FREE VIDEO CONVERTER. Con el tiempo me di cuenta que dependiendo del programa que usase, el peso de los videos variaba en algo excesivo, si el tamaño original del video era de 700 MB siendo originalmente un .AVI, al convertirlo a .MKV usando FREE VIDEO CONVERTER el tamaño aumentaba a practicamente 1GB mientras que si usaba RIPBOT264 el archivo reduce su tamaño original a unos 500 MB.

Se debe esto a perdida de calidad o a mejor compresion? a simple vista, los archivos convertidos a MKV con RIPBOT264 no pierden  calidad ni resolucion pero ocupan un tamaño menor que el archivo original, como puede ser esto? (vale la pena mencionar que la conversion en RIPBOT de cada video dura mucho mas que con FREE VIDEO CONVERTER).

Como curiosidad final, me gustaria saber com evaluar la perdida de calidad de un video al convertirlo de un formato a otro.

Gracias de antemano!
Un saludo, fMtQr.
#54
Programación C/C++ / Libreria math.h
5 Marzo 2012, 17:18 PM

Hay algun modo de poder acceder a la libreria math.h de C para hallar el codigo que utiliza esta libreria a la hora de calcular una raiz cuadrada o un logaritmo?

Mi intencion es poder analizar ese codigo por curiosidad, he estado pensando y no se me ocurre ningun metodo para crear una funcion que calcule los logaritmos de una base determinada...

Gracias de antemano!
Nota: ya he estado horas buscado en google y no he encontrado absolutamente NADA de informacion al respecto, 0, nothing!
#55
Cita de: $Edu$ en  5 Marzo 2012, 14:31 PM
Google?

Que gran idea, no se me habia ocurrido!!
#56
Me gustaria saber que algoritmos se emplean para calcular los logaritmos.

Se que se pueden calcular muchas de las funciones como el seno y el coseno (entre otras) mediante aproximaciones per series de taylor (por ejemplo) y para las raizes cuadradas sirve el algoritmo del metodo de Newton de la recta tangente o de la biseccion.

Mi pregunta es, cuales son los algoritmos que se utilizan actualmente para hacer dichos calculos, que metodo utilizan, etc.

Uno de los algoritmos que me gustaria saber es el del calculo de logaritmos en distintas bases.
Hay algun lugar donde pueda encontrar informacion al respecto?

Gracias de antemano!
#57
Muchisimas gracias camaleonh, tienes toda la razon del mundo!!

Que fallo tan estupido OMG!!

Problema solucionado!
#58
Java / Ayuda! Calcular determinante en Java
3 Marzo 2012, 15:59 PM
Pues veran, mi intencion es lograr un codigo recursivo en java que calcule el determinante de una matriz de orden N, el caso es que ya logre dicho codigo en C y ahora que estoy aprendiendo Java se me ocurrio traducirlo pero a la hora de compilarlo me tira algunos errores que no comprendo dado que todavia no estoy familiarizado con Java, aqui les enseño mi codigo:


import java.util.Scanner;

public class det_matrix {
    public static void main (String args[]) {
        Scanner in=new Scanner(System.in);
int i, j, dim, det;

         /* Leo matriz */
        System.out.print("Introduzca dimension matriz : ");
        dim=in.nextInt();
        int matrix[][]=new int[dim][dim];
        for (i=0; i<dim; i++) {
            System.out.print("Elementos fila "+i+" : ");
            for (j=0; j<dim; j++) {
                matrix[i][j]=in.nextInt();                                             
            }                       
        }
        System.out.println();

         /* Intento calcular determinante */
        System.out.print("Determinante = ");
        if (dim==1)
            System.out.print(matrix[0][0]);
        else
            System.out.print(det_matrix_N(matrix)); /* ERROR */
        System.out.println();
    }
   
    private static int sgn (int x) {
        if (x%2==0) return(1);
        else return(-1);           
    }
    private static int matrix_adj (int matrix[][], int matrix_aux[][], int dim, int m, int n) {
        int i, j, p, q;
        for (j=0, q=0; j<dim; j++)
            if (j!=n) {
                for (i=0, p=0; i<dim; i++)
                    if (i!=m) {
                        matrix_aux[p][q]=matrix[i][j];
                        p++;
                    }
                q++;               
            }
        return(dim-1);
    }
    private static int det_matrix_N (int matrix[][], int dim) {
        int i, j, dim_aux, det;
        for (i=0, j=0, det=0, dim_aux=dim; i<dim; i++) {
            det+=sgn(i+j)*matrix[i][j]*det_matrix_adj(matrix,dim_aux,i,j);
        }       
        return(det);
    }
    private static int det_matrix_adj (int matrix[][], int dim, int m, int n) {
        int matrix_aux[][]=new int[dim][dim];
        if ( (matrix_adj(matrix,matrix_aux,dim,m,n))==1 )
            return(matrix_aux[0][0]);
        return(det_matrix_N(matrix_aux,dim-1));
    }       
}


Segun el compilador de NetBeans, el error se encuentra al llamar a la funcion det_matrix_N(matrix) y no entiendo que hago mal ni tampoco como arreglarlo, este es el mensaje de error :

Codigo de error:
Citarmethod det_matrix_N in class det_matrix.det_matrix cannot be applied to given tipes;
required: int[][], int
found: int[][]
reason: actual and formal argument lists differ in length

Cualquier idea o suggerencia es bien recibida.
Gracias de antemano!
#59
Java / Re: Funciones con matrices
3 Marzo 2012, 14:30 PM
Ahh!! Si gracias! Lo que hice fue cambiar :

det_matrix_N(matrix[][]);
por:
det_matrix_N(matrix);

Y el metodo en lugar de ser un string es una matriz de enteros (int).

private static int det_matrix_N (int matrix[][]) {
   return(matrix[0][0]);
}


Que rabia no haberme dado cuenta antes, muchas gracias adastra!
#60
Java / Funciones con matrices
3 Marzo 2012, 13:30 PM
Buenas, estoy intentando hacer una funcion en java que al llamarla opere con la matriz empleada como argumento, algo asi:

det=det_matrix_N(matrix[][]);

El caso es que no se como pasar la matriz para que haga las operaciones pertinentes, es decir, no se si escribir como argumento det_matrix_N(matrix[dim][dim]); etc...
Alguna idea?

Gracias de antemano!