Задание №3
Ответ:
b) Ряд Фурье
Задание №4
Код:
import numpy as np import matplotlib.pyplot as plt def plot_activation(v, alpha): # 1. Единичный скачок (пороговая функция) y1 = np.where(v <= 0, 0, 1) # 2. Линейный порог (гистерезис) y2 = np.zeros_like(v) for i in range(len(v)): if v[i] < -1: y2[i] = 0 elif v[i] > 1: y2[i] = 1 else: y2[i] = (v[i] + 1) / 2 # 3. Сигмоидная функция y3 = 1 / (1 + np.exp(-alpha * v)) # 4. Гиперболический тангенс y4 = np.tanh(v / alpha) # Визуализация plt.figure(figsize=(12, 10)) plt.subplot(2, 2, 1) plt.plot(v, y1, 'b-') plt.title('1. Единичный скачок') plt.xlabel('v') plt.ylabel('y(v)') plt.grid() plt.subplot(2, 2, 2) plt.plot(v, y2, 'r-') plt.title('2. Линейный порог') plt.xlabel('v') plt.ylabel('y(v)') plt.grid() plt.subplot(2, 2, 3) plt.plot(v, y3, 'g-') plt.title('3. Сигмоидная функция') plt.xlabel('v') plt.ylabel('y(v)') plt.grid() plt.subplot(2, 2, 4) plt.plot(v, y4, 'm-') plt.title('4. Гиперболический тангенс') plt.xlabel('v') plt.ylabel('y(v)') plt.grid() plt.tight_layout() plt.show() v = np.arange(-5, 5, 0.01) alpha = 1.0 plot_activation(v, alpha)
Вывод:
Рисунок 10. Визуализация функций активации, alpha = 1.0
Задание №5
Код:
import numpy as np import matplotlib.pyplot as plt import sympy as sp # Символьное вычисление производной v_sym = sp.Symbol('v') alpha_sym = sp.Symbol('alpha') # Сигмоидная функция y_sym = 1 / (1 + sp.exp(-alpha_sym * v_sym)) # Вычисление производной dy_sym = sp.diff(y_sym, v_sym) # Подстановка численных значений для построения графика dy_func = sp.lambdify((v_sym, alpha_sym), dy_sym, 'numpy') # Параметры для графика alpha_val = 1.0 v_val = np.linspace(-5, 5, 1000) # Вычисление значений производной dy_analytic = dy_func(v_val, alpha_val) # Численная производная y_val = 1 / (1 + np.exp(-alpha_val * v_val)) dy_numeric = np.gradient(y_val, v_val) # Визуализация plt.figure(figsize=(10, 6)) plt.plot(v_val, dy_analytic, 'r-', label='Теоретическая производная') plt.plot(v_val, dy_numeric, 'b--', label='Численная производная') plt.title(f'Производная сигмоидной функции (α = {alpha_val})') plt.xlabel('v') plt.ylabel('dy/dv') plt.legend() plt.grid() plt.show()
Вывод:
Рисунок 11. Визуализация теоретической и численной производных сигмоидной функции
