SoloCodigo
Asuntos Oficiales => Retos => Mensaje iniciado por: jorge8603 en Miércoles 5 de Enero de 2005, 03:27
-
hola
nunca he puesto un reto pues la verdad no acostumbro mucho este tipo de paginas pero espero este lo acepten (la verdad no se si entre en la categoria de reto)
el programa consiste en: dado un sistema de ecuaciones lineares de n ecuaciones dar su solucion "exacta":
esto es si el sistema es
x+y=2
x-2y=3
la solucion debe ser:
x= 7/3
y=-1/3
y no debe ser:
x=2.333333333
y=-.333333333
el reto termina el 15 de enero
bueno espero les parezca buen reto y si no pues no hay problema lo comprendere
suerte!
-
se me olvido
en caso de no tener solucion unica especificar mediante un mensaje
o en caso de tener un numero infinito de soluciones, especificar mediante un mensaje diferente
-
Hola!! Llevo algun tiempo fuera por los examenes y eso. Dos cosas:
Ya ha pasado casi un mes del final del reto, asi que supongo que lo has ampliado (o te has olvidado de el vilmente)
Y lo segundo: como nos dan la entrada?? Solo los coeficientes?? Las ecuaciones tal cual? Como sabemos cuantas y cuales son las incognitas (quizas lo primero sea lo mas dificil)??
De todos modos, quitando el tema de las fracciones, el reto parece algo simple... Creo que me podre con el en cuanto aclares este asunto.
Saludos!!
-
hola
al parecer "me olvide vilmente de el" lo siento
no importa como recibas los coeficientes y puedes preguntarle al usuario de cuantas dimensiones es el sistema
lo importante es el algoritmo en si, asi que pueden hacer estas dos cosas como gusten
de nuevo disculpas por olvidar esto, la verdad crei que no lo habian aceptado el reto
si nagisa o alguien mas desea hacer el reto propongo que sea esa persona la que diga cuanto tiempo le llevara hacerlo para no causar mas inconvenientes
-
para dos ecuaciones
-
hola que tal
el programa que mandaste solo funciona para dos ecuaciones y el reto es para n
aun asi es cierto que funciona pero te manda resultados como x= -2/-2; lo cual es correcto pero se veria mejor si mandara x=1 no crees?
bueno como quiera me da gusto que alguien lo haya intentado
-
el programa que mandaste solo funciona para dos ecuaciones y el reto es para n
Primero debo decirte que la razón por la cual envíe un programa para un máximo de dos ecuaciones es porque esperaba esa respuesta . Si enviara un programa para resolver digamos un máximo de tres ecuaciones entonces me dirías que
“el programa que mandaste solo funciona para tres ecuaciones y el reto es para n"
, si envío uno para un máximo de cuatro me dirías
“el programa que mandaste solo funciona para cuatro ecuaciones y el reto es para n“ , no estableciste un limite para n y así para todo numero de ecuaciones n que el programa pueda resolver siempre existirá un numero n+1 que no puede resolver , un sistema con un numero infinito de ecuaciones necesitaría numero infinito de operaciones aritméticas para que de una solución “exacto” . El programa necesitaría un espacio de memoria infinito . Debes establecer un limite para n que esa razonable .
aun asi es cierto que funciona pero te manda resultados como x= -2/-2; lo cual es correcto pero se veria mejor si mandara x=1 no crees?
no es verdad si el valor de x es –2/-2 la salida del programa será 2/2 ( sin los signos )
claro 2/2=1 pero considera este sistema de ecuaciones :
2x+ y=2
x+2y=5/2
la solucion “exacta” es x = 1/2 , y = 1 pero asi como 2/2=1 , 1/2 =0.5 y la solucion 0.5 también es “exacta” , no entiendo si cuando dices “exacta” te refieres a que la solución no puede ser mostrada como un numero decimal o si te refieres al “error por redondeo” que ocurre cuando el numero de decimales es mayor al numero de dígitos de precisión de la computadora .
-
A exacta creo que se refiere a que si el resultando no es un entero se muestre como fraccion.
Ademas, 2/2 = 1/1... si se da una fraccion lo suyo seria que se diera la de memor denominador posible.
Yo ahora no podre ponerme con ello, pero de todos modos una de Gauss-Jordan y una implementacion basica de fracciones y operaciones basica (suma, multiplicacion, reduccion a menor denominador y transformacion desde/a entero) seria suficiente. Todo con algo de memoria dinamica para resolver el tema de las dimensiones...
-
A exacta creo que se refiere a que si el resultando no es un entero se muestre como fraccion.
Ademas, 2/2 = 1/1... si se da una fraccion lo suyo seria que se diera la de memor denominador posible.
El problema no es como se muestre el resultado el problema es el limite de n y eso no se resuelve con memoria dinamica .
-
hola que tal
al parecer tengo que aclarar varias cosas
el decir para "n dimensiones" matematicamente significa que se pueda resolver para cualquier numero entero positivo mediante el mismo metodo; es decir, que si es de 5 dimensiones haces n=5, para 10 dimensiones haces n=10 etc, etc.
Por lo cual si hubieras hecho bien tu programa este funcionaria no solo para 2 dimensiones. El problema de la memoria es cierto, fue mi error, a pesar de que el algoritmo matematicamente funciona para cualesquier dimension, en computacion siempre es preciso considerar la memoria
aun asi supongo que con cualquier maquina un sistema de 100 dimensiones no debe batallarse en lograr, y seamos francos, en la vida real un sistema de mas de 100 dimensiones no se usa mucho.
Asi que el programa que les mando sirve hasta para 8 dimensiones, debido al tamaño de la pantalla; aun asi insisto en que el algoritmo sirve para "n" dimensiones, y deje claro que lo que importaba era el algoritmo.
ahora debo precisar que no es mi algoritmo; es el algoritmo del metodo de Montante un ex-alumno de la facultad en la que estudio(Fac Ciencias FisicoMatematicas de la UANL) por lo cual me gusto la idea de saber cuanta gente lo conoce
es el algoritmo mas exacto de todos los metodos numericos para la resolucion de sistemas de ecuaciones, por encima de gauss, asi que es bueno ponerlo en esta
pagina
disculpen las molestias que cause al no aclarar debidamente todos estos puntos antes
atte:jorge
-
Demostración del uso del método de Gauss-Jordan PARA CUALQUIER NUMERO DE ECUACIONES-INCÓGNITAS (salvo limitaciones de memoria impuestas por la maquina). La entrada es por teclado. Primero dos enteros: número de ecuaciones y número de incógnitas, y luego los coeficientes en orden (primero variables dependientes y luego termino independiente). Una vez se hayan acabado se siguen leyendo nuevos sistemas hasta que se encuentre un sistema nulo (0 ecuaciones - 0 incógnitas).
Ejemplo:
2x + 2y = 8
3x +z = 0
Seria: 2 3 2 2 0 8 3 0 1 0 0 0
(Los dos últimos ceros son el final de la entrada)
Lo he probado con un par de ejemplos y parece funcionar, aunque seguro que cierta persona lo prueba exhaustivamente hasta que falle y nos notifica el error, así que ya lo solucionare cuando pase...
Si se retoca un poco más podría mostrar también la solución paramétrica en el caso de que hayan infinitas soluciones (desde la forma Gauss-Jordan lo único que habría que hacer es identificar las columnas que funcionarán como parámetros: las que no son de primer elemento no nulo para ninguna fila).
Saludos!!
-
hola
el programa de nagisa hace lo que pedi en el reto por lo que supongo aqui se acaba el mismo
muy buen programa nagisa, eso comprueba que si uno hace las cosas como se les pide en un reto no hay problemas.. si no, es mejor decir que no se pudo
saludos a todos