Integración en Sage

Como indicamos en la entrada de expresiones simbólicas, la integración de dichas expresiones es inmediata:

sage: f(x) = x^2
sage: integral(f,x)             # integral indefinida
sage: integral(f,x,0,1)         # integral definida
sage: numerical_integral(f,0,1) # aproximacion numerica

Para mostrar la aproximación de la integral usando sumas de Riemann es necesario crear un objeto Piecewise a partir de la función:

sage: fp = Piecewise([[(0,1),f]])   # consideramos f en [0,1]
sage: fp.riemann_sum_integral_approximation(6) # 6 intervalos
55/216

La función escalonada involucrada en la suma de Riemann anterior puede mostrarse gráficamente:

sage: r = fp.riemann_sum(6)
sage: plot(r)

trapezoid permite obtener la función aproximada por trapecios:

sage: t = fp.trapezoid(4) # 4 intervalos 
sage: integral(t,x,0,1)
11/32
sage: plot(t)

La regla de Simpson puede ser programada de forma sencilla en una función:

def simpson(f, a, b, n):
    """SIMPSON  Regla de Simpson para aproximar integrales
    SIMPSON(F, A, B, N) aproxima por la regla de Simpson la integral
    de la funcion F en el intervalo [A,B] usando N subintervalos; 
    N debe ser par y mayor o igual que 2.
    """
    if is_odd(n) or n<2:
        raise RuntimeError('El numero de subintervalos debe ser par'\
        'y mayor o igual que 2.')
    elif n==2:
        c = vector([1,4,1])
    else:
        c = [4, 2]*int(n/2)  # repetir [4,2] n/2 veces
        c = vector(RR, [1] + c[:n-1] +[1])  # construir (1,4,2,...,4,1)
    h = (b-a)/n.n()
    y = vector([a,a+h..b]).apply_map(f)
    return h*c.dot_product(y)/3

 

Advertisements
Esta entrada foi publicada en Sage. Ligazón permanente.

Deixar unha resposta

introduce os teu datos ou preme nunha das iconas:

Logotipo de WordPress.com

Estás a comentar desde a túa conta de WordPress.com. Sair / Cambiar )

Twitter picture

Estás a comentar desde a túa conta de Twitter. Sair / Cambiar )

Facebook photo

Estás a comentar desde a túa conta de Facebook. Sair / Cambiar )

Google+ photo

Estás a comentar desde a túa conta de Google+. Sair / Cambiar )

Conectando a %s