Autor Tema: Cómo resolver un SEL con muchas incógnitas

0 Usuarios y 1 Visitante están viendo este tema.

03 Diciembre, 2017, 04:50 pm
Leído 2127 veces

vandermonde

  • Nuevo Usuario
  • Mensajes: 15
  • Karma: +0/-0
  • Sexo: Masculino
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  :-\), pero los métodos tradicionales como Gauss o Cramer entiendo que no son nada apropiados para ellos. Os agradezco cualquier orientacion.

Saludos. 

03 Diciembre, 2017, 05:16 pm
Respuesta #1

robinlambada

  • Moderador Global
  • Mensajes: 3,374
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
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  :-\), 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.
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.

03 Diciembre, 2017, 06:23 pm
Respuesta #2

feriva

  • Matemático
  • Mensajes: 9,077
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
  • No soy matemático, eso es una etiqueta.

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.

03 Diciembre, 2017, 06:57 pm
Respuesta #3

Ignacio Larrosa

  • Moderador Global
  • Mensajes: 2,270
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Actividades con GeoGebra
Hola \( vandermonde \),

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 ... :)

Saludos,

Daría todo lo que se por la mitad de lo que ignoro (R. Descartes)
O incluso por muchísimo menos ...  (yo)

04 Diciembre, 2017, 09:50 am
Respuesta #4

vandermonde

  • Nuevo Usuario
  • Mensajes: 15
  • Karma: +0/-0
  • Sexo: Masculino
Muchas gracias por vuestras respuestas!

05 Diciembre, 2017, 04:24 pm
Respuesta #5

mathtruco

  • Moderador Global
  • Mensajes: 4,947
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira

Supongo que este tipo de sistemas aparecen con frecuencia en la ciencia (a mí al menos me ha surgido  :-\), 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.

05 Diciembre, 2017, 09:22 pm
Respuesta #6

vandermonde

  • Nuevo Usuario
  • Mensajes: 15
  • Karma: +0/-0
  • Sexo: Masculino
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!

05 Diciembre, 2017, 10:17 pm
Respuesta #7

mathtruco

  • Moderador Global
  • Mensajes: 4,947
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
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.

06 Diciembre, 2017, 03:37 pm
Respuesta #8

vandermonde

  • Nuevo Usuario
  • Mensajes: 15
  • Karma: +0/-0
  • Sexo: Masculino
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.

06 Diciembre, 2017, 07:07 pm
Respuesta #9

mathtruco

  • Moderador Global
  • Mensajes: 4,947
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
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.