Práctica 6 (Cálculo)

Integral de Riemann

Clear["Global`*"]

Sumas inferiores y superiores.

Como sabemos, una función dada es integrable Riemann si el valor de la integral inferior y de la integral superior coinciden. Estos valores pueden expresarse como límites de sumas inferiores y superiores. A continuación vamos a considerar una partición uniforme, y a calcular la suma inferior y superior de una función.

Comenzamos definiendo la función, el intervalo en el que consideramos la función, el número de nodos, y la partición.

\(f[x_] := Cos[3  x/2]; 

a = 0; b = 1; 


    Gráfica = Plot[f[x], {x, a, b}, AxesOrigin -> {0, 0}]; 


    n = 7; 
nodos = Table[a + i \((b - a)\)/n, {i, 0, n}]\)

Observe que el primer elemento de la partición se denota en Mathematica con nodos[[1]], y el último con nodos[[n+1]].

\(nodos[\([1]\)]
\)nodos[[n + 1]]

Seguimos con la definición del supremo y del ínfimo de la función en cada intervalo. Llamamos m[i] al ínfimo de la función f en el intervalo cerrado que determinan nodos[[i-1]] y nodos[[i]], y llamamos M[[i]] al supremo de la función f en el mismo intervalo.
Nótese que la función del ejemplo es decreciente, lo cual simplifica la definición del supremo y del ínfimo.

m[i_] := f[ nodos[[i]]  ]
M[i_] := f[  nodos[[i - 1]]   ]

Consideramos para cada uno de los intervalos comprendidos entre nodos[[i-1]] y nodos[[i]] , el rectángulo que tiene por base la longitud del intervalo, y como altura el valor de m[i]. (Observe que la función es positiva en el intervalo considerado).

RectánguloInferior[i_] := { RGBColor[1, 1, 0] ,     
        Rectangle[{nodos[[i - 1]], 0}, {nodos[[i]], m[i]}]   }

Este rectángulo tiene un área igual a (nodos[[i]]-nodos[[i-1]])*m[i] . Si sumamos el área de todos los rectángulos, desde el correspondiente al intervalo dado por nodos[[1]],nodos[[2]]   hasta el dado por nodos[[n]],nodos[[n+1]], el resultado es:

N[Sum[(nodos[[i]] - nodos[[i - 1]])*m[i], {i, 2, n + 1}]]

Ponemos estos rectángulos en una lista, y representamos todos los 'rectángulos inferiores' junto con la gráfica de la función.

RectángulosInferiores = 
      Table[RectánguloInferior[i], {i, 2, n + 1}];

Show[Gráfica, Graphics[RectángulosInferiores  ] ];

Procedemos de forma similar con los 'rectángulos superiores'.

RectánguloSuperior[i_] := { RGBColor[1, 0, 0] ,     
        Rectangle[{nodos[[i - 1]], 0}, {nodos[[i]], M[i]}]   }
        
\(RectángulosSuperiores = 
      Table[RectánguloSuperior[i], {i, 2, n + 1}]; 


    Show[Graphics[RectángulosSuperiores\ \ ], \ Gráfica\ ]; 
    \)

N[Sum[(nodos[[i]] - nodos[[i - 1]])*M[i], {i, 2, n + 1}]]

Y ahora representamos todos los rectángulos.

Show[Graphics[RectángulosSuperiores  ],  Gráfica
       , Graphics[RectángulosInferiores  ]];

Ejercicio: En el ejemplo que acabamos de ver, calcule la diferencia entre la suma superior y la suma inferior.

Ejercicio: Con la misma función e intervalo, calcule la suma inferior y la suma superior para n=700. Calcule la diferencia entre la suma superior y la suma inferior.

Ejercicio: De forma similar, calcule las sumas inferiores y superiores para f(x)=x^2, dividiendo el intervalo [0,1] en n=20 intervalos.

Integral definida.

Como hemos dicho, dada una función f y un intervalo [a,b], la función es integrable Riemann si el valor de la integral inferior y de la integral superior coinciden. En tal caso este valor se denomina la integral de Riemann de f en el intervalo [a,b], y con Mathematica se calcula mediante la orden Integrate[f[x],{x,a,b}].

Por ejemplo, para f[x]=Cos[3x/2], y para el intervalo delimitado por a=0 y b=1, se tiene.

Integrate[Cos[3  x/2], {x, 0, 1}]

Si queremos obtener un valor numérico aproximado, usamos la orden NIntegrate.

NIntegrate[Cos[3  x/2], {x, 0, 1}]

En el siguiente ejemplo, también usamos la orden NIntegrate.

Integrate[E^(-x^2), {x, -1, 1}]

NIntegrate[E^(-x^2), {x, -1, 1}]

No siempre la instrucción NIntegrate devuelve el valor correcto de una integral definida. Vea los mensajes que produce la siguiente instrucción, y no tome el valor por correcto.

NIntegrate[Exp[-x^2], {x, -1000, 1000}]

La instrucción devuelve un valor próximo a cero, sin embargo la gráfica de la función parece indicar otro valor para la integral definida.

Plot[Exp[-x^2], {x, -10, 10}, PlotRange -> {0, 1}];

Calcularemos el valor de la integral definida calculando primero el valor exacto, y obteniendo luego una aproximación usando la orden N[  ].

IE = Integrate[Exp[-x^2], {x, -1000, 1000}]

N[IE]

Ejercicio: Calcula la integral definida de la función g(x)=1/ln (x) entre a=2 y b=4.

Ejercicio: Calcula la integral definida de la función g(x)=1/sen(x) entre a=2 y b=3.

Cálculo de primitivas.

Como sabemos, dada una función f definida en un intervalo, la función P se dice una primitiva de f, si P es derivable y P'(x)=f(x) para todo valor x del intervalo.

La instrucción Integrate[f[x],x] permite calcular una primitiva de la función f.

Integrate[Sin[x], x]

Integrate[x^2, x]

Integrate[(x^2 + x + 1)/(x - 1), x]

Integrate[1/((5 - x)^(1/2) + (5 - x)^(1/4)), x]

Integrate[1/(Sin[x] + 1)^2, x]

En ocasiones Mathematica nos da una fórmula que no tiene en cuenta todos los casos.

Integrate[1/x, x]

O simplemente, no calcula la primitiva. (Puede comprobarse que la función F[x]=(1/2)*x*Abs[x] es continua, derivable, y su derivada es la función Abs[x].)

Integrate[Abs[x], x]

Integrate[Cos[1 + Sin[x]^2], x]

En el siguiente ejemplo comprobamos que Integrate nos da una primitiva de la función considerada.

g[x_] := Integrate[1/Sqrt[x^2 + x + 1], x]

g[x]

D[g[x], x]

Simplify[D[g[x], x]]

En este punto recordamos que la orden Apart puede usarse para descomponer un cociente de polinomios en fracciones simples.

Apart[(x + 1)/(x^2 - 4), x]

Apart[(x^3 + 1)/(x^2 + 4)^2, x]

Regla de Barrow.

La regla de Barrow nos permite calcular la integral definida de una función si conocemos una primitiva de dicha función. En concreto, si f:[a,b]⟶ℝ es una función continua, y P es una primitiva cualquiera de f en el dominio [a,b], entonces la integral definida de f entre a y b  vale P(b)-P(a), esto es

(∫_a^b) f[x] dx = P[b] - P[a].

Veamos un ejemplo. Supongamos que queremos calcular la integral definida de la función f[x]=x^2*Sin[x] entre 0 y 2 Pi. En primer lugar calculamos una primitiva de la función f.

f[x_] := x^2*Sin[x]

Y a continuación calculamos una primitiva con la orden Integrate. (No deben usarse los dos puntos : para definir esta función, ya que la x se usa en el Integrate como variable de integración, y no debe tomar un valor concreto)

P[x_] = Integrate[x^2*Sin[x], x]

Ahora sólo nos queda evaluar la primitiva en los extremos del intervalo y restar.

P[2 Pi] - P[0]

Vemos como la orden Integrate indicando los extremos del intervalo, nos da el mismo resultado.

Integrate[x^2*Sin[x], {x, 0, 2 Pi}]

Ejercicio: Calcule una primitiva de la función x+3/(x^2+1), y úsela para calcular de forma exacta la integral definida entre 1 y 3. Calcule una aproximación del resultado obtenido.

Fórmula de los trapecios.

En este apartado aproximaremos la función por una poligonal, de forma que la integral definida se aproxima usando la suma de las areas de los trapecios que determina la poligonal.
    Comenzamos definiendo la función, el intervalo en que se considera dicha función, el número de trapecios que usaremos para aproximar la integral definida, y los nodos que sirven para definir los trapecios.

\(f[x_] := Cos[3  x/2]; 

a = 0; b = 1; 


    Grafica = Plot[f[x], {x, a, b}, AxesOrigin -> {0, 0}]; 

n = 2; 

    
nodos = Table[a + i \((b - a)\)/n, {i, 0, n}]\)

Ahora, para i=2,...,n+1,  definimos el i-ésimo trapecio, a partir de los nodos[[i-1]] y nodos[[i]].

Trapecio[i_] := { RGBColor[1, 0, 0] ,     
        Polygon[{
{nodos[[i - 1]], 0}, 
            
{nodos[[i - 1]], f[nodos[[i - 1]]]}, 
            
{nodos[[i]], f[nodos[[i]]]} , 
            
{nodos[[i]], 0}  
}]
             }

El area del trapecio es

AreaTrapecio[i_] := 
      (nodos[[i]] - nodos[[i - 1]])*
        (f[nodos[[i]]] + f[nodos[[i - 1]]])/2

Ahora dibujamos la gráfica de la función junto con los trapecios definidos.

Trapecios = Table[Trapecio[i], {i, 2, n + 1}];

Show[Grafica, Graphics[Trapecios ] ];

La suma de las areas de los trapecios nos da el valor de la fórmula compuesta de los trapecios,

N[  Sum[AreaTrapecio[i], {i, 2, n + 1}]  ]

Puede calcularse este valor de forma directa

N[  
      Sum[(nodos[[i]] - nodos[[i - 1]])*
          (f[nodos[[i]]] + f[nodos[[i - 1]]])/2, {i, 2, n + 1}]
          ]

Nótese que esta fórmula no supone que la partición es uniforme, es decir, que no es necesario que los nodos se encuentren a la misma distancia. La siguiente fórmula, algo más simple, supone que los nodos están todos a la misma distancia (b-a)/n.

N[(b - a)/n*
        (f[nodos[[1]]]/2 + Sum[f[nodos[[i]]], {i, 2, n}] + 
            f[nodos[[n + 1]]]/2)]

NIntegrate[f[x], {x, a, b}]

Ejercicio: En el ejemplo anterior use n=20 y n=200 nodos, para calcular la aproximación al valor de la integral definida usando la fórmula compuesta de los trapecios. Compare los resultados con el valor que da la orden NIntegrate, calculando la diferencia entre ambos valores.

Ejercicio: Use la fórmula compuesta de los trapecios para aproximar la integral definida de la función g(x)=sen(x) en el intervalo [0,Pi], usando n=50. Calcule el valor que da la orden NIntegrate, y compare ambos resultados calculando la diferencia.

Fórmula de Simpson.

La fórmula de Simpson compuesta aparece cuando se aproxima la función en cada intervalo de la partición por una parábola. En concreto, en el intervalo determinado por A=nodos[[i-1]] y B=nodos[[i]], se considera un nodo intermedio (A+B)/2, y se construye la parábola (polinomio de grado 2) que pasa por f [ A ], por f [ (A+B)/2 ] y  f [ B ].  La integral definida de f se aproximará sumando las integrales de las parábolas definidas en cada intervalo de la partición.

En primer lugar definimos la parábola correspondiente al intervalo [A,B], y calculamos la integral definida de esta parábola entre A y B.

\(Clear["Global`*"]
\)g[x_, A_, B_] := 
      f[A] (((x - (A + B)/2) (x - B))/((A - (A + B)/2) 
              (A - B))) + 
        f[(A + B)/2] 
          (((x - A) (x - B))/(((A + B)/2 - A) 
              ((A + B)/2 - B))) + 
        f[B] (((x - A) (x - (A + B)/2))/((B - A) 
              (B - (A + B)/2)))\(


    AreaParabola[A_, B_] = Simplify[Integrate[g[x, A, B], {x, A, B}]]\)

Como en los apartados anteriores definimos la función, los extremos del intervalo, el valor de n y la partición.

\(f[x_] := 5\ Cos[3  x]; 

a = 0; \ b = 1; 


    Grafica = Plot[f[x], {x, a, b}, AxesOrigin -> {0, 0}]; 

n = 2; 

    
nodos = Table[a + i \((b - a)\)/n, {i, 0, n}]\)

Con estas definiciones dibujamos la gráfica de la función y de la parábola en el primer intervalo de la partición.

\(A = nodos[\([1]\)]; 

B = nodos[\([2]\)]; 


    Plot[{f[x], g[x, A, B]}, {x, A, B}, 
      PlotStyle -> {RGBColor[0, 0, 1], RGBColor[1, 0, 0]}]; \)

Podemos aproximar la integral definida de la función sumando las integrales definidas de cada una de las parábolas.

N[ Sum[AreaParabola[nodos[[i - 1]], nodos[[i]]], {i, 2, n + 1}]
         ]

Comparamos el valor obtenido con el resultado de la correspondiente instrucción NIntegrate.

NIntegrate[f[x], {x, a, b}]

Podemos calcular el valor de la fórmula compuesta de Simpson de forma directa. En la siguiente fórmula se supone que la partición es uniforme.

N[(1/6)*((b - a)/n)*
        (f[nodos[[1]]] + 2*Sum[f[nodos[[i]]], {i, 2, n}] + 
            4*Sum[f[((nodos[[i - 1]] + nodos[[i]])/2)], {i, 2, 
                  n + 1}] + f[nodos[[n + 1]]])
]

Ejercicio: Ejecute de nuevo las órdenes de este apartado dando a n el valor n=200. Observe la gráfica que compara la función con la parábola en el primer intervalo de la partición.

Ejercicio: Aproxime la integral definida entre -1 y 1 de la función f(x)=(Sqrt[1 - x^2])usando la fórmula compuesta de Simpson para n=200. Compare este valor con Pi / 2 calculando la diferencia entre ambos numeros.

Ejercicios

Para hacer los ejercicios, tenga en cuenta que d1 es el valor de la primera cifra de su D.N.I., y d2 el valor de la segunda cifra.

1- Calcule la suma inferior y superior correspondiente a la función f(x)=exp(x) en el intervalo [0,2] para n=10 y n=20. (Tenga en cuenta que la función es estrictamente creciente).

2- Calcule las siguientes integrales definidas: a) f(x)=x^2+3 entre x=-d1 y x=d2. b) g(x)=sen(x) entre x=0 y x=Pi. c) h(x)=(Sqrt[1 + sen^2 (x)])entre x=0 y x=Pi.

3- Calcule el valor exacto de la integral definida de la función  h (x) = (Sqrt[1 - x^2])entre -1 y 1.

4- Calcule una primitiva de cada una de las siguientes funciones: f(x)=cos(x)+1/sen(x),  g(x)=(Sqrt[1 + sinh^2 (x)]),  h(x)=cos(x)/(1+tg^2(x))

5- Use la fórmula compuesta de los trapecios y de Simpson para aproximar el valor de la integral definida de f(x)=sin(1+cos^2(x)) entre x=0 y x=2. Calcule las aproximaciones para n=10 y n=100, y compare estos valores con el valor que devuelve la correspondiente instrucción NIntegrate.