Добавил:
koba004
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
import numpy as np
import matplotlib.pyplot as plt
# Параметры
num_realizations = 400 # Количество реализаций k
n_values = 200 # Длина каждой реализации n
mean = 4 # Среднее значение u
std_dev = 8 # Стандартное отклонение o
# Генерация матрицы E(n) для каждой реализации
ensemble = np.random.normal(mean, std_dev, (num_realizations, n_values))
# Усреднение по ансамблю и времени для каждой строки и столбца
mean_ensemble = np.mean(ensemble, axis=0)
mean_realization = np.mean(ensemble, axis=1)
# Построение графиков для шума
plt.figure('Белый шум', figsize=(10, 6))
# Выводим график шума
plt.subplot(1,2,1)
plt.imshow(ensemble, cmap='gray')
plt.colorbar()
plt.title("Картина матрицы белого шума")
plt.xlabel("k (номер реализации)")
plt.ylabel("n (номер шага)")
# График среднего по ансамблю
plt.subplot(1,2,2)
plt.plot(mean_ensemble, label="Среднее по ансамблю", color='blue', linewidth=1, alpha = 0.8)
# График среднего по реализации
plt.plot(mean_realization, label="Среднее по реализации", color='red', linewidth=1, alpha = 0.8)
# Настройки графика
plt.title("Среднее по реализации и ансамблю")
plt.xlabel("n (номер шага)")
plt.ylabel("Значение u")
plt.grid(True)
plt.tight_layout()
plt.legend()
# Строим диаграммы рассеяния
# Пары значений n для построения диаграмм рассеяния
pairs = np.random.randint(0, n_values, [3,2], dtype=int)
# Создаем подграфики (subplots)
fig, axs = plt.subplots(1, 3, figsize=(16, 5))
# Построение диаграмм рассеяния для каждой пары (ni, nj)
for idx, (ni, nj) in enumerate(pairs):
# Данные для осей диаграммы рассеяния
x = ensemble[:, ni] # значения E(ni)
y = ensemble[:, nj] # значения E(nj)
# Построение диаграммы рассеяния
axs[idx].scatter(x, y, alpha=0.6)
# Расчет выборочной корреляции
correlation = np.corrcoef(x, y)[0, 1]
# Добавление заголовка с корреляцией
axs[idx].set_title(f'E(n_{ni+1}) vs E(n_{nj+1})\nКорреляция r = {correlation:.2f}')
# Настройки осей
axs[idx].set_xlabel(f'E(n_{ni+1})')
axs[idx].set_ylabel(f'E(n_{nj+1})')
axs[idx].grid(True)
# Настройка плотного расположения графиков
plt.tight_layout(pad=1.5)
# Показать графики
plt.show()
import matplotlib.pyplot as plt
# Параметры
num_realizations = 400 # Количество реализаций k
n_values = 200 # Длина каждой реализации n
mean = 4 # Среднее значение u
std_dev = 8 # Стандартное отклонение o
# Генерация матрицы E(n) для каждой реализации
ensemble = np.random.normal(mean, std_dev, (num_realizations, n_values))
# Усреднение по ансамблю и времени для каждой строки и столбца
mean_ensemble = np.mean(ensemble, axis=0)
mean_realization = np.mean(ensemble, axis=1)
# Построение графиков для шума
plt.figure('Белый шум', figsize=(10, 6))
# Выводим график шума
plt.subplot(1,2,1)
plt.imshow(ensemble, cmap='gray')
plt.colorbar()
plt.title("Картина матрицы белого шума")
plt.xlabel("k (номер реализации)")
plt.ylabel("n (номер шага)")
# График среднего по ансамблю
plt.subplot(1,2,2)
plt.plot(mean_ensemble, label="Среднее по ансамблю", color='blue', linewidth=1, alpha = 0.8)
# График среднего по реализации
plt.plot(mean_realization, label="Среднее по реализации", color='red', linewidth=1, alpha = 0.8)
# Настройки графика
plt.title("Среднее по реализации и ансамблю")
plt.xlabel("n (номер шага)")
plt.ylabel("Значение u")
plt.grid(True)
plt.tight_layout()
plt.legend()
# Строим диаграммы рассеяния
# Пары значений n для построения диаграмм рассеяния
pairs = np.random.randint(0, n_values, [3,2], dtype=int)
# Создаем подграфики (subplots)
fig, axs = plt.subplots(1, 3, figsize=(16, 5))
# Построение диаграмм рассеяния для каждой пары (ni, nj)
for idx, (ni, nj) in enumerate(pairs):
# Данные для осей диаграммы рассеяния
x = ensemble[:, ni] # значения E(ni)
y = ensemble[:, nj] # значения E(nj)
# Построение диаграммы рассеяния
axs[idx].scatter(x, y, alpha=0.6)
# Расчет выборочной корреляции
correlation = np.corrcoef(x, y)[0, 1]
# Добавление заголовка с корреляцией
axs[idx].set_title(f'E(n_{ni+1}) vs E(n_{nj+1})\nКорреляция r = {correlation:.2f}')
# Настройки осей
axs[idx].set_xlabel(f'E(n_{ni+1})')
axs[idx].set_ylabel(f'E(n_{nj+1})')
axs[idx].grid(True)
# Настройка плотного расположения графиков
plt.tight_layout(pad=1.5)
# Показать графики
plt.show()
