Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Métodos numéricos con Python, Ejercicios de Métodos Numéricos

Resolución de algunos ejercicios del libro de Chapra utilizando Python.

Tipo: Ejercicios

2019/2020

Subido el 20/07/2020

edsonj123
edsonj123 🇵🇪

4.6

(9)

1 documento

1 / 141

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
UNSCH - Métodos Numéricos
Steven C. Chapra y Raymond P. Canale
Resolución de métodos numéricos
para ingenieros
Versión 1.0 Junio 24, 2019
Revista digital
Matemática, Educación e Internet. (http://www.tec-digital.itcr.ac.cr/revistamatematica/).
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Métodos numéricos con Python y más Ejercicios en PDF de Métodos Numéricos solo en Docsity!

UNSCH - Métodos Numéricos

Steven C. Chapra y Raymond P. Canale

Resolución de métodos numéricos para ingenieros

Versión 1.0 – Junio 24, 2019

Revista digital Matemática, Educación e Internet. (http://www.tec-digital.itcr.ac.cr/revistamatematica/).

UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA FACULTAD DE INGENIERÍA DE MINAS GEOLOGÍA Y CIVIL

ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA CIVIL

RESOLUCIÓN DE MÉTODOS NUMÉRICOS PARA INGENIEROS AUTOR : STEVEN C. CHAPRA RAYMOND P. CANALE

RESOLUCIÓN DE MÉTODOS NUMÉRICOS PARA INGENIEROS AUTOR : STEVEN C. CHAPRA RAYMOND P. CANALE

TRABAJO GRUPALTRABAJO GRUPAL

ASIGNATURA

DOCENTE

ESTUDIANTES

CICLO ACADÉMICO

FECHA DE ENTREGA

AYACUCHO - PERÚ 2019

: MÉTODOS NUMÉRICOS IC-

: Ing. CASTRO PEREZ, Cristian

: 1. AYALA MEDINA, Edson Joel

: 2. BARRA SOLANO, Josué Isaías

: 3. BERROCAL SERNA, Jhon Alexis

: 4. FLORES DIAS, Max Limber

: 5. LOPEZ AUCCASI, Erich Von

: 6. MEDINA HUAMAN, Jairo Rosson

: 7. QUICAÑO BELLIDO, Johel

: 2019 - I

1 Ecuaciones no lineales

1.1 Método de Bisección

El método se basa en el teorema del valor intermedio, conocido como método de la bisección, busqueda binaria, partición de intervalos o de Bolzano. Es un tipo de búsqueda incremental en el que: el intervalo se divide siempre en la mitad. Si la función cambia de signo sobre un intervalo, se evalua el valor de la función en el punto medio. La posición de la raíz se determina en el punto medio del subintervalo dentro del cual ocurre un cambio de signo. el proceso se repite hasta obtener una mejor aproximación

Figura 1.1: Método de Bisección COTA DE ERROR Suponga que fC [ a , b ] y f ( a )∗ f ( b ) < 0, f es una función en el intervalo [ a , b ] y que presenta un cambio de signo. | PnP | ≤ b^ 2 − n^ a

1.1 Método de Bisección

i xi xu Ra í zapr ó x. % Er r or 0 5.00 10.00 3.353659 7. 1 5.00 7.50 3.353659 6. 2 6.25 6.875 2.801332 6. 3 6.25 6.5625 2.719341 6. Cuadro 1.1: Tabla del ejercicio 5.1 pág. 139 método por Biseccción

-4 -2 0 2 4 6 x

0

5

10

15

20

-0.5 x^2 +2.5 x+4.

Figura 1.2: Gráfica de la función resuelta por Bisección

estimado ≤a se encuentre debajo de ≤s = 10 %.

Solución La raíz encontrada con un tolerancia de 0,100000 es : 0,

i xi xu Ra í zapr ó x. % Er r or 0 0.00 1.00 0.5 0. 1 0.00 0.50 0.25 0. 2 0.25 0.50 0.375 0. Cuadro 1.2: Tabla del ejercicio 5.2 pág. 139 método por Biseccción

1.1 Método de Bisección

-6 -4 -2 0 2 4 6 x

0

500

1000

5 x^3 -5 x^2 +6 x-

Figura 1.3: Gráfica de la función resuelta por Bisección

Ejercicio 1.3 (Ejercicio N 5.3 pág - 139)

Determine las raíces reales de f ( x ) = − 25182 x − 90 x^2 + 44 x^3 ?8 x^4 + 0,7 x^5 Usando el método de bisección para localizar la raíz más grande con ≤s = 10 %. Utilice como valores iniciales xl = 0,5 y xu = 1,0. Solución

i xi xu Raíz apróx. %Error 0 0.50 1.00 0.75 0. 1 0.75 1.00 0.875 0. Cuadro 1.3: Tabla del ejercicio 5.3 pág. 139 método por Biseccción La raíz encontrada con un tolerancia de 0,100000 es 0,

1.2 Método de Newton Raphson

f ′( xi ) = (^) xf^ i ( xi^ ) x^ − i +^01 El punto xi + 1 es la intersección de la recta tangente con el eje x , que es más cercano a la raíz de f ( x ), valor que es usado para la próxima iteración. Reordenando la ecuación de determina la fórmula para el siguiente punto: xi + 1 = xi − (^) ff ′(( xxii^ ) ) El error se determina como la diferencia entre los valores sucesivos encontrados | xi + 1? xi |

Ejercicio 1.4 (Ejercicio 6.3 - pág. 167 )

Utilice los métodos de Newton- Raphson, para determinar una raíz de f ( x ) = − x^2 + 1,8 x + 2,5 con el uso de x 0 = 5. Haga el cálculo hasta que ≤a a sea menor que ≤s = 0,05 %. Asimismo, realice una comprobación del error de su respuesta final.

Código en Python

# Método de newthon raphson

import numpy as np

import matplotlib.pyplot as plt

from sympy import Symbol

from sympy import diff

from scipy.misc import derivative

from math import pi

def poli(x):

y = -x*2 + 1.8x + 2.5 # Agregar la función

return (y)

def deri(x):

d = -2*x + 1.8 # Agregar la derivada de la función

return (d)

print("---------------------------------------------------------------")

print(" | Método de Newton Rapshon | ")

print("---------------------------------------------------------------")

x = float(input("Introduce el valor de inicio: "))

erroru = float(input("Introduce la tolerancia: "))

raiz = [x]

i = 0

error = 1

print("---------------------------------------------------------------")

2.2 Método de Newton Raphson

print("{:^5}{:^14}{:^12}{:^12}{:^13}{:^14}".format("i","xi","f(xi)",

"f’(xi)","Raíz apróx.","%Error"))

print("---------------------------------------------------------------")

while abs(error) > erroru:

x1 = x - (poli(x)/deri(x))

raiz.append(x1)

i = i+

error = abs((raiz[i]-raiz[i-1])/raiz[i])*

print(f"| {i} | {x:10.6f} | {poli(x):10.6f} | {deri(x):10.6f} |

{x1:10.6f} | {error:10.6f} |")

x = x

print("---------------------------------------------------------------")

print(f" La raíz es: {x1:.6f} ")

print("---------------------------------------------------------------")

N Para los siguientes ejercicos por el método de Newton Raphson usaremos el mismo código, solo cambiaremos la función y la derivada. Solución i xi f(xi) f’(xi) Raíz apróx. %Error 1 5.000000 -13.500000 -8.200000 3.353659 49. 2 3.353659 -2.710440 -4.907317 2.801332 19. 3 2.801332 -0.305064 -3.802665 2.721108 2. 4 2.721108 -0.006436 -3.642217 2.719341 0. 5 2.719341 -0.000003 -3.638683 2.719341 0. Cuadro 1.4: Tabla de resultados del ejercicio 6.3 - pág. 167 por Newton Raphson La raíz con un error de 0.000032 % es: 2.

Ejercicio 1.5 (Ejercicio 6.4 - pág. 167 )

Determine las raíces reales de f ( x ) = − 1 + 5,5 x − 4 x^2 + 0,5 x^3 : en forma gráfica, con el método de Newton-Raphson dentro de ≤s = 0,01 %. Solución

N En el gráfico observamos que se acerca a 0 por lo cual tomamos este valor para poder iniciar las iteraciones.

1.2 Método de Newton Raphson

i xi f(xi) f’(xi) Raíz apróx. %Error 1 0.000000 -1.000000 5.500000 0. 2 0.181818 -0.129226 4.095041 0.213375 14. 3 0.213375 -0.003696 3.861294 0.214332 0. 4 0.214332 -0.000003 3.854250 0.214333 0. 5 0.214333 -0.000000 3.854244 0.214333 0. Cuadro 1.5: Tabla de resultados del ejercicio 6.4 - pág. 167 por Newton Raphson

Estudie y use métodos gráficos y analíticos para explicar cualquier peculiaridad en sus resultados.

−   

−

−

−



Figura 1.8: en la gráfica se observa que las raíces son 3.

Solución Para la primera iteración comenzaremos con 4.52 y presentaremos los resultados en la siguiente tabla. La raíz con un error de 0.

1.2 Método de Newton Raphson

  • 1 ECUACIONES NO LINEALES PÁGINA
    • 1.1 Método de Bisección
    • 1.2 Método de Newton Raphson
    • 1.3 Método de la Secante
    • 1.4 Secante modificado
  • 2 SISTEMAS DE ECUACIONES NO LINEALES PÁGINA
    • 2.1 Método de Punto Fijo
    • 2.2 Método de Newton Raphson
    • 2.3 Método de Broyden
  • 3 MÉTODOS DIRECTOS PARA SISTEMAS DE ECUACIONES LINEALES PÁGINA
    • 3.1 Método de Gauss General
    • 3.2 Método de Gauss Jordan
  • 4 MÉTODOS ITERATIVOS PARA SISTEMAS DE ECUACIONES LINEALES PÁGINA
    • 4.1 Gauss Seidel
    • 4.2 Jacobbi
    • 4.3 Problemas
  • 5 INTERPOLACIÓN PÁGINA
    • 5.1 Diferencias finitas
    • 5.2 Diferencias Divididas - (Polinomio de Newton)
    • 5.3 Polinomio de interpolación
    • 5.4 Interpolación de lagrange
    • 5.5 Trazadores Cúbicos
    • 5.6 Ejercicios
  • 6 INTEGRACIÓN NUMÉRICA PÁGINA
    • 6.1 Fórmulas de integración de Newton-Cotes - Regla de trapecio 77 • Reglas de Simpson
    • 6.2 Integración de ecuaciones - legendre Integración de Romberg 91 • Cuadratura de Gauss 94 • Cuadratura de Gauss con polinomios de
  • 7 ECUACIONES DIFERENCIALES ORDINARIAS PÁGINA
    • 7.1 EDO con Taylor
    • 7.2 Runge-Kutta 2do Orden dy/dx
    • 7.3 Runge-Kutta 4to Orden dy/dx
    • 7.4 Runge Kutta d2y/dx2
  • 8 ECUACIONES DIFERENCIALES PARCIALES PÁGINA
    • 8.1 EDP Parabólicas
    • 8.2 EDP Parabólicas método explícito
    • 8.3 EDP Parabólicas método implícito
    • 8.4 EDP Elípticas
    • 8.5 EDP elípticas método iterativo
    • 8.6 EDP Elípticas método implícito
    • 8.7 EDP hiperbólicas
      • Bibliografía
      • 1 4.520000 -11.688896 -0.014400 -807.208889 100. i xi f(xi) f’(xi) Raíz apróx. %Error
      • 2 -807.208889 -265593867.754186 983842.456563 -537.253200 50.
      • 3 -537.253200 -78694170.753678 437265.027567 -357.284152 50.
      • 4 -357.284152 -23316586.069076 194341.721476 -237.306898 50.
      • 5 -237.306898 -6908481.704991 86375.801219 -157.325218 50.
      • 6 -157.325218 -2046867.068002 38390.938190 -104.008806 51.
      • 7 -104.008806 -606419.264442 17064.318195 -68.471538 51.
      • 8 -68.471538 -179640.315889 7585.799490 -44.790406 52.
      • 9 -44.790406 -53200.887998 3373.093953 -29.018273 54.
    • 10 -29.018273 -15746.406408 1500.736393 -18.525819 56.
    • 11 -18.525819 -4654.801931 668.515527 -11.562927 60.
    • 12 -11.562927 -1372.390159 298.555318 -6.966156 65.
    • 13 -6.966156 -402.447707 134.020255 -3.963269 75.
    • 14 -3.963269 -116.754525 60.767408 -2.041935 94.
    • 15 -2.041935 -33.165549 28.089723 -0.861234 137.
    • 16 -0.861234 -9.023084 13.502460 -0.192979 346.
    • 17 -0.192979 -2.213944 7.099696 0.118857 262.
    • 18 0.118857 -0.401954 4.570334 0.206806 42.
    • 19 0.206806 -0.029221 3.909707 0.214280 3.
    • 20 0.214280 -0.000206 3.854637 0.214333 0.
    • 21 0.214333 -0.000000 3.854244 0.214333 0. - Cuadro 1.6: Resultados del ejercicio 6.5 - pág. 167 para el valor inicial de 4.
  • La raíz con un error de 0.000069 % es: 6. Para la segunda iteración comenzaremos con 4.54 y presentaremos los resultados en la siguiente tabla.

1.3 Método de la Secante

Figura 1.9: Método de la secante

Ejercicio 1.7 (Ejercicio 6.6 - pág. 167 )

Determine la raíz real más pequeña de f ( x ) = − 12 − 21 x + 18 x^2 − 2,4 x^3 :

  1. en forma gráfica
  2. con el empleo del método de la secante para un valor de ≤s que corresponda a tres cifras significativas.

Código en Python

# Método de la secante

import numpy as np

import matplotlib.pyplot as plt

from sympy import Symbol

from sympy import diff

from scipy.misc import derivative

from math import sin

def poli(x):

y = -12 - 21x + 18x2 - 2.4x*3 # Aquí ingresar la función a resolver.

return (y)

# Aquí poner los intervalos de la función a graficar

x = np.linspace(-2, 7, 101)

1.3 Método de la Secante

plt.plot(x, poli(x))

plt.grid()

plt.show()

print("---------------------------------------------------------------")

print(" | Método de la secante | ")

print("---------------------------------------------------------------")

x1 = float(input(’Introduce el valor de inicio x1: ’))

x0 = float(input(’Introduce el valor de inicio x0: ’))

erroru = float(input(’Introduce la tolerancia: ’))

raiz = [x1]

#raiz.insert(0,0)

i=

error = 1

print(" ")

print("---------------------------------------------------------------")

print("{:^5}{:^12}{:^12}{:^10}{:^16}{:^15}{:^15}".format("i","xi-1","xi",

"f(xi-1)","f(xi)","Raíz apróx.","%Error"))

print("---------------------------------------------------------------")

while abs(error) > erroru:

i = i+

x2 = x1 - (poli(x1) * (x1 - x0)) / (poli(x1) - poli(x0))

raiz.append(x2)

error = abs((raiz[i] - raiz[i - 1]) / raiz[i])*

print(f"|{i:^3}| {x0:^10.6f} | {x1:^10.6f} | {poli(x0):.6f} |

{poli(x1):.6f} "

f"| {x2:10.06f} | {error:10.06f} |")

x0 = x

x1 = x

print("---------------------------------------------------------------")

print(f" | La raíz es: {x2:.6f} | ")

print(" --------------------------------------")

N Para resolver los ejercicios consecutivos a este, por el método de la secante, usaremos el mismo código, solo cambiaremos la función a resolver.

1.3 Método de la Secante

Solución

00 0 0  0  0 





0

0

0

Figura 1.11: Se observa que la primera raíz positiva se encuentra entre 1.5 y 2

i xi − 1 xi ) f ( xi − 1 ) f ( xi ) Raíz apróx. %Error 1 1.000000 3.000000 -0.574676 -1.697952 -0.023214 13023. 2 3.000000 -0.023214 -1.697952 -0.483363 -1.226347 98. 3 -0.023214 -1.226347 -0.483363 -2.744750 0.233951 624. 4 -1.226347 0.233951 -2.744750 -0.274717 0.396366 40. Cuadro 1.9: Primeras 4 iteraciones para los valores iniciales de xi − 1 = 1,0 y xi = 3,

i xi − 1 xi ) f ( xi − 1 ) f ( xi ) Raíz apróx. %Error 1 1.500000 2.500000 -0.996635 0.166396 2.356929 6. 2 2.500000 2.356929 0.166396 0.669842 2.547287 7. 3 2.356929 2.547287 0.669842 -0.082828 2.526339 0. 4 2.547287 2.526339 -0.082828 0.031471 2.532107 0. Cuadro 1.10: Primeras 4 iteraciones para los valores iniciales de xi − 1 = 1,5 y xi = 2,

N En las dos primeras tablas se observa que las primeras 4 iteraciones no son suficientes para alcanzar la solución, que en la gráfico se observa, sin embargo cuando acortamos el intervalo llegamos a una raíz más próxima a la del gráfico.

1.4 Secante modificado

i xi − 1 xi ) f ( xi − 1 ) f ( xi ) Raíz apróx. %Error 1 1.500000 2.250000 -0.996635 0.753821 1.927018 16. 2 2.250000 1.927018 0.753821 -0.061769 1.951479 1. 3 1.927018 1.951479 -0.061769 0.024147 1.944604 0. 4 1.951479 1.944604 0.024147 -0.000014 1.944608 0. Cuadro 1.11: Primeras 4 iteraciones para los valores iniciales de xi − 1 = 1,5 y xi = 2,

La raíz con un error de 0.000204 % es: 1.

1.4 Secante modificado

Ejercicio 1.9 (Ejercicio 6.8 pág. 167 ) Determine la raíz real de x 3,5^ = 80, con el método de la secante modificado dentro de ≤s = 0,1 %, con el uso de una elección inicial de x 0 = 3,5 y d = 0,01.

Código en Python

# Método de la secante modificado

import numpy as np

import matplotlib.pyplot as plt

from sympy import Symbol

from sympy import diff

from scipy.misc import derivative

def poli(x):

y = x**(3.5) - 80 # Aquí ingresar la función a resolver.

return (y)

# Aquí poner los intervalos de la función a graficar

x = np.linspace(2, 4.5, 101)

plt.plot(x, poli(x))

plt.grid()

plt.show()

print("---------------------------------------------------------------")

print(" | Método de la secante Modificada | ")

print("---------------------------------------------------------------")

delta = float(input(’Introduce el valor de inicio delta: ’))