![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| Hola. En el trabajo, estoy intentando programar un tema que quizás sea más de índole informático, pero quizás puedan ayudarme los matemáticos. Sea la función hipergeométrica (Kummer) más simple: Sumatorio(desde n=0 hasta infinito) [ alpha_n (x^n / n!) ], donde definimos alpha_n de forma recurrente como sigue: alpha_0 = 1 alpha_n = ( alpha_n+1 / alpha_n ) = (n -1/2) / (n+1). El problema de esta serie es que para valores muy muy pequeños de n, el ordenador se desborda. Para valores de x aproximados a 100 la serie acaba convergiendo, pero se desborda el ordenador. Para valores de x entre -30 y -40, la serie acaba convergiendo en 100 iteraciones, pero para valores de x menores que 100, uso una aproximación que me da un error de 1/|x|, el cual es mucho (no pongo la aproximación porque prácticamente me la estoy inventando). ¿Se puede "simplificar" esta serie para poder computarla mejor con un error aceptable?. Gracias. |
| | ||||
| ||||
| |
| |||
| Conchivgr***gmail.com wrote: > Hola. > > En el trabajo, estoy intentando programar un tema que quizás sea más > de índole informático, pero quizás puedan ayudarme los matemáticos. > > Sea la función hipergeométrica (Kummer) más simple: > > Sumatorio(desde n=0 hasta infinito) [ alpha_n (x^n / n!) ], donde > definimos alpha_n de forma recurrente como sigue: > > alpha_0 = 1 > > alpha_n = ( alpha_n+1 / alpha_n ) = (n -1/2) / (n+1). > No entiendo muy bien esa dedinición de alpha_n ... -- Saludos, Ignacio Larrosa Cañestro A Coruña (España) ilarrosaQUITARMAYUSCULAS***mundo-r.com > El problema de esta serie es que para valores muy muy pequeños de n, > el ordenador se desborda. Para valores de x aproximados a 100 la > serie acaba convergiendo, pero se desborda el ordenador. > > Para valores de x entre -30 y -40, la serie acaba convergiendo en 100 > iteraciones, pero para valores de x menores que 100, uso una > aproximación que me da un error de 1/|x|, el cual es mucho (no pongo > la aproximación porque prácticamente me la estoy inventando). > > ¿Se puede "simplificar" esta serie para poder computarla mejor con un > error aceptable?. > > Gracias. -- Saludos, Ignacio Larrosa Cañestro A Coruña (España) ilarrosaQUITARMAYUSCULAS***mundo-r.com |
| |||
| Conchivgr***gmail.com wrote: > Hola. > > En el trabajo, estoy intentando programar un tema que quizás sea más > de índole informático, pero quizás puedan ayudarme los matemáticos. > > Sea la función hipergeométrica (Kummer) más simple: > > Sumatorio(desde n=0 hasta infinito) [ alpha_n (x^n / n!) ], donde > definimos alpha_n de forma recurrente como sigue: > > alpha_0 = 1 > > alpha_n = ( alpha_n+1 / alpha_n ) = (n -1/2) / (n+1). > No entiendo muy bien esa dedinición de alpha_n ... -- Saludos, Ignacio Larrosa Cañestro A Coruña (España) ilarrosaQUITARMAYUSCULAS***mundo-r.com > El problema de esta serie es que para valores muy muy pequeños de n, > el ordenador se desborda. Para valores de x aproximados a 100 la > serie acaba convergiendo, pero se desborda el ordenador. > > Para valores de x entre -30 y -40, la serie acaba convergiendo en 100 > iteraciones, pero para valores de x menores que 100, uso una > aproximación que me da un error de 1/|x|, el cual es mucho (no pongo > la aproximación porque prácticamente me la estoy inventando). > > ¿Se puede "simplificar" esta serie para poder computarla mejor con un > error aceptable?. > > Gracias. -- Saludos, Ignacio Larrosa Cañestro A Coruña (España) ilarrosaQUITARMAYUSCULAS***mundo-r.com |
| |||
| On 25 ene, 09:48, Conchi...***gmail.com wrote: > Hola. > > En el trabajo, estoy intentando programar un tema que quizás sea más > de índole informático, pero quizás puedan ayudarme los matemáticos.. > > Sea la función hipergeométrica (Kummer) más simple: > > Sumatorio(desde n=0 hasta infinito) [ alpha_n (x^n / n!) ], donde > definimos alpha_n de forma recurrente como sigue: > > alpha_0 = 1 > > alpha_n = ( alpha_n+1 / alpha_n ) = (n -1/2) / (n+1). > > El problema de esta serie es que para valores muy muy pequeños de n, > el ordenador se desborda. Para valores de x aproximados a 100 la > serie acaba convergiendo, pero se desborda el ordenador. > > Para valores de x entre -30 y -40, la serie acaba convergiendo en 100 > iteraciones, pero para valores de x menores que 100, uso una > aproximación que me da un error de 1/|x|, el cual es mucho (no pongo > la aproximación porque prácticamente me la estoy inventando). > > ¿Se puede "simplificar" esta serie para poder computarla mejor con un > error aceptable?. > > Gracias. Perdón. Quise poner: alpha_n = ( alpha_n / alpha_n+1 ) = (n -1/2) / (n+1). Está basado en los polinomios de Laguerre. Gracias. |
| |||
| On 25 ene, 09:48, Conchi...***gmail.com wrote: > Hola. > > En el trabajo, estoy intentando programar un tema que quizás sea más > de índole informático, pero quizás puedan ayudarme los matemáticos.. > > Sea la función hipergeométrica (Kummer) más simple: > > Sumatorio(desde n=0 hasta infinito) [ alpha_n (x^n / n!) ], donde > definimos alpha_n de forma recurrente como sigue: > > alpha_0 = 1 > > alpha_n = ( alpha_n+1 / alpha_n ) = (n -1/2) / (n+1). > > El problema de esta serie es que para valores muy muy pequeños de n, > el ordenador se desborda. Para valores de x aproximados a 100 la > serie acaba convergiendo, pero se desborda el ordenador. > > Para valores de x entre -30 y -40, la serie acaba convergiendo en 100 > iteraciones, pero para valores de x menores que 100, uso una > aproximación que me da un error de 1/|x|, el cual es mucho (no pongo > la aproximación porque prácticamente me la estoy inventando). > > ¿Se puede "simplificar" esta serie para poder computarla mejor con un > error aceptable?. > > Gracias. Perdón. Quise poner: alpha_n = ( alpha_n / alpha_n+1 ) = (n -1/2) / (n+1). Está basado en los polinomios de Laguerre. Gracias. |
| |||
| On 25 ene, 10:37, Conchi...***gmail.com wrote: > > Perdón. Quise poner: > > alpha_n = ( alpha_n / alpha_n+1 ) = (n -1/2) / (n+1). > > Está basado en los polinomios de Laguerre. Sigue sin estar nada clara esa definición Si quieres decir que alpha_n = ( n - 1/2 ) / ( n + 1 ) entonces no tiene sentido dar una relación de recurrencia. Y si quieres dar una relación de recurrencia, entonces tienes que expresar alpha_{n+1} en función (explícita o implícita) de los miembros anteriores. Si escribes alpha_n = alpha_n / alpha_{n+1}, tendrías alpha_{n+1}=1 para todo n. ¿Te refieres al símbolo de Pochhammer? http://mathworld.wolfram.com/PochhammerSymbol.html Échale un vistazo también a http://mathworld.wolfram.com/Conflue...FirstKind.html |
| |||
| On 25 ene, 10:37, Conchi...***gmail.com wrote: > > Perdón. Quise poner: > > alpha_n = ( alpha_n / alpha_n+1 ) = (n -1/2) / (n+1). > > Está basado en los polinomios de Laguerre. Sigue sin estar nada clara esa definición Si quieres decir que alpha_n = ( n - 1/2 ) / ( n + 1 ) entonces no tiene sentido dar una relación de recurrencia. Y si quieres dar una relación de recurrencia, entonces tienes que expresar alpha_{n+1} en función (explícita o implícita) de los miembros anteriores. Si escribes alpha_n = alpha_n / alpha_{n+1}, tendrías alpha_{n+1}=1 para todo n. ¿Te refieres al símbolo de Pochhammer? http://mathworld.wolfram.com/PochhammerSymbol.html Échale un vistazo también a http://mathworld.wolfram.com/Conflue...FirstKind.html |
| |||
| On 25 ene, 10:58, Radiador <radiado...***hotmail.com> wrote: > On 25 ene, 10:37, Conchi...***gmail.com wrote: > > > > > Perdón. Quise poner: > > > alpha_n = ( alpha_n / alpha_n+1 ) = (n -1/2) / (n+1). > > > Está basado en los polinomios de Laguerre. > > Sigue sin estar nada clara esa definición > Si quieres decir que > > alpha_n = ( n - 1/2 ) / ( n + 1 ) > > entonces no tiene sentido dar una relación de recurrencia. Y si > quieres dar una relación de recurrencia, entonces tienes que expresar > alpha_{n+1} en función (explícita o implícita) de los miembros > anteriores. > Si escribes > > alpha_n = alpha_n / alpha_{n+1}, tendrías alpha_{n+1}=1 para todo n. > > ¿Te refieres al símbolo de Pochhammer?http://mathworld.wolfram.com/PochhammerSymbol.html > > Échale un vistazo también ahttp://mathworld.wolfram.com/ConfluentHypergeometricFunctionoftheFirs... Hola Antonio. Muchas gracias por tu interés. A ver si me explico correctamente. Aquí tienes la definición, en wikipedia: http://en.wikipedia.org/wiki/Hyperge...The_series_pFq En concreto nos interesa el caso con p = 1 y q = 1 (función de Kummer) con: a1 = -1/2 b1 = 1 y conseguir evaluarlo numéricamente para valores del orden de z = -100 (z siempre real y negativo en nuestro problema) Lo que estamos haciendo actualmente es aplicar la definición de función hipergemétrica tal cual para valores z > -30 y para valores mayores usamos una expansión asintótica, tal como viene el Abramowitz y Stegun: http://www.math.sfu.ca/~cbm/aands/page_504.htm Como podemos ver para valores de z = -100 el error es del orden de dos decimales, que a nosotros nos vale de sobra, pero parece mentira no poder obtenerlo mejor... La pregunta es por tanto: ¿Podemos hallar un método que te evalue la funcíón 1F1(-1/2, 1, x) para todo x con la precisión únicamente limitada por la precisión de la coma flotante del ordenador? Aunque el problema ya está matemáticamente planteado te digo de donde viene todo el asunto: En el proyecto tenemos una velocidad norte (vn) y una velocidad sur (vs) que siguen distribuctiones normales, supongamos independientes y con idéntica varianza, pero distinta media. Entonces el módulo de la velocidad es: v = sqrt(vn^2 + vs^2) y sigue una distribución chi no centrada: http://en.wikipedia.org/wiki/Noncent...i_distribution A mí, de esta distribución sólo me interesa la media y la varianza. Como puedes ver en wikipedia lo dificil es calcular la media: raiz_cuadrada( Pi/2) (L_1/2)^(k/2-1)(-lambda^2 / 2) Donde: a L n es un polinomio generalizado de Laguerre y buscamos el caso particular n = 1/2 y a = 0 (ya que es k = 2) http://en.wikipedia.org/wiki/Laguerre_polynomial Curiosamente en wikipedia solo vienen los polinomios de Laguerre para casos con n entero. La definición para n fraccional se encuentra en: http://functions.wolfram.com/Hyperge...neral/02/0001/ Las funciones gamma no son un problema. El problema es la función 1F1 : http://mathworld.wolfram.com/Regular...cFunction.html Finalmente necesitamos calcular pFq que es lo que ya sabías... Gracias. |
| |||
| On 25 ene, 10:58, Radiador <radiado...***hotmail.com> wrote: > On 25 ene, 10:37, Conchi...***gmail.com wrote: > > > > > Perdón. Quise poner: > > > alpha_n = ( alpha_n / alpha_n+1 ) = (n -1/2) / (n+1). > > > Está basado en los polinomios de Laguerre. > > Sigue sin estar nada clara esa definición > Si quieres decir que > > alpha_n = ( n - 1/2 ) / ( n + 1 ) > > entonces no tiene sentido dar una relación de recurrencia. Y si > quieres dar una relación de recurrencia, entonces tienes que expresar > alpha_{n+1} en función (explícita o implícita) de los miembros > anteriores. > Si escribes > > alpha_n = alpha_n / alpha_{n+1}, tendrías alpha_{n+1}=1 para todo n. > > ¿Te refieres al símbolo de Pochhammer?http://mathworld.wolfram.com/PochhammerSymbol.html > > Échale un vistazo también ahttp://mathworld.wolfram.com/ConfluentHypergeometricFunctionoftheFirs... Hola Antonio. Muchas gracias por tu interés. A ver si me explico correctamente. Aquí tienes la definición, en wikipedia: http://en.wikipedia.org/wiki/Hyperge...The_series_pFq En concreto nos interesa el caso con p = 1 y q = 1 (función de Kummer) con: a1 = -1/2 b1 = 1 y conseguir evaluarlo numéricamente para valores del orden de z = -100 (z siempre real y negativo en nuestro problema) Lo que estamos haciendo actualmente es aplicar la definición de función hipergemétrica tal cual para valores z > -30 y para valores mayores usamos una expansión asintótica, tal como viene el Abramowitz y Stegun: http://www.math.sfu.ca/~cbm/aands/page_504.htm Como podemos ver para valores de z = -100 el error es del orden de dos decimales, que a nosotros nos vale de sobra, pero parece mentira no poder obtenerlo mejor... La pregunta es por tanto: ¿Podemos hallar un método que te evalue la funcíón 1F1(-1/2, 1, x) para todo x con la precisión únicamente limitada por la precisión de la coma flotante del ordenador? Aunque el problema ya está matemáticamente planteado te digo de donde viene todo el asunto: En el proyecto tenemos una velocidad norte (vn) y una velocidad sur (vs) que siguen distribuctiones normales, supongamos independientes y con idéntica varianza, pero distinta media. Entonces el módulo de la velocidad es: v = sqrt(vn^2 + vs^2) y sigue una distribución chi no centrada: http://en.wikipedia.org/wiki/Noncent...i_distribution A mí, de esta distribución sólo me interesa la media y la varianza. Como puedes ver en wikipedia lo dificil es calcular la media: raiz_cuadrada( Pi/2) (L_1/2)^(k/2-1)(-lambda^2 / 2) Donde: a L n es un polinomio generalizado de Laguerre y buscamos el caso particular n = 1/2 y a = 0 (ya que es k = 2) http://en.wikipedia.org/wiki/Laguerre_polynomial Curiosamente en wikipedia solo vienen los polinomios de Laguerre para casos con n entero. La definición para n fraccional se encuentra en: http://functions.wolfram.com/Hyperge...neral/02/0001/ Las funciones gamma no son un problema. El problema es la función 1F1 : http://mathworld.wolfram.com/Regular...cFunction.html Finalmente necesitamos calcular pFq que es lo que ya sabías... Gracias. |
| |||
| Conchivgr***gmail.com escribió: > On 25 ene, 10:58, Radiador <radiado...***hotmail.com> wrote: >> On 25 ene, 10:37, Conchi...***gmail.com wrote: >> >> >> >>> Perdón. Quise poner: >>> alpha_n = ( alpha_n / alpha_n+1 ) = (n -1/2) / (n+1). >>> Está basado en los polinomios de Laguerre. >> Sigue sin estar nada clara esa definición >> Si quieres decir que >> >> alpha_n = ( n - 1/2 ) / ( n + 1 ) >> >> entonces no tiene sentido dar una relación de recurrencia. Y si >> quieres dar una relación de recurrencia, entonces tienes que expresar >> alpha_{n+1} en función (explícita o implícita) de los miembros >> anteriores. >> Si escribes >> >> alpha_n = alpha_n / alpha_{n+1}, tendrías alpha_{n+1}=1 para todo n. >> >> ¿Te refieres al símbolo de Pochhammer?http://mathworld.wolfram.com/PochhammerSymbol.html >> >> Échale un vistazo también ahttp://mathworld.wolfram.com/ConfluentHypergeometricFunctionoftheFirs... > > Hola Antonio. Muchas gracias por tu interés. A ver si me explico > correctamente. > > Aquí tienes la definición, en wikipedia: > > http://en.wikipedia.org/wiki/Hyperge...The_series_pFq > > En concreto nos interesa el caso con p = 1 y q = 1 (función de Kummer) > con: > > a1 = -1/2 > b1 = 1 > Segun el Mathematica (que asegura que puede calcularlo con precisión arbitraria) Hypergeometric1F1[-1/2,1,x] equivale a -E^(x/2) (-BesselI[0,x/2]+x BesselI[0,x/2]-x BesselI[1,x/2]) o, en forma más tradicional, 1F1(-1/2;1;x) = e^(x/2)((1-x)I0(x/2) - x I1(1,x/2)) y algoritmos para calcular las funciones de Bessel hay muchos. El valor para z=-100 es 11.31203668068241340991172874532835607911829924... Calcular 2000 decimales le lleva 0.016 segundos. > y conseguir evaluarlo numéricamente para valores del orden de z = -100 > (z siempre real y negativo en nuestro problema) > > Lo que estamos haciendo actualmente es aplicar la definición de > función hipergemétrica tal cual para valores z > -30 y para valores > mayores usamos una expansión asintótica, tal como viene el Abramowitz > y Stegun: http://www.math.sfu.ca/~cbm/aands/page_504.htm > > Como podemos ver para valores de z = -100 el error es del orden de dos > decimales, que a nosotros nos vale de sobra, pero parece mentira no > poder obtenerlo mejor... > > La pregunta es por tanto: > > ¿Podemos hallar un método que te evalue la funcíón 1F1(-1/2, 1, x) > para todo x con la precisión únicamente limitada por la precisión de > la coma flotante del ordenador? > > Aunque el problema ya está matemáticamente planteado te digo de donde > viene todo el asunto: > > En el proyecto tenemos una velocidad norte (vn) y una velocidad sur > (vs) que siguen distribuctiones normales, supongamos independientes y > con idéntica varianza, pero distinta media. Entonces el módulo de la > velocidad es: > > v = sqrt(vn^2 + vs^2) > > y sigue una distribución chi no centrada: http://en.wikipedia.org/wiki/Noncent...i_distribution > > A mí, de esta distribución sólo me interesa la media y la varianza. > Como puedes ver en wikipedia lo dificil es calcular la media: > > raiz_cuadrada( Pi/2) (L_1/2)^(k/2-1)(-lambda^2 / 2) > > Donde: > a > L > n > > es un polinomio generalizado de Laguerre y buscamos el caso particular > n = 1/2 y a = 0 (ya que es k = 2) > http://en.wikipedia.org/wiki/Laguerre_polynomial > > Curiosamente en wikipedia solo vienen los polinomios de Laguerre para > casos con n entero. La definición para n fraccional se encuentra en: > http://functions.wolfram.com/Hyperge...neral/02/0001/ > > Las funciones gamma no son un problema. El problema es la función > 1F1 : > > http://mathworld.wolfram.com/Regular...cFunction.html > > Finalmente necesitamos calcular pFq que es lo que ya sabías... > > Gracias. > -- Antonio |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| lo que hagas en pro de la informatica, la informatica lo hara en tubeneficio | Boixnet | Newsgroup es.comp.os.ms-windows.programacion | 0 | 18-06-2008 13:02:36 |
| lo que hagas en pro de la informatica, la informatica lo hara en tubeneficio | Boixnet | Newsgroup es.comp.hardware.misc | 0 | 18-06-2008 13:01:24 |
| lo que hagas en pro de la informatica, la informatica lo hara en tubeneficio | Boixnet | Newsgroup es.comp.os.ms-windows.misc | 0 | 18-06-2008 12:59:25 |
| lo que hagas en pro de la informatica, la informatica lo hara en tubeneficio | Herounknown & Boixnet | Newsgroup es.comp.hackers | 0 | 18-06-2008 12:50:36 |
| Qué escandalo: Una aproximación histórica que levanta ampollas | Runspect | Newsgroup es.humanidades.literatura | 1 | 07-02-2008 16:35:29 |