Foros de matemática
18/12/2017, 06:05:09 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: Puedes practicar LATEX con el cómodo editor de Latex online
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Cómo resolver un SEL con muchas incógnitas  (Leído 161 veces)
0 Usuarios y 1 Visitante están viendo este tema.
vandermonde
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 6


Ver Perfil
« : 03/12/2017, 12:50:25 pm »

Hola,

incluyo esta pregunta en el subforo de Métodos Numéricos, aunque quizá podría ir también en el de Álgebra. Mi duda es: ¿existen métodos enfocados a resolver sistemas de ecuaciones lineales que cumplan todas las características siguientes?:

  • Homogéneos
  • Con un número muy elevado de incógnitas (cientos, o incluso miles)
  • Con ecuaciones "pequeñas" (es decir, pocos coeficientes no nulos en cada ecuación, apenas dos o tres; o visto de otra manera, con una matriz de coeficientes con casi todo ceros)

Supongo que este tipo de sistemas aparecen con frecuencia en la ciencia (a mí al menos me ha surgido  :indeciso:), pero los métodos tradicionales como Gauss o Cramer entiendo que no son nada apropiados para ellos. Os agradezco cualquier orientacion.

Saludos. 
En línea
robinlambada
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 2.549


Ver Perfil
« Respuesta #1 : 03/12/2017, 01:16:58 pm »

Hola,

incluyo esta pregunta en el subforo de Métodos Numéricos, aunque quizá podría ir también en el de Álgebra. Mi duda es: ¿existen métodos enfocados a resolver sistemas de ecuaciones lineales que cumplan todas las características siguientes?:

  • Homogéneos
  • Con un número muy elevado de incógnitas (cientos, o incluso miles)
  • Con ecuaciones "pequeñas" (es decir, pocos coeficientes no nulos en cada ecuación, apenas dos o tres; o visto de otra manera, con una matriz de coeficientes con casi todo ceros)

Supongo que este tipo de sistemas aparecen con frecuencia en la ciencia (a mí al menos me ha surgido  :indeciso:), pero los métodos tradicionales como Gauss o Cramer entiendo que no son nada apropiados para ellos. Os agradezco cualquier orientacion.

Saludos. 
Lo único que se me ocurre y no se si puede ayudar , es que dividas el sistema en subsistemas independientes de menos ecuaciones con menos incognitas y vayas resolviendo estos ( por tener pocas variables cada sistema ).

Puedes ir permutando ecuaciones ,  y eliminando variables que estén "muy separadas" en cada ecuación  con combinaciones lineales de las ecuaciones para que los coeficientes de la matriz del sistema estén cerca de la diagonal y vas resolviendo estos subsistemas independientes.

Saludos.

P.D.: Mi idea es ir resolviendo sistemas que representan matrices "pequeñas" a lo largo de la diagonal dentro de la matriz del sistema.
En línea

Envejecer es como escalar una gran montaña: mientras se sube las fuerzas disminuyen, pero la mirada es más libre, la vista más amplia y serena.

La verdadera juventud una vez alcanzada, nunca se pierde.
feriva
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 6.719



Ver Perfil
« Respuesta #2 : 03/12/2017, 02:23:41 pm »


Hola.


  • Con un número muy elevado de incógnitas (cientos, o incluso miles)



Pues me da la impresión de que cientos o miles son muchas incógnitas (con ordenador, digo, porque a mano ya...).
Por el nick que tienes, ¿es para un polinomio interpolador? Si es así, además tendrás que usar  nodos de Chebyshev, porque de lo contrario, por muchos datos que metas, no se arregla con eso lo de ajustar los valores, incluso puede ser peor (tengo entendido, no es que yo sepa mucho de la cuestión).

Saludos.
En línea

Ignacio Larrosa
Moderador Global
Pleno*
*

Karma: +0/-0
Conectado Conectado

Sexo: Masculino
España España

Mensajes: 1.739


Ver Perfil WWW
« Respuesta #3 : 03/12/2017, 02:57:57 pm »

Hola [texx]vandermonde[/texx],

Busca por "sparse linear systems" o "sistemas lineales dispersos" y encontrarás bastantes cosas. Puedes añadir homogeneous/homogeneos para ser más específico.

Está muy bien tu nick, aunque no corresponde precisamente a matrices dispersas ... :sonrisa:

Saludos,

En línea

Daría todo lo que se por la mitad de lo que ignoro (R. Descartes)
O incluso por mucho menos ...
vandermonde
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 6


Ver Perfil
« Respuesta #4 : 04/12/2017, 05:50:10 am »

Muchas gracias por vuestras respuestas!
En línea
mathtruco
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Chile Chile

Mensajes: 4.592

El gran profesor inspira


Ver Perfil
« Respuesta #5 : 05/12/2017, 12:24:14 pm »


Supongo que este tipo de sistemas aparecen con frecuencia en la ciencia (a mí al menos me ha surgido  :indeciso:), pero los métodos tradicionales como Gauss o Cramer entiendo que no son nada apropiados para ellos. Os agradezco cualquier orientacion.
 

Efectivamente, las matrices sparse, o también llamadas dispersas o ralas (matrices de gran dimensión con muchos elementos nulos) aparecen frecuentemente, asociadas incluso a sistemas de ecuaciones con miles o millones de incógnitas.

Normalmente uno no programa estos métodos, sino que busca una buena biblioteca que los tenga implementados (como  SuperLU, MUMPS o PETSc), y sólo se preocupa de escribir la matriz en el formato requerido. Pero si uno trabaja con matlab no necesita elegir nada, porque internamente decide qué usar.
En línea

Quien pregunta es ignorante durante un minuto; quien no pregunta, es ignorante durante toda su vida.
vandermonde
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 6


Ver Perfil
« Respuesta #6 : 05/12/2017, 05:22:05 pm »

Mathtruco, efectivamente trabajo con Mathlab! Por favor, podrías ser un poco más explícito? Quieres decir que estos métodos ya los tiene Mathlab como funciones propias?
Y por otra parte, no es necesario darle algún tipo de formato a la gigantesca matriz de entrada? (Evitar ceros en la diagonal, o algo así)
Gracias!
En línea
mathtruco
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Chile Chile

Mensajes: 4.592

El gran profesor inspira


Ver Perfil
« Respuesta #7 : 05/12/2017, 06:17:41 pm »

Mathtruco, efectivamente trabajo con Mathlab! Por favor, podrías ser un poco más explícito? Quieres decir que estos métodos ya los tiene Mathlab como funciones propias?

Nunca he usado mathlab, pero lo he escuchado. Yo me refería a matlab.

Si te referías a matlab (que es muy probable), efectivamete usa funciones propias para todo. Seguramente la mayoría sean los mismos algoritmos que usa cualquier otro software, pero advierte que por ser un software comercial difícilmente comparta sus secretos (al menos no los más importantes), en particular para manejo de matrices sparse. Quizás en google encuentres algunos algoritmos que usa.

Y por otra parte, no es necesario darle algún tipo de formato a la gigantesca matriz de entrada? (Evitar ceros en la diagonal, o algo así)

En matlab, si tienes una matriz A y escribes

    A=sparse(A)

y con eso inmediatamente la convierte en una matriz sparse, y todas las operaciones que hagas con ella serán considerándola sparse, incluída la inversa o el "\" (para resolver sistemas de ecuaciones). Uno simplemente confía que el software usa el algoritmo más eficiente en cada caso.

P.D.

Si tu matriz es realmente grande y no puedes cargarla como matriz llena para luego convertirla a sparse, entonces revisa el comando spconvert.
En línea

Quien pregunta es ignorante durante un minuto; quien no pregunta, es ignorante durante toda su vida.
vandermonde
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 6


Ver Perfil
« Respuesta #8 : 06/12/2017, 11:37:05 am »

Gracias mathtruco, creo que esto es justo lo que necesitaba. Me sorprende que Matlab sea tan "listo" como para elegir por su cuenta el método iterativo a utilizar en un caso u otro! Pero confiaremos en él, y a ver si no explota, jeje.
En línea
mathtruco
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Chile Chile

Mensajes: 4.592

El gran profesor inspira


Ver Perfil
« Respuesta #9 : 06/12/2017, 03:07:49 pm »

El gran inconveniente de matlab -como lenguaje de programación- es ser muy lento. Pero su ventaja es ser "muy listo", lo que permite que uno sólo se preocupe de la matemática confiando que matlab hará bien las decisiones internas. Así que uno puede escribir un programa correcto desde el punto de vista matemático, pero si no tiene el cuidado de programar como a matlab le gusta andará muy lento.

Si quieres nos cuentas con más detalles qué estás haciendo y analizamos si lo estás haciendo de la mejor manera.
En línea

Quien pregunta es ignorante durante un minuto; quien no pregunta, es ignorante durante toda su vida.
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.1 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!