Recientemente, me encontré con la siguiente integración: %#% $ de #% donde $$\int_0^1 \sqrt{\int_0^1 f(x,y)dx}\ dy$ es bastante complejo. Sabemos que con la ayuda de Mathematica es fácil de calcular el valor numérico del $f(x,y)$. Sin embargo, se convierte en inútil manejar con la integración que he mencionado más arriba. ¿Me pregunto si hay cualquier métodos que pueden simplificar esta integración a la forma de $\int_0^1 \int_0^1 f(x,y)dxdy$, o podemos encontrar alguna forma eficiente de calcular su valor numérico?
Respuestas
¿Demasiados anuncios?Podría definir la función$g(y) = \sqrt{\int_0^1 f(x,y)\,dx}$ y luego usar un método de cuadratura estándar para calcular$\int_0^1 g(y)\,dy$. Cada vez que la rutina de cuadratura evalúa$g$ tiene que llamar a una rutina de cuadratura separada para evaluar$\int_0^1 f(x,y)\,dx$ con$y$ corregido. Me doy cuenta de que este puede no ser el método más eficiente, pero debería funcionar. Quizás con más información acerca de$f(x,y)$ podría decirse.
Como se mencionó en la primera respuesta, primero debe definir una función $$F(y) = \sqrt{\int_0^1 f(x,y)\,dx}$$ (Supongo que esto será un procedimiento numérico, la verdad) y, a continuación, calcular $$\int_0^1 F(y) dy.$$ A partir de allí, supongo que es realmente una programación de que se trate. Para hacer esto en Mathematica (que se puede mencionar que tiene), puede hacer algo así:
f[x_, y_] := x^2 + y^2;
F[y_?NumericQ] := Sqrt[NIntegrate[f[x, y], {x, 0, 1}]]
NIntegrate[F[y], {y, 0, 1}]
(* Out: 0.796843 *)
Asumo este ejemplo es mucho más sencillo que el tuyo pero, espero, que ilustra la idea. También, esto puede ser evaluado en forma cerrada para que podamos comparar:
Integrate[Sqrt[Integrate[f[x, y], {x, 0, 1}]], {y, 0, 1}]
(* Out: 1/Sqrt[3] + ArcSinh[Sqrt[3]]/6 *)