-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMetodo_Grafico.py
108 lines (81 loc) · 2.92 KB
/
Metodo_Grafico.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Alexis Mendoza Valencia
# Estudiante Tecnológico de Monterrey, campus guadalajara
# Metodo grafico
"""
Nota: Para este método en especial, recomiendo utilizar
una pagina web llamada Cocalc para correr el metodo.
Al menos es la pagina que yo utilice, pues ya tiene
incluidas las librerias necesarias: numpy y mathplotlib.
La liga es: cocalc.com
"""
import numpy as np
import matplotlib.pyplot as plt
"""
Descripcion: El método consiste en graficar una funcion con
el fin de encontrar una aproximación al valor
deseado, generalmente cero.
Es impreciso porque utilizamos nuestra vista de
la grafica para ver el resultado. Sirve SOLO
para tener una aproximacion y nada mas.
Utilizaremos un ejemplo para describirlo.
Ejemplo: Función: 2x^2 - 5x + 3
Nos debe quedar una grafica aproximadamente asi:
Y
|
3.0| \
| \
2.0| \
| l\
1.0| l \ /
| l \ /
0.0|_____l___\_________/______ X
| l l --___-- l
-1.0| l l l l
| l l l l
0.25 1 1.2 1.5
nota: las "l" conectan los valores en X
con sus respectivas Y
Y viendo la gráfica podemos decir que los puntos
en X donde Y = 0 son X = 1 y X = 1.5.
Ahora vamos a ver el código
"""
# Primero definiremos nuestra funcion
def funcion_cuadratica(x):
return 2*x**2 - 5*x + 3
# Vamos con el metodo directamente
def metodo_grafico(funcion, valor_menor, valor_mayor):
"""
:param funcion: La funcion que deseamos graficar sin
parentesis. Solo su nombre.
:param valor_menor: Valor mas pequeño de X a graficar
:param valor_mayor: Valor mas grande de X a graficar.
:return: nothing
"""
# Nos vamos a auxiliar de numpy para crear un arreglo
# lleno de 100 valores de X entre el valor mas pequeño
# y el mas grande de nuestro intervalo.
valores_X = np.linspace(valor_menor, valor_mayor, 100)
# Si quieres ver como queda este arreglo, solo descomenta
# la siguiente linea
# print(valores_X)
# Creamos el arreglo de valores de Y a partir de los
# valores de X evaluados en la funcion.
valores_Y = [funcion(valores_X[i]) for i in range(len(valores_X))]
# Y mostramos la grafica
plt.plot(valores_X, valores_Y)
plt.grid()
plt.show()
# Ahora imprimimos el ejemplo
print("Ejemplo 1")
# El cero y el dos son valores completamente arbitrarios.
metodo_grafico(funcion_cuadratica, 0, 2)
"""
Ahora vamos por un segundo ejemplo, igual de sencillo.
Tenemos una funcion cubica:
x^3 - pi*X^2 + 20x + 50
"""
import math
def funcion_cubica(x):
return x**3 - math.pi*x**2 + 20*x + 50
print("Ejemplo 2")
metodo_grafico(funcion_cubica, -10, 10)