![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| 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 |
| | ||||
| ||||
| |
| |||
| On 25 ene, 05:37, Conchi...***gmail.com wrote: > 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). > ¿No será más bien alpha_{n+1} = alpha_n (n -1/2)/(n+1) ? ¿Y porqué no trabajas con Maple o Mathematica, que ya tienen esas funciones definidas? jhn |
| |||
| On 25 ene, 05:37, Conchi...***gmail.com wrote: > 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). > ¿No será más bien alpha_{n+1} = alpha_n (n -1/2)/(n+1) ? ¿Y porqué no trabajas con Maple o Mathematica, que ya tienen esas funciones definidas? jhn |
| |||
| On 25 ene, 13:49, Antonio González <gonfe...***gmail.com> wrote: > Conchi...***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 todon. > > >> ¿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...guerreL3Genera... > > > 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 Muchas gracias. El caso es que tenemos que hacerlo en 1 ms, por eso decía que quizás fuera el problema más informático que matemático. Muchas gracias por las respuestas. |
| |||
| On 25 ene, 13:49, Antonio González <gonfe...***gmail.com> wrote: > Conchi...***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 todon. > > >> ¿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...guerreL3Genera... > > > 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 Muchas gracias. El caso es que tenemos que hacerlo en 1 ms, por eso decía que quizás fuera el problema más informático que matemático. Muchas gracias por las respuestas. |
| |||
| Conchivgr***gmail.com escribió: > > Muchas gracias. > El caso es que tenemos que hacerlo en 1 ms, El Mathematica calcula 2000 decimales (¿necesitas más de 2000 decimales?) para la lista -100,-99.9,...,-0.1,0 en In[21]:= Table[N[f[n], 2000], {n, -100, 0, .1}]; // Timing Out[21]= {0.078, Null} es decir, 8 céntesimas de segundo para mil números con 2000 decimales (esto es 8 cienmilésimas por evaluación). -- Antonio |
| |||
| Conchivgr***gmail.com escribió: > > Muchas gracias. > El caso es que tenemos que hacerlo en 1 ms, El Mathematica calcula 2000 decimales (¿necesitas más de 2000 decimales?) para la lista -100,-99.9,...,-0.1,0 en In[21]:= Table[N[f[n], 2000], {n, -100, 0, .1}]; // Timing Out[21]= {0.078, Null} es decir, 8 céntesimas de segundo para mil números con 2000 decimales (esto es 8 cienmilésimas por evaluación). -- Antonio |
| |||
| On 25 ene, 15:27, Antonio González <gonfe...***gmail.com> wrote: > Conchi...***gmail.com escribió: > > > > > Muchas gracias. > > El caso es que tenemos que hacerlo en 1 ms, > > El Mathematica calcula 2000 decimales (¿necesitas más de 2000 > decimales?) para la lista -100,-99.9,...,-0.1,0 en > > In[21]:= Table[N[f[n], 2000], {n, -100, 0, .1}]; // Timing > > Out[21]= {0.078, Null} > > es decir, 8 céntesimas de segundo para mil números con 2000 decimales > (esto es 8 cienmilésimas por evaluación). > > -- > > Antonio Muchísimas gracias Antonio. No tengo el Mathemática aquí. Pero tiene una pinta estupenda eso que me dices. ¿Podrías hacerme el favor de calcularlo para x = -80?. Si me pudieras decir la sentencia que usas para obtener el valor que obtuviste para -100, me podría instalar Mathematica y hacer pruebas. Muchísimas Gracias. |
| |||
| On 25 ene, 15:27, Antonio González <gonfe...***gmail.com> wrote: > Conchi...***gmail.com escribió: > > > > > Muchas gracias. > > El caso es que tenemos que hacerlo en 1 ms, > > El Mathematica calcula 2000 decimales (¿necesitas más de 2000 > decimales?) para la lista -100,-99.9,...,-0.1,0 en > > In[21]:= Table[N[f[n], 2000], {n, -100, 0, .1}]; // Timing > > Out[21]= {0.078, Null} > > es decir, 8 céntesimas de segundo para mil números con 2000 decimales > (esto es 8 cienmilésimas por evaluación). > > -- > > Antonio Muchísimas gracias Antonio. No tengo el Mathemática aquí. Pero tiene una pinta estupenda eso que me dices. ¿Podrías hacerme el favor de calcularlo para x = -80?. Si me pudieras decir la sentencia que usas para obtener el valor que obtuviste para -100, me podría instalar Mathematica y hacer pruebas. Muchísimas Gracias. |
| |||
| On 25 ene, 15:46, Conchi...***gmail.com wrote: > On 25 ene, 15:27, Antonio González <gonfe...***gmail.com> wrote: > > > > > Conchi...***gmail.com escribió: > > > > Muchas gracias. > > > El caso es que tenemos que hacerlo en 1 ms, > > > El Mathematica calcula 2000 decimales (¿necesitas más de 2000 > > decimales?) para la lista -100,-99.9,...,-0.1,0 en > > > In[21]:= Table[N[f[n], 2000], {n, -100, 0, .1}]; // Timing > > > Out[21]= {0.078, Null} > > > es decir, 8 céntesimas de segundo para mil números con 2000 decimales > > (esto es 8 cienmilésimas por evaluación). > > > -- > > > Antonio > > Muchísimas gracias Antonio. No tengo el Mathemática aquí. Pero tiene > una pinta estupenda eso que me dices. ¿Podrías hacerme el favor de > calcularlo para x = -80?. Si me pudieras decir la sentencia que usas > para obtener el valor que obtuviste para -100, me podría instalar > Mathematica y hacer pruebas. > > Muchísimas Gracias. Perdón. Para z = -80. Gracias. |
| |
| |
![]() |
| 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 |