Código de Python - Didáctico.

Imágen de perfil

Didáctico.gráfica de visualizaciones


Python

Publicado el 28 de Agosto del 2023 por Hilario (123 códigos)
334 visualizaciones desde el 28 de Agosto del 2023
"""
***************************
ParaClases.py
*****************************
Hilario Iglesias Martínez
******************************
Ejemplo para clase didactica.
Descenso de gradiente para la función:
f(x)=(x**2/8) + (x**2 - 16)
**********************************************************
Inicialmente lo dejo configurado co estos parámetros:
# Parámetros que queremos aplicar para el descenso de gradiente.
---------------------------------------------------------------
learning_rate = 0.01
iterations = 10
start_x = 40
----------------------------------------
Las iteraciones ideales serías:1000.


*********************************
Realizado en
Plataforma Linux. Ubuntu 20.04.6 LTS
Editor Sublime Text.
Ejecutar en consola linux:
python3 ParaClases.py
**********************************
"""

Requerimientos

*********************************
Realizado en
Plataforma Linux. Ubuntu 20.04.6 LTS
Editor Sublime Text.
Ejecutar en consola linux:
python3 ParaClases.py
**********************************

V-0

Publicado el 28 de Agosto del 2023gráfica de visualizaciones de la versión: V-0
335 visualizaciones desde el 28 de Agosto del 2023
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

descarga
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
109
110
111
112
113
"""
***************************
ParaClases.py
*****************************
Hilario Iglesias Martínez
******************************
Ejemplo para clase didactica.
Descenso de gradiente para la función:
f(x)=(x**2/8) + (x**2 - 16)
**********************************************************
Inicialmente lo dejo configurado co estos parámetros:
# Parámetros que queremos aplicar para el descenso de gradiente.
---------------------------------------------------------------
learning_rate = 0.01
iterations = 10
start_x = 40
----------------------------------------
Las iteraciones ideales serías:1000.
*********************************
Realizado en
Plataforma Linux. Ubuntu 20.04.6 LTS
Editor Sublime Text.
Ejecutar en consola linux:
python3 ParaClases.py
**********************************
"""
#Importamos los modulos necesarios.
import numpy as np
import matplotlib.pyplot as plt
 
# Definimos la la función f(x), returna valores de eje y.
def f(x):
    return (x**2/8) + (x**2 - 16)
 
# Derivada de la función f(x)
def df(x):
    return (9*x/4)
 
# Parámetros que queremos aplicar para el descenso de gradiente.
learning_rate = 0.01
iterations = 10
start_x = 40
 
# Descenso de gradiente aplicando un bucle for.
x_values = [start_x]
for _ in range(iterations):
    gradient = df(x_values[-1])
    new_x = x_values[-1] - learning_rate * gradient
    x_values.append(new_x)
 
# Crear puntos para la gráfica para diseñar su exposición entre ejes.
x_vals = np.linspace(-40, 40, 100)
y_vals = f(x_vals)
 
# Encontrar el índice de x_values[-1] y el valor mínimo que etiqueta.
indice_minimo = np.argmin([f(x) for x in x_values])
valor_minimo = x_values[indice_minimo]
 
# Imprimir resultados
print("Índice del valor mínimo:", indice_minimo)
print("Valor mínimo de x:", valor_minimo)
print("Valor mínimo de y:", f(valor_minimo))
print("********************************************")
 
# Imprimir número de índice y valor correspondiente en x_values
for indice, valor in enumerate(x_values):
    print("Número de Índice:", indice, "- Valor x:", valor)
    print("Número de Índice:", indice, "- Valor y:", f(valor))
# Diseñamos la Gráfica
plt.figure(figsize=(14, 8))
plt.plot(x_vals, y_vals, label='f(x) = (x**2/8) + (x**2 - 16)')
plt.scatter(x_values, [f(x) for x in x_values], color='red', label='Descenso de Gradiente de la función:f(x)=(x**2/8) + (x**2 - 16)')
plt.scatter(start_x, f(start_x), color='green', label='Punto de inicio', marker='o')
plt.scatter(valor_minimo, f(valor_minimo), color='black', label='Mínimo punto final', marker='o')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Descenso de Gradiente de:f(x)=(x**2/8) + (x**2 - 16) ')
plt.grid(True)
plt.legend()
plt.show()
 
"""
SALIDA.
***********************************************
Índice del valor mínimo: 10
Valor mínimo de x: 31.858670777739903
Valor mínimo de y: 1125.8467666899708
********************************************
Número de Índice: 0 - Valor x: 40
Número de Índice: 0 - Valor y: 1784.0
Número de Índice: 1 - Valor x: 39.1
Número de Índice: 1 - Valor y: 1703.91125
Número de Índice: 2 - Valor x: 38.22025
Número de Índice: 2 - Valor y: 1627.3859488203125
Número de Índice: 3 - Valor x: 37.360294375
Número de Índice: 3 - Valor y: 1554.265545259989
Número de Índice: 4 - Valor x: 36.5196877515625
Número de Índice: 4 - Valor y: 1484.398542655577
Número de Índice: 5 - Valor x: 35.697994777152346
Número de Índice: 5 - Valor y: 1417.6401849982958
Número de Índice: 6 - Valor x: 34.89478989466642
Número de Índice: 6 - Valor y: 1353.8521570170276
Número de Índice: 7 - Valor x: 34.109657122036424
Número de Índice: 7 - Valor y: 1292.9022976057513
Número de Índice: 8 - Valor x: 33.3421898367906
Número de Índice: 8 - Valor y: 1234.6643260016554
Número de Índice: 9 - Valor x: 32.591990565462815
Número de Índice: 9 - Valor y: 1179.0175801466194
Número de Índice: 10 - Valor x: 31.858670777739903
Número de Índice: 10 - Valor y: 1125.8467666899708
"""



Comentarios sobre la versión: V-0 (0)


No hay comentarios
 

Comentar la versión: V-0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7423