<jupyter_start><jupyter_text><jupyter_code># Нейронные сети
# Лабораторная работа 1
# Программа диалогового задания гармонического сигнала и его визуализации
import numpy as np
import matplotlib.pyplot as plt

from plotly.offline import init_notebook_mode, iplot, plot_mpl
import plotly.graph_objs as go
from IPython.display import display, HTML
from scipy.optimize import minimize

init_notebook_mode(connected=True)
# Ввод частоты и амплитуды сигнала
f0  = float(input('Введите частоту сигнала в герцах: '))
A   = float(input('Введите амплитуду сигнала в условных единицах: '))
phi = float(input('Введите фазу сигнала, рад: '))
NT  = float(input('Введите количество периодов наблюдения, ед.: '))
mvis = float(input('Введите коэффициент уменьшения интервала дискретизации: '))
w   = f0*(2.*np.pi)    # Переход к круговой частоте (рад/сек)
T   = 1/f0       # Период исходного сигнала (сек)
dtn = np.pi/w       # Интервал дискретизации Найквиста (теорема Котельникова)
dtv = dtn/mvis   # Интервал дискретизации, пригодный для визуализации

Tnab = NT*T      # Интервал наблюдения (сек)
print(f'Интервал наблюдения = {Tnab} сек')
Nn = Tnab/dtn      # Количество точек в интервале наблюдения для дискретизации Найквиста
Nv = Tnab/dtv      # Количество точек в интервале наблюдения для интервала дискретизации, 
                  # пригодного для визуализации

print(f'Количество точек в интервале наблюдения для дискретизации Найквиста = {Nn}')
print(f'Количество точек в интервале наблюдения для интервала дискретизации, пригодного для визуализации, = {Nv}')

tn = dtn*np.arange(Nn) # Вектор времени (сек), дискретизированный
                   # в соответствии с критерием Найквиста
tv = dtv*np.arange(Nv) # и c интервалом дискретизации,
                   # пригодным для визуализации
y1n = A*np.cos(2*np.pi*f0*tn+phi)
y2n = A*np.sin(2*np.pi*f0*tn+phi)
                  # Вектора сигналов, дискретизированных
                  # в соответствии с критерием Найквиста
y1v = A*np.cos(2*np.pi*f0*tv+phi)
y2v = A*np.sin(2*np.pi*f0*tv+phi)
                  # Вектора сигналов, дискретизированных
                  # c интервалом дискретизации,
                  # пригодным для визуализации
data = [
    go.Scatter(
        x = tn,
        y = y1n,
        mode = 'markers+lines',
        marker = dict(color='red', symbol=135),
        name = 'Дискретизация по Найквисту'
    )
]
layout = go.Layout(
    title='Дискретизация по Найквисту',
    xaxis=dict(title='Time, sec'),
    yaxis=dict(title='Signal')
    )
fig = go.Figure(data=data, layout=layout)
iplot(fig)
data = [
    go.Scatter(
        x = tv,
        y = y1v,
        mode = 'markers+lines',
        marker = dict(color='blue', symbol=135),
        name = f'Дискретизация в {mvis} раз точнее'
    )
]
layout = go.Layout(
    title=f'Дискретизация в {mvis} раз точнее',
    xaxis=dict(title='Time, sec'),
    yaxis=dict(title='Signal')
    )
fig = go.Figure(data=data, layout=layout)
iplot(fig)
data = [
    go.Scatter(
        x = tn,
        y = y2n,
        mode = 'markers+lines',
        marker = dict(color='red', symbol=135)
    )
]
layout = go.Layout(
    xaxis=dict(title='Time, sec'),
    yaxis=dict(title='Signal')
    )
fig = go.Figure(data=data, layout=layout)
iplot(fig)
data = [
    go.Scatter(
        x = tv,
        y = y2v,
        mode = 'markers+lines',
        marker = dict(color='blue', symbol=135)
    )
]
layout = go.Layout(
    xaxis=dict(title='Time, sec'),
    yaxis=dict(title='Signal')
    )
fig = go.Figure(data=data, layout=layout)
iplot(fig)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11675554308167274, 'fraction_numerical': 0.009542520348021331, 'mean_word_length': 3.1781946072684644, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '406776', 'license': 'MIT', 'n_tokens_mistral': 1474, 'n_tokens_neox': 1581, 'n_words': 300, 'path': 'lab_one/Lab_1_1.ipynb', 'repo_name': 'Vankum100/colabs', 'size': '3563'}