Python - Modelo_Matematico

 
Vista:
sin imagen de perfil

Modelo_Matematico

Publicado por Javier Rodriguez (3 intervenciones) el 22/09/2022 07:52:19
Hola, buenas noches, espero y se encuentren bien.

Vengo aquí para pedir un poco de su conocimiento, tengo un programa, el cual.

Me pide que haga, el uso de desarrollo en series de Fourier de una función f(x)

Como modelo matemático de una señal periódica y muestre sus respectivas gráficas.

Mi problema y duda, es, el porque la gráfica no se muestra como esta en la siguiente imagen. En la primer grafica debe estar fija como se muestra en la imagen, en la segunda debe cambiar, de acuerdo al deslizador. De igual manera adjunto el código que ya tengo.

En el deslizador que se encuentra en el mismo programa, debe funcionar de 0 a 100, y solo toma como referencia de 1 a 10.

Les pido de la manera mas amable posible, si por favor, pueden tomarse el tiempo de revisar el código, y ver que es lo que estoy haciendo mal.

De ante mano muchas gracias, tengan buena noche.

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
# Importar librerias
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
 
# Valores para x
xa = np.linspace(-np.pi, np.pi, 100)
xb = np.linspace(-np.pi3, np.pi3, 100)
 
# Valores iniciales para n
init_n = 10
 
# Generar los valores de la funcion por partes
def funcionPorPartes(x):
    # Lista de valores para y
    global y
    y = []
 
    # Para los valores en x
    for k in x:
        # Intervalos de la funcion
        if k > -np.pi and k < 0:
            y.append(0)
        elif k >= 0 and k < np.pi:
            y.append(np.sin(k))
        else:
            # Cerrar la figura
            y.append(0)
 
    # Devolver el vector de valores
    return y
# Generar la funcion de fourier
def funcionFourier(x, n):
    # Lista de valores para y
    y = []
 
    # Coeficiente a0
    a0 = (1/np.pi)
 
    # Para cada valor en x
    for t in x:
 
        # Sumatoria
        suma = 0
        b1= (1/2) * np.sin(t)
        # Para cada valor de n
        for k in range(2, n+1):
 
            suma = suma + (1/np.pi)(((-1)k+1 )/( 1 - k2)) np.cos(k*t)
 
        # Almacenar valor para y
        y.append(suma+a0+b1)
 
    # Devolver los valores de y
    return y
 
# Dividir la ventana grafica en sub-graficas (subplot)
# Referencias para cada grafica
fig, ax = plt.subplots(2)
 
# Funcion original de f(x)
ax[0].plot(xa, funcionPorPartes(xa), color='blue')
 
# Mostrar titulo
ax[0].set_title("Funcion f(x)")
 
# Referencia de la segunda grafica, serie de fourier
line, = ax[1].plot(xb, funcionFourier(xb, init_n), color='green')
[21:18]
# Mostrar titulo
ax[1].set_title("Serie de Fourier de f(x)")
ax[1].set_ylim(ymin=-1,ymax=3)
 
# Ajustar la grafica principal haciendo espacio para el slider
plt.subplots_adjust(left=0.1, right=0.9, top = 0.9, bottom=0.2, wspace=0.4, hspace=0.4)
 
# Color del slider
axcolor = 'lightgoldenrodyellow'
 
# Crear un slider horizontal para controlar n
axn = plt.axes([0.25, 0.05, 0.65, 0.03], facecolor=axcolor)
parciales_slider = Slider(
    ax=axn,
    label='Sumas parciales',
    valmin=1,
    valstep=1,
    valmax=100,
    valinit=init_n,
)
 
# Funcion a ser llamada cuando los valores del slider cambien
def update(val):
    line.set_ydata(funcionFourier(xb, parciales_slider.val))
    fig.canvas.draw_idle()
 
# Registrar la funcion update del slider
parciales_slider.on_changed(update)
 
# Mostrar la funcion
plt.show()
Screenshot-2022-09-14-174608
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Modelo_Matematico

Publicado por tincopasan (1082 intervenciones) el 22/09/2022 12:29:49
lo empecé a mirar y abandoné en :

1
suma = suma + (1/np.pi)(((-1)k+1 )/( 1 - k2)) np.cos(k*t)
¿qué es eso ?te fijaste cuantos y dónde hay paréntesis de apertuta y cierre, no hay forma de que funcione así.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Modelo_Matematico

Publicado por Ignacio (3 intervenciones) el 22/09/2022 17:50:52
Es que, esa parte era mi intento de pasar la fórmula de la imagen a código, pero tienes razón, voy a revisar esa parte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar