métodos numéricos para el calculo científico con matlab - tomo 3

56
Presentado por: Mera Carrasco, Junior Lino Malhaber Montenegro, Miguel ´ Angel Asesor: Dr. Collantes Santisteban, Luis Jaime UNPRG 2014 etodos Num´ ericos para el alculo Cient´ ıfico con Matlab TOMO 3

Upload: junior-lino-mera-carrasco

Post on 09-Dec-2015

43 views

Category:

Documents


5 download

DESCRIPTION

Métodos Numéricos para el Calculo Científico con Matlab - TOMO 3

TRANSCRIPT

Page 1: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

Presentado por:Mera Carrasco, Junior Lino

Malhaber Montenegro, Miguel Angel

Asesor:Dr. Collantes Santisteban, Luis Jaime

UNPRG

2014

Metodos Numericos para el

Calculo Cientıfico con Matlab

TOMO 3

Page 2: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

UNIVERSIDAD NACIONAL

“PEDRO RUIZ GALLO”

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

ESCUELA PROFESIONAL DE MATEMATICA

“Metodos Numericos para el CalculoCientıfico con Matlab”

TOMO 3

INTEGRACION NUMERICA

Presentado por:

Mera Carrasco Junior Lino

Malhaber Montenegro Miguel Angel

Asesor:

Dr. Collantes Santisteban Luis Jaime

LAMBAYEQUE − PERU

2014

Page 3: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

Introduccion

La presentacion de estos tomos tiene su origen en los Seminarios denominados FUN-

DAMENTOS DE ECUACIONES NO LINEALES, INTERPOLACION, DIFEREN-

CIACION E INTEGRACION NUMERICA PARA EL CALCULO CIENTIFICO y

CALCULO CIENTIFICO DE ECUACIONES NO LINEALES, INTERPOLACION,

DIFERENCIACION E INTEGRACION NUMERICA CON MATLAB desarrollados

en Diciembre del 2012 como investigacion de los cursos de Seminario de Matematica

Pura y Aplicada de la carrera profesional de Matematicas de la Universidad Nacional

Pedro Ruiz Gallo con el asesoramiento del Dr. Luis Jaime Collantes Santisteban, dichos

trabajos enfocaban la parte teorica y practica de algunos temas del Calculo Cientıfico.

Estos tomos no son documentos comerciales, por el contrario decidimos trabajar para

que se encuentre al alcance de todos, es bien sabido la dificultad que tienen estudiantes

y profesionales de ingenierıa, ciencias medicas, ciencias economicas entre otras para ide-

alizar sus problemas y desarrollar un modelo matematico adecuado en algunos casos es

difıcil porque la aplicacion resulta excesivamente compleja o los metodos analiticos no se

adecuan muy bien a sus resultados por ello es conveniente el uso de metodos numericos

los cuales conducen a soluciones aproximadas pero mas manejables y se puede dar uso

a un ordenador provisto de un software adecuado, para nuestro caso Matlab.

Metodos Numericos para el Calculo Cientıfico con Matlab esta divido en 7 tomos:

TOMO 0 Conceptos Previos

TOMO 1 Ecuaciones No Lineales

TOMO 2 Interpolacion

TOMO 3 Diferenciacion e Integracion Numerica

TOMO 4 Ecuaciones Lineales

TOMO 5 Ecuaciones Diferenciales Ordinarias

TOMO 6 Ecuaciones Diferenciales Parciales

Page 4: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

Metodos Numericos para el Calculo Cientıfico con Matlab, explicara de manera sencilla

y con ejemplos el uso y la programacion de Interfaces Graficas de Usuario (GUI) ası co-

mo el clasico uso de los archivos “.m” y por supuesto la solucion “manual”.

Este TOMO denominado INTEGRACIONNUMERICA esta dividido en tres capıtu-

los:

En el primero revisaremos la parte teorica sobre los diferentes metodos de Integracion

Numerica, sus demostraciones y sus errores correspondientes.

En el segundo capıtulo solucionaremos problemas mediante el uso de nuestras Interfaces

Graficas con los distintos metodos de solucion y verificaremos cual es el mas efectivo

para distintos problemas.

Dejaremos para el final los codigo fuente utilizados en la creacion de las interfaces grafi-

cas.

”Por favor, soy Rodney McKay, difıcil tarda unos segundos. Imposible, un par de min-

utos. ”Dr. Rodney McKay - Stargate Atlantis

Page 5: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

INDICE GENERAL

1. Integracion Numerica 6

1.1. Formulas de Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2. Formula del punto medio o del rectangulo . . . . . . . . . . . . . . . . . 8

1.3. Formula del Trapecio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.4. Formula de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.5. Formula de Simpson de 3/8 . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.6. Formula de Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.7. Cuadraturas de tipo interpolatorio . . . . . . . . . . . . . . . . . . . . . 20

2. Integracion Numerica 26

2.1. Comparacion de Metodos Iteractivos . . . . . . . . . . . . . . . . . . . . 28

2.1.1. Analizando una funcion trascendental . . . . . . . . . . . . . . . . 28

2.1.2. Analizando una funcion Polinomica . . . . . . . . . . . . . . . . . 36

3. Codigo Fuente de los GUI’S 44

3.1. Metodo del Trapecio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.2. Metodo de Simpson 1/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.3. Metodo de Simpson 3/8 . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3.4. Metodo de Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Page 6: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

Capıtulo 1

INTEGRACION NUMERICA

En esta seccion introducimos metodos numericos apropiados para aproximar la integral

I(f) =

b∫

a

f(x)dx

a una de la forma

I ′(f) =

M∑

k=1

wkf(xk),

donde f es una funcion arbitraria continua en [a, b] y con la siguiente distribucion de

nodos x0 < x1 < x2 < . . . < xM estan en [a, b]. A los wi se les llama pesos.

1.1. Formulas de Newton-Cotes

La Formulas de Newton-cotes se emplean especialmente cuando la integral no puede

calcularse analıticamente o cuando solo se conocen valores de f en un numero finito de

puntos.

Las formulas de Newton-Cotes son formulas del tipo:

b∫

a

f(x)dx =

M∑

k=0

wkf(xk) + En, H = (b− a)/M, xk = a+ kH.

Para determinar los {wk} (llamados Pesos de cuadratura) se usa la formula de

interpolacion de Lagrange.

Page 7: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 7

Sea f ∈ Cn+1[a, b]. Sea ΠM(x) el polinomio de grado ≤ M que interpola f en los M +1

puntos (distintos) x0, x1, . . . , xM en el intervalo [a, b]. Para cada valor fijo x ∈ [a, b] existe

ξ(x) ∈ (a, b) tal que

f(x)− ΠM(x) =f (n+1)(ξ(x))

(n + 1)!

M∏

k=0

(x− xk)

entoncesb

a

f(x)dx =

b∫

a

ΠM (x) +f (n+1)(ξ(x))

(n+ 1)!

M∏

k=0

(x− xk)dx (1.1)

En particular, usando la forma de Lagrange del polinomio interpolante, ΠM(x) =M∑

k=0

ykϕk(x) con ϕk(x) =M∏

j=0,j 6=k

x−xj

xk−xjtenemos el siguiente teorema.

Teorema 1.1.1. Sea f ∈ Cn+1[a, b]. Sea ΠM(x) el polinomio de grado ≤ M que interpola

f en los M + 1 puntos (distintos) en el intervalo [a, b]. Existe η ∈ (a, b) tal que

∫ b

a

f(x)dx =

M∑

k=0

yk

∫ b

a

M∏

j=0,j 6=k

x− xj

xk − xj

dx+f (n+1)(η)

(n+ 1)!

∫ b

a

M∏

k=0

(x− xk)dx (1.2)

Siempre y cuandoM∏

k=0

(x− xk) sea de un mismo signo en [a, b].

Dentro de las formulas de Newton-Cotes, existen las formas cerradas y abiertas. En

las formas cerradas se conocen los valores de f(x0) = f(a) y f(xM) = f(b) ; en caso

contrario, se llaman formas abiertas.

Los dos teoremas que damos a continuacion permiten, obtener las formulas cerradas ya

biertas de Newton-Cotes respectivamente.

Para las cerradas se tiene que

Teorema 1.1.2. Supongamos queM∑

k=1

wkf(xk), es la formula cerrada de Newton-Cotes

con x0 = a y xM = b,H =b− a

M, entonces existe ξ ∈ (a, b), tal que

b∫

a

f(x)dx =

M∑

k=0

wkf(xk) +Hn+3f (n+2)(ξ)

(n+ 2)!

M∫

0

v2(v − 1)(v − 2) . . . (v −M)dv

si n es par, f ∈ Cn+2[a, b] y

b∫

a

f(x)dx =

M∑

k=0

wkf(xk) +Hn+2f (n+1)(ξ)

(n+ 1)!

M∫

0

v(v − 1)(v − 2) . . . (v −M)dv

Page 8: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 8

si n es impar, f ∈ Cn+1[a, b], wk =b∫

a

Πk(x)dx.

Para la formulas abiertas el teorema es

Teorema 1.1.3. Supongamos queM∑

k=1

wkf(xk), es la formula abierta de Newton-Cotes

con x0 = a y xM+2 = b,H =b− a

M + 2, entonces existe ξ ∈ (a, b), tal que

b∫

a

f(x)dx =M∑

k=0

wkf(xk) +Hn+3f (n+2)(ξ)

(n + 2)!

M+2∫

0

v2(v − 1)(v − 2) . . . (v −M)dv

si n es par, f ∈ Cn+2[a, b] y

b∫

a

f(x)dx =M∑

k=0

wkf(xk) +Hn+2f (n+1)(ξ)

(n+ 1)!

M+2∫

0

v(v − 1)(v − 2) . . . (v −M)dv

si n es impar, f ∈ Cn+1[a, b].

Si comparamos una formula abierta con una cerrada utilizando el mismo numero M de

datos, el error de la formula abierta es significativamente mayor que el de la formula

cerrada.

1.2. Formula del punto medio o del rectangulo

Una aproximacion de la integral I(f) consiste en aproximar el area bajo la curva y = f(x)

por rectangulos de base xk−1 − xk y altura f(xk−1+xk

2), para esto se puede establecer

dividiendo el intervalo [a, b] en subintervalos Ik = [xk−1, xk], k = 1, . . . ,M , con xk =

a+ kH, k = 0, . . . ,M y H = (b− a)/M . Como

I(f) =M∑

k=1

Ik

f(x)dx, (1.3)

sobre cada subintervalo Ik podemos aproximar la integral exacta de f por la de un

polinomio f que aproxima f sobre Ik. La solucion mas simple consiste en elegir f como

el polinomio constante que interpola a f en el punto medio de Ik:

xk =xk−1 + xk

2

Page 9: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 9

Desarrollando la ecuacion 1.3 :

I(f) =

I1

f(x)dx+

I2

f(x)dx+ . . .+

IM

f(x)dx

Desarrollando la integral en el intervalo k-esimo y aplicando Taylor en el punto xk hasta

el orden 3, tenemos

xk∫

xk−1

f(x)dx =xk∫

xk−1

[f(xk) + (x− xk)f′(xk) +

(x−xk)2

2f ′′(ξ(x))]dx

= (xk − xk−1)f(xk) + f ′(xk)xk∫

xk−1

(x− xk)dx+xk∫

xk−1

(x−xk)2

2f ′′(ξ(x))dx

Haciendo simples calculosxk∫

xk−1

(x− xk)dx = 0, y por el teorema del valor medio para las

integrales, existe ξk ∈ [xk−1, xk] tal que

xk∫

xk−1

(x− xk)2

2f ′′(ξ(x))dx =

1

2f ′′(ξk)

xk∫

xk−1

(x− xk)2dx =

(xk − xk−1)3

24f ′′(ξk)

de lo anterior

I(f) =M∑

k=1

(xk − xk−1)f(xk) +M∑

k=1

(xk−xk−1)3

24f ′′(ξk)

= HM∑

k=1

f(xk) +H2

24. (b−a)

M

M∑

k=1

f ′′(ξk)

= HM∑

k=1

f(xk) +H2

24(b− a)

M∑

k=1

f ′′(ξk)

M

PeroM∑

k=1

f ′′(ξk)

M=

f ′′(ξ1) + f ′′(ξ2) + . . .+ f ′′(ξM)

M

es la media aritmetica de la funcion continua f ′′, por tanto esta se puede reemplazar

por f ′′(ξ) para algun ξ ∈ (a, b), de modo que

I(f) = HM∑

k=1

f(xk) +b− a

24H2f ′′(ξ)

De esta forma obtenemos la formula de cuadratura del punto medio compuesta

Icmp(f) = H

M∑

k=1

f(xk) (1.4)

Page 10: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 10

El sımbolo mp significa el punto medio, mientras que c quiere decir compuesta. Esta

formula es una aproximacion de segundo orden con respecto a H . Concretamente, si f

es dos veces continuamente diferenciable en [a, b], tenemos

I(f)− Icmp(f) =b− a

24H2f ′′(ξ) (1.5)

donde ξ ∈ [a, b]. La formula (1.4) tambien se llama formula de cuadratura del

rectangulo compuesta a causa de su interpretacion geometrica, que es evidente a

partir de la figura (1.2). La formula del punto medio (o formula del rectangulo) se ob-

tiene tomando M = 1 en (1.4), es decir, utilizando la regla del punto medio directamente

sobre el intervalo (a, b).

Figura 1.1: Formula del punto medio compuesta (izquierda); formula del punto medio

(derecha).

Imp(f) = (b− a)f [(a+ b)/2] (1.6)

Ahora deduciremos su error que es un caso especial de (1.5). Sea x = (a + b)/2, y

aplicando Taylor hasta el orden 3 en x :

I(f) =b∫

a

[f(x) + (x− x)f ′(x) + (x−x)2

2f ′′(η(x))]dx

= (b− a)f(x) + f ′(x)b∫

a

(x− x)dx+b∫

a

(x−x)2

2f ′′(η(x))dx

donde η(x) es un punto apropiado del intervalo cuyos puntos extremos son x y x. Hacien-

do simples calculosb∫

a

(x−x)dx = 0, y por el teorema del valor medio para las integrales,

existe ξ ∈ [a, b] tal que

b∫

a

(x− x)2

2f ′′(η(x))dx =

1

2f ′′(ξ)

b∫

a

(x− x)2dx =(b− a)3

24f ′′′(ξ)

Page 11: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 11

de lo anterior podemos concluir : I(f) = (b − a)f(x) + (b−a)3

24f ′′′(ξ) y reemplazando la

ecuacion (1.6) obtenemos el error del punto medio:

I(f)− Imp(f) =(b− a)3

24f ′′′(ξ). (1.7)

Definicion 1.2.1. El grado de exactitud de una formula de cuadratura es el maxi-

mo entero r ≥ 0 para el cual la integral aproximada (producida por la formula de

cuadratura) de cualquier polinomio de grado r es igual a la integral exacta.

Podemos deducir de (1.5) y (1.7) que la formula del punto medio tiene grado de exactitud

1, ya que integra exactamente todos los polinomios de grado menor o igual que 1 (pero

no todos los de grado 2).

Ejemplo 1.2.1. Hallar la siguiente integral aplicando la regla del rectangulo conM = 5,2

1

ln xdx.

El valor de H = b−aM

= 2−15

= 0,2 y hallamos el valor de la funcion en cada xk.

f(x) x1 x2 x3 x4 x5

1.1 1.3 1.5 1.7 1.9

ln x 0.09531 0.26236 0.40546 0.53063 0.64185

Luego aplicando la formula del punto medio (1.4)

Icmp(f) = HM∑

k=1

f(xk)

= 0,2[0,09531 + 0,26236 + 0,40546 + 0,53063 + 0,64185]

= 0,387122

Ahora el error vendra dado por

e ≤ (b−a)24

H2 maxx∈[1,2]

|f ′′(x)| = 0,0016667max | 1x2 | = 0,0016667

Page 12: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 12

1.3. Formula del Trapecio

Otra aproximacion de la integral I(f) consiste en aproximar el area bajo la curva y =

f(x) no por rectangulos sino por trapecios de base xk−1 − xk.

Puede obtenerse reemplazando f en Ik por el polinomio de interpolacion lineal de f en

los nudos xk−1 y xk (equivalentemente, reemplazando f por ΠH1 f sobre todo el intervalo

(a, b)).

Sabemos que

ΠH1 f(x) = f(xk−1) +

f(xk)−f(xk−1)

xk−xk−1

(x− xk−1) =x−xk

xk−1−xkf(xk−1) +

x−xk−1

xk−xk−1

f(xk)

de esto tenemos que

b∫

a

ΠH1 f(x)dx =

M∑

k=1

Ik

( x−xk

xk−1−xkf(xk−1) +

x−xk−1

xk−xk−1

f(xk)) =

=M∑

k=1

(f(xk)2

(xk+1 − xk) +f(xk−1)

2(xk − x))

=H

2

M∑

k=1

[f(xk) + f(xk−1)]

o sea queb

a

ΠH1 f(x)dx =

H

2[f(x0) + f(x1) + f(x1) + f(x2) + f(x2) + . . .+ f(xM−1) + f(xM−1) + f(xM)]

de modo queb

a

ΠH1 f(x)dx =

H

2{f(x0) + 2[f(x1) + f(x2) + . . .+ f(xM−1)] + f(xM)}

Por lo tanto

b∫

a

ΠH1 f(x)dx =

H

2[f(a) + f(b)] +H

M−1∑

k=1

f(xk) = Ict (f) (1.8)

Esta formula se llama formula del trapecio compuesta y es una aproximacion de

segundo orden con respecto a H . En efecto, veamos el siguiente teorema.

Teorema 1.3.1 ((El error de la formula del trapecio)). Sea f ∈ C2[a, b], entonces

∃ξ ∈ [a, b] tal que:

I(f)− Ict (f) = −b − a

12H2f ′′(ξ) (1.9)

es el error de cuadratura.

Page 13: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 13

x = a x x = b x = a x = b

X X

0k0 1M

f

f

Figura 1.2: Formula del trapecio compuesta (izquierda); formula del trapecio (derecha).

Demostracion. Sabemos que en el intervalo [xk−1, xk] la funcion f(x), esta dada por

f(x) = Πkf(x)+Ek(x),siendo, Πk(x) el k-esimo polinomio de Lagrange yEk(x) =(x− xk−1)(x− xk)

2!f ′′(

(ver ecuacion (??)) luego entonces

xk∫

xk−1

f(x)dx =

xk∫

xk−1

Πkf(x)dx+1

2!

xk∫

xk−1

(x− xk−1)(x− xk)f′′(ξ(x))dx

Pero por el teorema del valor medio para integrales existe ξk ∈ (xk−1, xk), tal que

xk∫

xk−1

f(x)dx =

xk∫

xk−1

Πkf(x)dx+f ′′(ξk)

2!

xk∫

xk−1

(x− xk−1)(x− xk)dx

sea x = xk−1 +Hv, xk−1 = a + (k − 1)H = a + kH −H = xk −H , entonces x− xk =

x− xk−1 −H = Hv −H = H(v − 1) y dx = Hdv

xk∫

xk−1

(x− xk−1)(x− xk)dx =

1∫

0

H(v − 1)HvHdv = H3

1∫

0

(v − 1)vdv = −H3

6

Por lo tantoxk∫

xk−1

(x− xk−1)(x− xk)dx = −H3

6,

Luego, el error en el intervalo [xk−1, xk] es Ek = −f ′′(ξk)H3

12De lo anterior se tiene que

b∫

a

f(x)dx =

b∫

a

ΠH1 f(x)dx−

M∑

k=1

f ′′(ξk)H3

12

pero H = b−aM

, luego

b∫

a

f(x)dx =H

2

M∑

k=1

[f(xk−1) + f(xk)]−b− a

12MH2

M∑

k=1

f ′′(ξk)

Page 14: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 14

o sea que

b∫

a

f(x)dx =H

2

M∑

k=1

[f(xk−1) + f(xk)]−b− a

12H2

M∑

k=1

f ′′(ξk)

M

de modo que

b∫

a

f(x)dx =H

2

M∑

k=1

[f(xk−1) + f(xk)]−(b− a)H2

12f ′′(ξ)

Reemplazando I(f) y Ict (f) tenemos:

I(f)− Ict = −(b− a)H2

12f ′′(ξ)

Cuando se utiliza (1.8) con M = 1, se obtiene

It(f) =b− a

2[f(a) + f(b)] (1.10)

que es la llamada formula del trapecio . El error inducido viene dado por

I(f)− It(f) = −(b− a)3

12f ′′(ξ) (1.11)

donde ξ ∈ [a, b]. Podemos deducir que (1.10) tiene grado de exactitud igual a 1, como

en el caso de la regla del punto medio.

Ejemplo 1.3.1. Hallar la siguiente integral aplicando la regla del trapecio con M = 5,

2∫

1

ln xdx.

El valor de H = b−aM

= 2−15

= 0,2 y hallamos el valor de la funcion en cada nodo.

f(x) x0 x1 x2 x3 x4 x5

1 1.2 1.4 1.6 1.8 2

ln x 0 0.182321 0.33647 0.47000 0.58779 0.69315

Luego aplicando la formula del trapecio (1.8)

Page 15: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 15

Ict (f) = H2[f(x0) + f(x6)] +H

M−1∑

k=1

f(xk)

= 0,22[0 + 0,69315] + 0,2[0,182321 + 0,33647 + 0,47000 + 0,58779]

= 0,3846312

Ahora el er-

ror vendra dado por

e ≤ (b−a)12

H2 maxx∈[1,2]

|f ′′(x)| = 0,0002777max | 1x2 | = 0,0003

1.4. Formula de Simpson

La formula de Simpson puede obtenerse reemplazando la integral de f sobre cada Ik por

la de su polinomio de interpolacion de grado 2 en los nudos xk−1, xk = (xk−1 + xk)/2 y

xk,∏

2 f(x) = 2(x−x)(x−xk)H2 f(xk−1)+

+4(xk−1)(x−xk)

H2 f(xk) +2(x−xk)(x−xk−1)

H2 f(xk)

La formula resultante se llama formula de cuadratura de Simpson compuesta

(ver figura 1.3) y se escribe

Ics(f) =H

6

M∑

k=1

[f(xk−1) + 4f(x) + f(xk)] (1.12)

se puede probar que induce el error

I(f)− Ics(f) = −b− a

180

H4

16f (4)(ξ) (1.13)

donde ξ es un punto apropiado de [a, b], con tal de que f ∈ C4([a, b]). Por consiguiente

es una aproximacion de cuarto orden con respecto a H . Cuando (1.12) se aplica a un

unico intervalo (a, b), obtenemos la llamada formula de cuadratura de Simpson

Is(f) =b− a

6[f(a) + 4f((a+ b)/2) + f(b)] (1.14)

Ahora el error viene dado por

I(f)− Is(f) = − 1

16

(b− a)5

180f (4)(ξ) (1.15)

para un ξ ∈ [a, b] apropiado. Su grado de exactitud es, por tanto, igual a 3.

Ejemplo 1.4.1. Hallar la integral del ejemplo (1.3.1) aplicando la cuadratura de Simp-

son .

Page 16: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 16

Figura 1.3: Formula de Simpson en el intervalo k-esimo

Solucion. Asumiendo que M = 5 tenemos que H = 0,2, de esto tenemos el valor de f

en cada nodo:

Luego aplicando la ecuacion (1.14) tenemos :

f(x) x0 x1 x1 x2 x2 x3 x3 x4

1 1.1 1.2 1.3 1.4 1.5 1.6 1.7

ln x 0 0.095310 0.182321 0.262364 0.33647 0.405465 0.47000 0.530628

f(x) x4 x5 x5

1.8 1.9 2

ln x 0.58779 0.641854 0.69315

Ics =0,2

6[(f(x0) + 4f(x1) + f(x1)) + . . .+ (f(x4) + 4f(x5) + f(x5))]

= =0,2

6[(0 + 4(0,095310) + 0,182321) + . . .+ (0,58779 + 4(0,641854) + 0,69315)]

Ics = 0,386293

Page 17: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 17

1.5. Formula de Simpson de 3/8

La formula de (3/8) considera el valor de M = 3, con el proposito de obtener una

formula para integrar f(x) entre cuatro puntos consecutivos x0, x1, x2, x3, consistiendo

en aproximar la funcion mediante una cubica. Reemplazando f(x) por la del metodo de

Lagrange en dichos puntos.

Π3f(x) =(x− x1)(x− x2)(x− x3)

(x0 − x1)(x0 − x2)(x0 − x3)f(x0) +

(x− x0)(x− x2)(x− x3)

(x1 − x0)(x1 − x2)(x1 − x3)f(x1)+

+(x− x0)(x− x1)(x− x3)

(x2 − x0)(x2 − x1)(x2 − x3)f(x2) +

(x− x0)(x− x1)(x− x2)

(x3 − x0)(x3 − x1)(x3 − x2)f(x3)

de esta expresion se tiene:

x3∫

x0

Π3f(x)dx =f(x0)

(x0 − x1)(x0 − x2)(x0 − x3)

x3∫

x0

(x− x1)(x− x2)(x− x3)dx+

+f(x1)

(x1 − x0)(x1 − x2)(x1 − x3)

x3∫

x0

(x− x0)(x− x2)(x− x3)dx+

+f(x2)

(x2 − x0)(x2 − x1)(x2 − x3)

x3∫

x0

(x− x0)(x− x1)(x− x3)dx+

+f(x3)

(x1 − x0)(x3 − x1)(x3 − x2)

x3∫

x0

(x− x0)(x− x1)(x− x2)dx

si sustituimos:

x = x0 +Hv, como xk = x0 + kH, k = 1, 2, 3, dx = Hdv

x− x1 = H(v − 1), x− x2 = H(v − 2), x− x3 = H(v − 3)

Page 18: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 18

de esto:

x3∫

x0

Π3f(x)dx =f(x0)

(−H)(−2H)(−3H)

3∫

0

H(v − 1)H(v − 2)H(v − 3)Hdv+

+=f(x1)

(H)(−H)(−2H)

3∫

0

vHH(v − 2)H(v − 3)Hdv+

+=f(x2)

(2H)(H)(−H)

3∫

0

vHH(v − 1)H(v − 3)Hdv+

+=f(x3)

(3H)(2H)(H)

3∫

0

vHH(v − 1)H(v − 2)Hdv

de esto resulta:x3∫

x0

Π3f(x)dx =3Hf(x0)

8+

9Hf(x1)

8+

9Hf(x2)

8+

3Hf(x3)

8

Al final se tiene:

x3∫

x0

Π3f(x)dx =3H

8[f(x0) + 3f(x1) + 3f(x2) + f(x3)] = Is3(f) (1.16)

Esta formula (1.16) se conoce como la Regla de Simpson (3/8).

y su error es

I(f)− Is3(f) = −3H5

80f (4)(ξ) (1.17)

Considerando los nodos x0, x1, . . . , xM del intervalo [a, b], para H = (b − a)/(3M), con

xk = x0+kH, k = 0, 1, 2, . . . ,M ; aplicando en cada intervalo I3k [x3k−3, x3k] la formula

se Simpson 3/8, luego en cada intervalo se tiene

x3k∫

x3k−3

Π3kf(x)dx =3H

8[f(x3k−3) + 3f(x3k−2) + 3f(x3k−1) + f(x3k)]

de esto se tiene

b∫

a

ΠMf(x)dx =

M∑

k=1

[3H

8[f(x3k−3) + 3f(x3k−2) + 3f(x3k−1) + f(x3k)]]

Page 19: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 19

b∫

a

ΠMf(x)dx = 3H8[f(x0) + f(x3) + f(x6) + . . .+ f(x3M−3) + 3f(x1) + 3f(x4) + 3f(x7) + . . .

+3f(x3M−2) + 3f(x2) + 3f(x5) + 3f(x8) + . . .+ 3f(x3M−1) + f(x3)+

+f(x6) + f(x9) + . . .+ f(x3M)

b∫

a

ΠMf(x)dx = 3H8[f(x0) + f(x3M)] + 6H

8[f(x3) + f(x6) + f(x9) + . . .+ f(x3M−3)]+

+9H8[f(x1) + f(x4) + f(x7) + . . .+ f(x3M−2)]+

+9H8[f(x2) + f(x5) + f(x8) + . . .+ f(x3M−1)]

La formula resultante se llama formula de cuadratura se Simpson (3/8) com-

puesta y se escribe

Ics3(f) =3H

8[f(a)+f(b)]+

6H

8

M−1∑

k=1

f(x3k)+9H

8

M∑

k=1

f(x3k−2)+9H

8

M∑

k=1

f(x3k−1) (1.18)

1.6. Formula de Boole

La formula de Boole considera el valor de M = 4, el cual haciendo el mismo proced-

imiento para la formula de Simpson 3/8 tenemos

I4(f) =2H

45[7f(x0) + 32f(x1) + 12f(x2) + 32f(x3) + 7f(x4)] (1.19)

y su error viene dado por

I(f)− I4(f) =8H7

945f (6)(ξ), para algun ξ ∈ [a, b]. (1.20)

En una forma mas general, la aplicacion de Boole M veces sobre 4M subintervalos de

[a, b] que tiene todos el mismo tamanoH = (b−a)/(4M), se llama formula compuesta

de Boole.

ICB =2H

45

M∑

k=1

[7f(x4k−4) + 32f(x4k−3) + 12f(x4k−2) + 32f(x4k−1) + 7f(x4k)] (1.21)

Ejemplo 1.6.1. Hallar la integral del ejemplo (1.3.1) aplicando la formula compuesta

de Boole .

Solucion. Asumiendo que M = 5 tenemos que H = 0,05, de esto tenemos el valor de

f en cada nodo:

Luego aplicando la ecuacion (1.21) tenemos :

Page 20: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 20

f(x) x0 x1 x2 x3 x4 x5 x6

1 1.05 1.10 1.15 1.20 1.25 1.30

ln x 0 0.048790 0.095310 0.139761 0.182322 0.22314 0.262364

f(x) x7 x8 x9 x10 x11 x12 x13

1.35 1.40 1.45 1.50 1.55 1.60 1.65

ln x 0.300105 0.336472 0.371564 0.405465 0.438255 0.470004 0.500775

f(x) x14 x15 x16 x17 x18 x19 x20

1.70 1.75 1.80 1.85 1.90 1.95 2

ln x 0.530628 0.559616 0.587787 0.615186 0.641853 0.667829 0.693147

Ics =2 · 0,0545

[(7f(x0) + 32f(x1) + 12f(x2) + 32f(x3) + 7f(x4)) + . . .+ (7f(x16)+

+32f(x17) + 12f(x18) + 32f(x19) + 7f(x20))]

=2 · 0,0545

[(7(1) + 32(0,048790) + 12(0,095310) + 32(0,139761) + 7(0,182322)) + . . .+

+(7(0,587787) + 32(0,615186) + 12(0,641853) + 32(0,667829) + 7(0,693147))]

IcB = 0,386294

OBSERVACION: Al aplicar el mismo ejemplo (2∫

1

ln xdx) para todos los metodos de

cuadratura , nos podemos dar cuenta que el metodo de Boole es la mas optima, la cual

tiene una mejor aproximacion de la integral.

1.7. Cuadraturas de tipo interpolatorio

Como hemos visto las formulas de Newton Cotes las formulas de cuadratura (no com-

puestas) son de la forma:

Iappr(f) =

n∑

j=0

αjf(yj) (1.22)

donde {αj} son pesos de cuadratura,{yj} son los nudos de cuadratura. Hemos visto que

para conseguir un grado de exactitud ≤ n debemos tomar

Iappr(f) =

b∫

a

Πnf(x)dx

Page 21: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 21

donde Πnf ∈ Pn es el polinomio de interpolacion de lagrange de f en los nudos yi, i =

0, . . . , n. Esto proporciona la siguiente expresion para los pesos

αi =

b∫

a

ϕi(x)dx, i = 0, . . . , n

donde ϕi es el i-esimo polinomio caracterıstico de lagrange tal que ϕi(x) =

M∏

j=0,j 6=0

x− xj

xk − xj

.

Ejemplo 1.7.1. Para la formula del trapecio (1.10) tenemos n = 1, x0 = a, x1 = b y

α0 =b∫

a

ϕ0(x)dx =b∫

a

x−ba−b

dx = b−a2,

α1 =b∫

a

ϕ1(x)dx =b∫

a

x−ab−a

dx = b−a2.

La cuestion que surge es si existe elecciones apropiadas de los nudos tales que el grado de

exactitud sea mayor que n, concretamente, igual a r = m+ n para algun m > 0. Pode-

mos simplificar nuestra discusion restringiendonos a un intervalo de referencia, digamos

(−1, 1). En efecto, una vez que disponemos de un conjunto de nudos de cuadratura {yj}y pesos {αj} en [−1, 1], entonces gracias al cambio de variable (??) podemos obtener

inmediatamente los correspondientes nudos y pesos,

yj =a+ b

2+

b− a

2yj, αj =

b− a

2αj

en un intervalo de integracion arbitrario (a, b).

Proposicion 1.7.1. Para un m > 0 dado, la formula de cuadraturan∑

j=0

αjf(yj) tiene

grado de exactitud n + m si y solo si es de tipo interpolatorio y el polinomio nodal

wn+1 = Πni=0(x− yi) asociado a los nudos {yi} es tal que

1∫

−1

wn+1p(x)dx = 0, ∀p ∈ Pm−1. (1.23)

El valor maximo que m puede tomar es n + 1 y se alcanza con tal de que wn+1 sea

proporcional al llamado polinomio de Legendre de grado n+1, Ln+1(x). Los polinomios

de Legendre pueden calcularse recursivamente mediante la siguiente relacion de tres

terminos

L0(x) = 1, L1(x) = x

Lk+1(x) =2k+1k+1

Lk(x)− kk+1

Lk−1(x), k = 1, 2, . . .

Page 22: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 22

Para cada n = 0, 1, . . . , todo polinomio en Pn puede obtenerse mediante una combinacion

lineal de los polinomios L0, L1, . . . , Ln. Ademas, Ln+1 es ortogonal a todos los polinomios

de grado menor o igual que n, es decir,1∫

−1

Ln+1(x)Lj(x)dx = 0 para todo j = 0, . . . , n.

Esto explica por que (1.23) es cierto para m igual pero no mayor que n+ 1. El maximo

grado de exactitud es, por tanto, igual a 2n+1 y se obtiene para la llamada formula de

Gauss-Legendre (abreviadamente IGL), cuyos nudos y pesos estan dados por

yj = ceros de Ln+1(x),

αj =2

(1− y2j)[L′

n+1(yj)]2, j = 0, . . . , n

(1.24)

Los pesos αj son todos positivos y los nudos son interiores al intervalo (−1, 1). En la

Tabla 4.1 recogemos los nudos y pesos de las formulas de cuadratura de Gauss-Legendre

con n = 1, 2, 3, 4. Si f ∈ C(2n+2)([−1, 1]), el correspondiente error es

I(f)− IGL(f) =22n+3((n+ 1)!)4

(2n+ 3)((2n+ 2)!)3f (2n+2)(ξ)

donde ξ es un punto adecuado en (−1, 1).

A menudo es utıl incluir tambien los puntos extremos del intervalo entre los nudos

de cuadratura. Procediendo ası, la formula de Gauss con grado de exactitud maximo

(2n−1) es la que emplea los llamados nudos de Gauss-Legendre-Lobatto (abreviamente,

GLL): para n ≥ 1

y0 = −1, yn = 1, yj = ceros de L′

n(x), j = 1, . . . , n− 1 (1.25)

αj =2

n(n+ 1)

1

[Ln(yj)2], j = 0, . . . , n

si f ∈ C(2n)([−1, 1]), el correspondiente error viene dado por

I(f)− IGLL(f) = −(n + 1)n322n+1((n− 1)!)4

(2n+ 1)((2n)!)3f (2n)(ξ)

Para un ξ ∈ (−1, 1) adecuado. En la tabla 4.2 damos una tabla de nudos y pesos sobre

el intervalo de referencia (-1,1) para n = 1, 2, 3, 4.(Para n = 1 recuperamos la regla del

trapecio).

Page 23: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 23

n {yj} {αj}1 {±1/

√3} {1}

2 {±√15/5, 0} {5/9,8/9}

3 ±(1/35)√

525− 70√30 {(1/36)(18 +

√30)}

±(1/35)√

525 + 70√30 (1/36)(18−

√30)

4 {0,±(1/21)√

245− 14√70 {128/225, (1/900)(322+ 13

√70)}

±(1/21)√

245 + 14√70 (1/900)(322− 13

√70)

Cuadro 1.1: Nudos y pesos para algunas formulas de cuadratura de Gauss- Legendre

sobre el intervalo (−1, 1). Los pesos correspondientes a pares simetricos de nudos se

incluyen solo una vez.

n {yj} αj

1 {±1} {1}2 {±1, 0} {1/3, 4/3}3 {±1,±

√5/5} {1/6,5/6}

4 {±1,±√21/7, 0} {1/10, 49/90, 32/45}

Cuadro 1.2: Nudos y pesos para algunas formulas de cuadratura de Gauss-Legendre-

Lobatto sobre el intervalo (−1, 1). Los pesos correspondientes a pares simetricos de

nudos se incluyen solo una vez.

Page 24: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

CONCLUSIONES

1. Para calcular los ceros (o raices) de una funcion f se utilizan generalmente se

utilizan metodos de tipo iterativo.

2. El metodo de la biseccion es convergente con tal que f sea continua en el intervalo

inicial y tenga signos opuestos en los extremos de este intervalo.

3. El metodo de Newton calcula un cero de f teniendo en cuenta los valores de f y

de su derivada.

4. El metodo de la secante es una variacion del metodo de newton, pero mas eficiente.

5. Si una funcion se aproxima mediante un polinomio de interpolacion, no hay garantıa

de que dicho polinomio converja a la funcion exacta al aumentar el numero de

datos. En general, la interpolacion mediante un polinomio de orden grande debe

evitarse o utilizarse con precauciones extremas.

6. La interpolacion de Chebyshev amortigua las grandes oscilaciones del fenomeno

de Runge.

7. Cuando f no es regular, se utiliza la interpolacion lineal a trozos.

8. La interpolacion por Spline cubicos permite aproxiamr f mediante una funcion

cubica a trozos f que es continua junto con sus derivadas primeras y segundas.

9. En la aproximacion de mınimos cuadrados buscamos una aproximacion f que sea

un polinomio de grado m y que minimice el error cuadratico medion∑

i=0

[yi−f(xi)]2.

El mismo criterio de minimizacion puede ser aplicado a una clase de funciones que

no sean polinomios.

Page 25: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

1. Integracion Numerica 25

10. Una formula de cuadratura es una formula para aproximar la integral de funciones

continuas en un intervalo [a, b].

11. El grado de exactitud de una formula de cuadratura es el mayor grado de los

polinomios que son integrados exactamente por la formula. Es 1 para las reglas

del punto medio y del trapecio, 3 para la regla de Simpson y 2n+1 para la formula

de Gauss-Legendre.

12. El orden de precision de una formula de cuadratura compuesta es su orden respecto

al tamano H de los subintervalos. El orden de precision es 2 para las formulas com-

puestas del punto medio y del trapecio, 4 para la formula de Simpson compuesta

y 6 para laformula de Boole.

Page 26: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

Capıtulo 2

INTEGRACION NUMERICA

En analisis numerico, la integracion numerica constituye una amplia gama de algoritmos

para calcular el valor numerico de una integral definida y, por extension, el termino se

usa a veces para describir algoritmos numericos para resolver ecuaciones diferenciales. El

termino cuadratura numerica (a menudo abreviado a cuadratura) es mas o menos sinoni-

mo de integracion numerica, especialmente si se aplica a integrales de una dimension a

pesar de que para el caso de dos o mas dimensiones (integral multiple) tambien se utiliza.

Hay varias razones para llevar a cabo la integracion numerica. La principal puede ser

la imposibilidad de realizar la integracion de forma analıtica. Es decir, integrales que

requerirıan de un gran conocimiento y manejo de matematica avanzada pueden ser

resueltas de una manera mas sencilla mediante metodos numericos. Incluso existen fun-

ciones integrables pero cuya primitiva no puede ser calculada, siendo la integracion

numerica de vital importancia. La solucion analıtica de una integral nos arrojarıa una

solucion exacta, mientras que la solucion numerica nos darıa una solucion aproximada.

El error de la aproximacion, que depende del metodo que se utilice y de que tan fino

sea, puede llegar a ser tan pequeno que es posible obtener un resultado identico a la

solucion analıtica en las primeras cifras decimales.

Page 27: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 27

Los metodos de integracion numerica pueden ser descritos generalmente como combi-

nacion de evaluaciones del integrando para obtener una aproximacion a la integral. Una

parte importante del analisis de cualquier metodo de integracion numerica es estudiar el

comportamiento del error de aproximacion como una funcion del numero de evaluaciones

del integrando. Un metodo que produce un pequeno error para un pequeno numero de

evaluaciones es normalmente considerado superior. Reduciendo el numero de evalua-

ciones del integrando se reduce el numero de operaciones aritmeticas involucradas, y

por tanto se reduce el error de redondeo total. Tambien, cada evaluacion cuesta tiempo,

y el integrando puede ser arbitrariamente complicado.

Este Capitulo trata sobre como encontrar los valores de Integracion, mediante la imple-

mentacion de Interfaces Graficas de Usuario (GUI) en Matlab. Los metodos numericos

de Integracion Numerica suelen ser metodos iterativos, que se espera, que converja a la

solucion analitica. Utilizaremos el metodo del Trapecio, de Simpson 1/3, Simpson 3/8,

Boole, Asi como la Integracion Doble y Triple.

No abordaremos la teorıa de cada metodo, dado que esta se encuentra en el Capitulo

IV: Integracion Numerica del Seminario de Matematica Pura FUNDAMENTOS DE

ECUACIONES NO LINEALES, INTERPOLACION, DIFERENCIACION

E INTEGRACION NUMERICA PARA EL CALCULO CIENTIFICO, aqui

comparemos los resultados con la implementacion de GUI’s.

Page 28: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 28

2.1. Comparacion de Metodos Iteractivos

En esta seccion analizaremos la solucion de dos problemas de Integracion :

2.1.1. Analizando una funcion trascendental

En esta seccion analizaremos la solucion de una funcion trascendenta la cual inte-

graremos en el intervalo [0,5; 2].

Problema. Sea

f(x) =100

x2∗ sen(10

x) evaluada entre [0,5; 2]

Solucion. Al tratarse de una funcion trascendental hacemos uso de los metodos del

Trapecio, de Simpson 1/3, Simpson 3/8 y Boole.

Page 29: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 29

Solucion 1. Utilizando el Metodo del Trapecio dividiendo el intervalo en 20 partes.

Page 30: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 30

Solucion 2. Utilizando el Metodo del Trapecio dividiendo el intervalo en 200 partes.

Page 31: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 31

Solucion 3. Utilizando el Metodo de Simpson 1/3 dividiendo el intervalo en 20 partes.

Page 32: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 32

Solucion 4. Utilizando el Metodo de Simpson 1/3 dividiendo el intervalo en 200 partes.

Page 33: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 33

Solucion 5. Utilizando el Metodo de Simpson 3/8 dividiendo el intervalo en 20 partes.

Page 34: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 34

Solucion 6. Utilizando el Metodo de Simpson 3/8 dividiendo el intervalo en 200 partes.

Page 35: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 35

Solucion 7. Utilizando el Metodo de Boole dividiendo el intervalo en 20 partes.

Page 36: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 36

Solucion 8. Utilizando el Metodo de Boole dividiendo el intervalo en 200 partes.

2.1.2. Analizando una funcion Polinomica

En esta seccion analizaremos la solucion de una funcion polinomica la cual integraremos

en el intervalo [0,5; 2].

Problema. Sea

f(x) = 6000− 1000 · (1 + x) · ((1 + x)5 − 1)

x

Solucion. Al tratarse de una funcion trascendental hacemos uso de los metodos del

Trapecio, de Simpson 1/3, Simpson 3/8 y Boole.

Page 37: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 37

Solucion 9. Utilizando el Metodo del Trapecio dividiendo el intervalo en 20 partes.

Page 38: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 38

Solucion 10. Utilizando el Metodo del Trapecio dividiendo el intervalo en 200 partes.

Page 39: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 39

Solucion 11. Utilizando el Metodo de Simpson 1/3 dividiendo el intervalo en 20 partes.

Page 40: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 40

Solucion 12. Utilizando el Metodo de Simpson 1/3 dividiendo el intervalo en 200 partes.

Page 41: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 41

Solucion 13. Utilizando el Metodo de Simpson 3/8 dividiendo el intervalo en 20 partes.

Page 42: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 42

Solucion 14. Utilizando el Metodo de Simpson 3/8 dividiendo el intervalo en 200 partes.

Page 43: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

2. Integracion Numerica 43

Solucion 15. Utilizando el Metodo de Boole dividiendo el intervalo en 1 parte.

Page 44: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

Capıtulo 3

CODIGO FUENTE DE LOS GUI’S

3.1. Metodo del Trapecio

Listing 3.1: Boton Graficar

f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )

g l oba l xx yy area n h x0 y0 f a b

f=get ( handles . edit1 , ' s t r i n g ' ) ;

a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;

b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;

n=str2double ( get ( handles . edit4 , ' s t r i n g ' ) ) ;

h=(b−a ) /n ;

x=a : h : b ;

xx=x ;

yy=eva l (f ) ;

area=(sum( yy )+sum( yy ( 2 : n ) ) ) ∗( h /2) ;

fa=yy (1) ; fb=yy ( n+1) ; %Limites l a t e r a l e s

axes ( handles . grafica )

u1=[a a ] ; v1=[0 fa ] ;

p l o t (u1 , v1 , ' co l o r ' , ' r ' ) ;

hold on

u2=[b b ] ; v2=[0 fb ] ;

p l o t (u2 , v2 , ' co l o r ' , ' r ' ) ;

x=a : 0 . 0 1 : b ;

y=eva l ( f ) ;

x0=x ; y0=y ;

yc=min( y ) ; yd=max(y ) ;

ax i s ( [ a−0.5 b+0.5 yc−1 yd+1])

p l o t (x , y , ' l i new idth ' , 2 . 5 , ' co l o r ' , ' r ' )

i f yc>=1

ax i s ( [ a−0.5 b+0.5 −1 yd+1])

Page 45: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 45

end

i f yd<=1

ax i s ( [ a−0.5 b+0.5 yc−1 1 ] )

end

z=0∗y ;

p l o t (x , z , ' co l o r ' , 'k ' ) ;

p l o t (a , 0 , ' ∗b ' ,b , 0 , ' ∗b ' ) ;

g r i d on

s e t ( handles . edit5 , ' s t r i n g ' , ' ' )

s e t ( handles . edit6 , ' s t r i n g ' , ' ' )

s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )

s e t ( handles . pushbutton1 , ' enable ' , ' o f f ' )

s e t ( handles . pushbutton2 , ' enable ' , 'on ' )

Listing 3.2: Boton Calcular

f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )

c l c

g l oba l xx yy area n h x0 y0 f a b intex

syms x

integral ( hObject , eventdata , handles )

listado= ' Areas Pa r c i a l e s ' ;

u=[xx (1) xx ( 1 : n+1) xx (n+1) xx (1) ] ;

v=[0 yy ( 1 : n+1) 0 0 ] ;

axes ( handles . grafica )

d3=f i l l (u , v , [ 0 . 4 0 . 75 0 . 7 5 ] ) ;

f o r j=1:n

ux=[xx (j ) xx (j ) ] ; vx=[0 yy (j ) ] ;

p l o t ( ux , vx , ' co l o r ' , ' r ' )

s_area=(yy ( j )+yy ( j+1) ) ∗( h /2) ;

listado=strvcat ( listado , num2str ( s_area , ' %20.10 f ' ) ) ;

s e t ( handles . listbox1 , 'Value ' , 1) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado )

end

ar=num2str ( area , ' %20.10 f ' ) ;

are=num2str ( intex , ' %20.10 f ' ) ;

e r r o r=num2str ( abs ( area−intex ) , ' %20.10 f ' ) ;

p l o t (x0 , y0 , ' l i new idth ' , 2 , ' co l o r ' , ' r ' ) ;

s e t ( handles . edit5 , ' s t r i n g ' , ar )

s e t ( handles . edit6 , ' s t r i n g ' , are )

s e t ( handles . e r r or , ' s t r i n g ' , e r r o r )

s e t ( handles . pushbutton1 , ' enable ' , 'on ' )

s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )

hold off

Page 46: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 46

Listing 3.3: Funcion Integral

f unc t i on integral ( hObject , eventdata , handles )

g l oba l intex

f=vectorize ( inline ( get ( handles . edit1 , ' s t r i n g ' ) ) ) ;

a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;

b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;

% Extremos de l i n t e r v a l o de i n t eg r a c i on

% In t e g r a l exacta ( r equ i e r e l a toolbox de s imbo l i co

syms x ;

intex=double ( int (f (x ) , 'x ' ,a , b ) ) ;

Page 47: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 47

3.2. Metodo de Simpson 1/3

Listing 3.4: Boton Graficar

f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )

c l c

g l oba l xx yy area h x0 y0 f a b n

f=get ( handles . edit1 , ' s t r i n g ' ) ;

a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;

b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;

n=str2double ( get ( handles . edit4 , ' s t r i n g ' ) ) ;

h=(b−a ) /(2∗ n ) ;

x=a : h : b ;

xx=x ;

yy=eva l (f ) ;

area=(sum( yy )+2∗sum( yy ( 2 : 2 : 2 ∗ n ) )+sum( yy ( 2 : 2∗ n ) ) ) ∗( h /3) ;

fa=yy (1) ; fb=yy (2∗ n+1) ;

%Limites l a t e r a l e s

axes ( handles . grafica )

u1=[a a ] ; v1=[0 fa ] ;

p l o t (u1 , v1 , ' co l o r ' , ' r ' ) ;

hold on

u2=[b b ] ; v2=[0 fb ] ;

p l o t (u2 , v2 , ' co l o r ' , ' r ' ) ;

x=a : 0 . 0 1 : b ;

y=eva l ( f ) ;

x0=x ; y0=y ;

yc=min( y ) ; yd=max(y ) ;

ax i s ( [ a−0.5 b+0.5 yc−1 yd+1])

p l o t (x , y , ' l i new idth ' , 2 , ' co l o r ' , ' r ' )

i f yc>=1

ax i s ( [ a−0.5 b+0.5 −1 yd+1])

end

i f yd<=1

ax i s ( [ a−0.5 b+0.5 yc−1 1 ] )

end

z=0∗y ;

p l o t (x , z , ' co l o r ' , 'k ' ) ;

p l o t (a , 0 , ' ∗b ' ,b , 0 , ' ∗b ' ) ;

g r i d on

s e t ( handles . edit5 , ' s t r i n g ' , ' ' )

s e t ( handles . edit6 , ' s t r i n g ' , ' ' )

s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )

s e t ( handles . pushbutton1 , ' enable ' , ' o f f ' )

s e t ( handles . pushbutton2 , ' enable ' , 'on ' )

Page 48: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 48

Listing 3.5: Boton Calcular

f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )

c l c

g l oba l xx yy area h x0 y0 intex f a b n

integral ( hObject , eventdata , handles )

listado= ' Areas Pa r c i a l e s ' ;

axes ( handles . grafica )

xv=xx (1) ; yv=0;

f o r k=1:n

px=[xx (2∗ k−1) xx (2∗ k ) xx (2∗ k+1) ] ;

py=[yy (2∗ k−1) yy (2∗ k ) yy (2∗ k+1) ] ;

p=p o l y f i t (px , py , 2 ) ;

hh=h /10 ;

x=xx (2∗ k−1) : hh : xx (2∗ k+1) ;

y=polyva l (p , x ) ;

xu=x ; yu=y ;

xv=[xv xu ] ;

yv=[yv yu ] ;

end

u=[xv xx (2∗ n+1) xx (1) ] ;

v=[yv 0 0 ] ;

d3=f i l l (u , v , [ 0 . 5 0 . 8 0 . 8 ] ) ;

%areas p a r c i a l e s

f o r j=1:n

ux=[xx (2∗ j+1) xx (2∗ j+1) ] ; vx=[0 yy (2∗ j+1) ] ;

p l o t ( ux , vx )

s_area=(yy (2∗ j−1)+4∗yy (2∗ j )+yy (2∗ j+1) ) ∗( h /3) ;

listado=strvcat ( listado , num2str ( s_area , ' %20.10 f ' ) ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado ) ;

end

ar=num2str ( area , ' %20.10 f ' ) ;

are=num2str ( intex , ' %20.10 f ' ) ;

e r r o r=num2str ( abs ( area−intex ) , ' %20.10 f ' ) ;

p l o t (x0 , y0 , ' l i new idth ' , 2 , ' co l o r ' , ' r ' ) ;

s e t ( handles . edit5 , ' s t r i n g ' , ar )

s e t ( handles . edit6 , ' s t r i n g ' , are )

s e t ( handles . e r r or , ' s t r i n g ' , e r r o r )

s e t ( handles . pushbutton1 , ' enable ' , 'on ' )

s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )

hold off

Page 49: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 49

3.3. Metodo de Simpson 3/8

Listing 3.6: Boton Graficar

f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )

c l c

g l oba l xx yy area n h x0 y0 f a b

f=get ( handles . edit1 , ' s t r i n g ' ) ;

a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;

b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;

n=str2double ( get ( handles . edit4 , ' s t r i n g ' ) ) ;

h=(b−a ) /(3∗ n ) ;

x=a : h : b ;

xx=x ;

yy=eva l (f ) ;

area1=sum( yy )+sum( yy ( 2 : 3∗ n ) ) ;

area2=sum( yy ( 2 : 3 : 3 ∗ n−1) )+sum( yy ( 3 : 3 : 3 ∗ n ) ) ;

area=(area1+area2 ) ∗((3∗ h ) /8) ;

fa=yy (1) ; fb=yy (3∗ n+1) ; %Limites l a t e r a l e s

axes ( handles . grafica )

u1=[a a ] ; v1=[0 fa ] ;

p l o t (u1 , v1 , ' co l o r ' , ' r ' ) ;

hold on

u2=[b b ] ; v2=[0 fb ] ;

p l o t (u2 , v2 , ' co l o r ' , ' r ' ) ;

x=a : 0 . 0 1 : b ;

y=eva l ( f ) ;

x0=x ; y0=y ;

yc=min( y ) ; yd=max(y ) ;

ax i s ( [ a−0.5 b+0.5 yc−1 yd+1])

p l o t (x , y , ' l i new idth ' , 2 , ' co l o r ' , ' r ' )

i f yc>=1

ax i s ( [ a−0.5 b+0.5 −1 yd+1])

end

i f yd<=1

ax i s ( [ a−0.5 b+0.5 yc−1 1 ] )

end

z=0∗y ;

p l o t (x , z , ' co l o r ' , 'k ' ) ;

p l o t (a , 0 , ' ∗b ' ,b , 0 , ' ∗b ' ) ;

g r i d on

s e t ( handles . edit5 , ' s t r i n g ' , ' ' )

s e t ( handles . edit6 , ' s t r i n g ' , ' ' )

s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )

s e t ( handles . pushbutton1 , ' enable ' , ' o f f ' )

s e t ( handles . pushbutton2 , ' enable ' , 'on ' )

Page 50: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 50

Page 51: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 51

Listing 3.7: Boton Calcular

f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )

c l c

g l oba l xx yy area h x0 y0 f a b n intex

integral ( hObject , eventdata , handles )

listado= ' Areas Pa r c i a l e s ' ;

axes ( handles . grafica )

xv=xx (1) ; yv=0;

f o r k=1:n

px=[xx (3∗ k−2) xx (3∗ k−1) xx (3∗ k ) xx (3∗ k+1) ] ;

py=[yy (3∗ k−2) yy (3∗ k−1) yy (3∗ k ) yy (3∗ k+1) ] ;

p=p o l y f i t (px , py , 3 ) ;

hh=h /10 ;

x=xx (3∗ k−2) : hh : xx (3∗ k+1) ;

y=polyva l (p , x ) ;

xu=x ; yu=y ;

xv=[xv xu ] ;

yv=[yv yu ] ;

end

u=[xv xx (3∗ n+1) xx (1) ] ;

v=[yv 0 0 ] ;

d3=f i l l (u , v , [ 0 . 5 0 . 8 0 . 8 ] ) ;

%areas p a r c i a l e s

f o r j=1:n

ux=[xx (3∗ j−2) xx (3∗ j−2) ] ; vx=[0 yy (3∗ j−2) ] ;

p l o t ( ux , vx , ' co l o r ' , ' r ' )

s_area=(yy (3∗ j−2)+3∗yy (3∗ j−1)+3∗yy (3∗ j )+yy (3∗ j+1) ) ∗(3∗ h /8) ;

listado=strvcat ( listado , num2str ( s_area , ' %20.10 f ' ) ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado ) ;

end

ar=num2str ( area , ' %20.10 f ' ) ;

are=num2str ( intex , ' %20.10 f ' ) ;

e r r o r=num2str ( abs ( area−intex ) , ' %20.10 f ' ) ;

p l o t (x0 , y0 , ' l i new idth ' , 2 , ' co l o r ' , ' r ' ) ;

s e t ( handles . edit5 , ' s t r i n g ' , ar )

s e t ( handles . edit6 , ' s t r i n g ' , are )

s e t ( handles . e r r or , ' s t r i n g ' , e r r o r )

s e t ( handles . pushbutton1 , ' enable ' , 'on ' )

s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )

hold off

Page 52: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 52

3.4. Metodo de Boole

Listing 3.8: Boton Graficar

f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )

c l c

g l oba l xx yy area n h x0 y0 f a b

f=get ( handles . edit1 , ' s t r i n g ' ) ;

a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;

b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;

n=str2double ( get ( handles . edit4 , ' s t r i n g ' ) ) ;

h=(b−a ) /(4∗ n ) ;

x=a : h : b ;

xx=x ;

yy=eva l (f ) ;

area1=14∗yy (1)+14∗yy (4∗ n+1)+64∗sum( yy ( 2 : 2 : 4 ∗ n ) ) ;

area2=24∗sum( yy ( 3 : 4 : 4 ∗ n−1) )+28∗sum( yy ( 5 : 4 : 4 ∗ n−3) ) ;

area=(area1+area2 ) ∗( h /45) ;

fa=yy (1) ; fb=yy (4∗ n+1) ; %Limites l a t e r a l e s

axes ( handles . grafica )

u1=[a a ] ; v1=[0 fa ] ;

p l o t (u1 , v1 , ' co l o r ' , ' r ' ) ;

hold on

u2=[b b ] ; v2=[0 fb ] ;

p l o t (u2 , v2 , ' co l o r ' , ' r ' ) ;

x=a : 0 . 0 1 : b ;

y=eva l ( f ) ;

x0=x ; y0=y ;

yc=min( y ) ; yd=max(y ) ;

ax i s ( [ a−0.5 b+0.5 yc−1 yd+1])

p l o t (x , y , ' l i new idth ' , 2 , ' co l o r ' , ' r ' )

i f yc>=1

ax i s ( [ a−0.5 b+0.5 −1 yd+1])

end

i f yd<=1

ax i s ( [ a−0.5 b+0.5 yc−1 1 ] )

end

z=0∗y ;

p l o t (x , z , ' co l o r ' , 'k ' ) ;

p l o t (a , 0 , ' ∗b ' ,b , 0 , ' ∗b ' ) ;

g r i d on

s e t ( handles . edit5 , ' s t r i n g ' , ' ' )

s e t ( handles . edit6 , ' s t r i n g ' , ' ' )

s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )

s e t ( handles . pushbutton1 , ' enable ' , ' o f f ' )

s e t ( handles . pushbutton2 , ' enable ' , 'on ' )

Page 53: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 53

Page 54: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

3. Codigo Fuente de los GUI’S 54

Listing 3.9: Boton Calcular

f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )

c l c

g l oba l xx yy area h x0 y0 intex f a b n

integral ( hObject , eventdata , handles )

listado= ' Areas Pa r c i a l e s ' ;

axes ( handles . grafica )

xv=xx (1) ; yv=0;

f o r k=1:n

px=[xx (4∗ k−3) xx (4∗ k−2) xx (4∗ k−1) xx (4∗ k ) xx (4∗ k+1) ] ;

py=[yy (4∗ k−3) yy (4∗ k−2) yy (4∗ k−1) yy (4∗ k ) yy (4∗ k+1) ] ;

p=p o l y f i t (px , py , 4 ) ;

hh=h /10 ;

x=xx (4∗ k−3) : hh : xx (4∗ k+1) ;

y=polyva l (p , x ) ;

xu=x ; yu=y ;

xv=[xv xu ] ;

yv=[yv yu ] ;

end

u=[xv xx (4∗ n+1) xx (1) ] ;

v=[yv 0 0 ] ;

d3=f i l l (u , v , [ 0 . 5 0 . 8 0 . 8 ] ) ;

%areas p a r c i a l e s

f o r j=1:n

ux=[xx (4∗ j−3) xx (4∗ j−3) ] ; vx=[0 yy (4∗ j−3) ] ;

p l o t ( ux , vx )

s_area=(14∗yy (4∗ j−3)+64∗yy (4∗ j−2)+24∗yy (4∗ j−1)+64∗yy (4∗ j )+14∗yy (4∗ j+1) ) ∗( h /45) ;

listado=strvcat ( listado , num2str ( s_area , ' %20.10 f ' ) ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado ) ;

end

ar=num2str ( area , ' %20.10 f ' ) ;

are=num2str ( intex , ' %20.10 f ' ) ;

e r r o r=num2str ( abs ( area−intex ) , ' %20.10 f ' ) ;

p l o t (x0 , y0 , ' l i new idth ' , 2 , ' co l o r ' , ' r ' ) ;

s e t ( handles . edit5 , ' s t r i n g ' , ar )

s e t ( handles . edit6 , ' s t r i n g ' , are )

s e t ( handles . e r r or , ' s t r i n g ' , e r r o r )

s e t ( handles . pushbutton1 , ' enable ' , 'on ' )

s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )

hold off

Page 55: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

BIBLIOGRAFIA

[1] Buhmann, M. D. (2004). Radial Basis Functions: Theory and Implementations.

Cambridge University Press. United Kingdom.

[2] Aleman M.; Alvarez L.; Sanchez J. Analisis Numerico[en lınea]. [consulta 2012].

[3] Burden R.L; Faires J.D . (2001). Numerical Abalysis. Cengage Learning Latin

America.

[4] Cobos J. Apuntes de Calculo Numerico[en lınea].

http://ma1.eii.us.es/Material/Cal_Num_itis_Apuntes.pdf [consulta

2012]

[5] Comer E.(2009) Metodos Numericos Instituto Tecnologico de Tijuana.

[6] Mathews J.; Fink K.(2000) Metodos Numericos con MATLAB. Prentice Hall,

Madrid.

[7] Mejıa C.(2002) Invitacion al Analisis Numerico. Universidad Nacional de Colom-

bia, Medellın.

[8] Mora W.F.(2010) Introduccion a los Metodos Numericos. Instituto Tecnologico de

Costa Rica.

[9] Muller H. (1996) Una Introduccion al Analisi Numerico. Universidad Mayor de

San Simon. Cochabamba, Bolivia.

[10] Nakamura, S. (1992). Metodos Numericos Aplicados con Software. Pearson Edu-

cacion.

Page 56: Métodos Numéricos para el Calculo Científico con Matlab - TOMO  3

BIBLIOGRAFIA 56

[11] A. Quarteroni, F. Saleri. (2006). Calculo Cientifico con MATLAB y Octave.

Springer-Verlag, Italia, Milano.

[12] Velasquez J.(2007) Analisis Numerico. Ediciones Uninorte.

[13] Won Y. Yang , Wenwu Cao , Tae-Sang Chung , John Morris(2005) Applied Nu-

merical Methods Using MATLAB. John Wiley Sons.

[14] V. Dominguez. L. Rapun Matlab en cinco lecciones de Numerico[en lınea].

http://www.unavarra.es/personal/victor dominguez/ [consulta 2012]

[15] Carrasco V.(2011) Metodos Numericos Aplicados a la Ingenierıa Problemas en

Polymath y Matlab. MACRO

[16] Morales M.(2010) Matlab R2010a Metodos Numericos con Visualizacion Grafica.

MACRO

[17] Amancio R., Orbegoso G., Munoz G., Villalta R. (2010) Matlab 2010 - Software

para ciencia e ingenierıa. MACRO

[18] Moler, C. (2004) Numerical computing with Matlab. SIAM

[19] Pineiro G. APUNTES DE MATLAB [en lınea].

http://www.uhu.es/candido.pineiro/docencia/apuntesmatlab.pdf [consul-

ta 2012]

[20] J. Cooper A Matlab Companior for Multivariable Calculus

[21] Chavil M. Sistema experto en Maple Para el analisis de Curvas y superficies en

R3

[22] Gonzales M., Sanchez R. Graficas de curvas y superficies usando Matlab