1. Какое назначение имеют демонстрационные примеры в системе помощи?
- функция 1: аргументы - ряд отсчетов некоторого сигнала и целочисленный параметр N; функция должна рассчитать и возвратить оценки средних значений М1 и М2 и дисперсий С1 и С2 по первым N отсчетам сигнала и по оставшейся его части;
2. Создайте объект-список с числовыми четными целыми значениями от -10 до +26. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
- функция 2: аргумент - имя текстового файла с отсчетами сигнала Х; функция должна прочитать данные из указанного файла, передать их в функцию 1, отобразить результаты расчета и по возвращенным данным рассчитать и вернуть 2 статистики
3. Напишите инструкцию, позволяющую определить число элементов в созданном списке. Напишите инструкции, заменяющие первое значение в списке на -1000, а последнее - на +1000. Отобразите получившийся объект.
t=|M1-M2| /((C1*N+С2*(NN-N))/(NN-2))0.5
4. Напишите инструкцию, вставляющую в список на 4-ю позицию от начала число 123. Удлините список за счет его повторения ещё два раза. Отобразите получившийся объект. Подсчитайте число элементов в получившемся списке.
F=max(C1,C2)/min(C1,C2)
2) Создайте еще один модуль М2, в котором должны выполняться операции:
- запрашивается и вводится имя текстового файла, в котором содержатся данные для расчета; проверяется наличие файла и при отсутствии - повторение запроса;
- вызывается функция 2 и затем отображается в числовом виде введенный из файла сигнал и рассчитанные статистики;
- при t>2 выдается сообщение: "Сигнал сильно меняется", а в ином случае: "Сигнал заметно не меняется"; при F>4 выдается сообщение: "Разброс сигнала сильно меняется", а в ином случае: "Разброс сигнала заметно не меняется"; эти же сообщения должны быть записаны в текстовый файл Res101.txt.
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика введенный из файла числовой ряд.
4) Для проверки запишите в текстовый файл числовой ряд со значениями приращений заболеваемости COVID-19 в России в январе 2022 г.:
4. Преобразуйте список в кортеж. Создайте два кортежа, содержащих, соответственно первую и вторую половину элементов из исходного кортежа. Отобразите созданные объекты.
## Решение
Модуль М1
```py
import math
def calculate_statistics(signal_data, N):
if len(signal_data) <N:
raise ValueError("N не может быть больше длины сигнала")
first_part = signal_data[:N]
second_part = signal_data[N:]
M1 = sum(first_part) / len(first_part)
M2 = sum(second_part) / len(second_part)
C1 = sum((x - M1) ** 2 for x in first_part) / len(first_part)
C2 = sum((x - M2) ** 2 for x in second_part) / len(second_part)
return M1, M2, C1, C2
def analyze_signal_file(filename):
try:
with open(filename, 'r', encoding='utf-8') as file:
content = file.read().strip()
signal_data = []
for item in content.replace(',', ' ').split():
try:
signal_data.append(float(item))
except ValueError:
continue
if not signal_data:
raise ValueError("Файл не содержит числовых данных")