From ba79bc02e91af668f795cb87d185d2d2f78e3e2c Mon Sep 17 00:00:00 2001 From: BushmanovAS Date: Fri, 24 Oct 2025 12:37:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA4/figure1.png | Bin 0 -> 26210 bytes TEMA4/figure2.png | Bin 0 -> 15503 bytes TEMA4/figure3.png | Bin 0 -> 12808 bytes TEMA4/figure4.png | Bin 0 -> 8904 bytes TEMA4/task.md | 46 ++ TEMA4/Отчет по теме 4.md | 656 ++++++++++++++++++++++++++++ 6 files changed, 702 insertions(+) create mode 100644 TEMA4/figure1.png create mode 100644 TEMA4/figure2.png create mode 100644 TEMA4/figure3.png create mode 100644 TEMA4/figure4.png create mode 100644 TEMA4/task.md create mode 100644 TEMA4/Отчет по теме 4.md diff --git a/TEMA4/figure1.png b/TEMA4/figure1.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e0673b0dbafba3998c3b8fd53bb8f8210c1938 GIT binary patch literal 26210 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 literal 0 HcmV?d00001 diff --git a/TEMA4/figure3.png b/TEMA4/figure3.png new file mode 100644 index 0000000000000000000000000000000000000000..884895caa151d4356703fb74ca7aedf1dabc5aca GIT binary patch literal 12808 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

KRGJL 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 literal 0 HcmV?d00001 diff --git a/TEMA4/task.md b/TEMA4/task.md new file mode 100644 index 0000000..39b9e21 --- /dev/null +++ b/TEMA4/task.md @@ -0,0 +1,46 @@ +Бушманов Артём Сергеевич А-01-23 + +## Задание +**Общее контрольное задание** + +Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия: + +·      Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления. + +·      Создайте объект класса **struct****_****time** с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами. + +·      Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели. + +·      Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3. + +·      Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита. + +·      Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров. +## Выполнение +```Python +>>>import math +>>>import cmath +>>>import random +>>>divmod((round(cmath.phase(0.2 + 0.8j), 2) * 20), 3) +(8.0, 2.6000000000000014) +>>>msc_t = time.localtime() +>>>msc_t +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=24, tm_hour=12, tm_min=30, tm_sec=42, tm_wday=4, tm_yday=297, tm_isdst=0) +>>>nows = str(msc_t.tm_hour) + " " + str(msc_t.tm_min) +>>>nows +'12 30' +>>>liist = ["понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"] +>>>random.sample(liist, 3) +['четверг', 'понедельник', 'вторник'] +>>>random.choice(range(14, 33, 3)) +29 +>>>N = round(random.gauss(15,4)) +>>>N +9 +>>>spis = list('qawsedrftgyhujikol') +>>>spis = list('qawsedrftgyhujikolp') +???random.sample(spis, N) +['d', 'u', 'h', 's', 'e', 'y', 'o', 'r', 'w'] +>>>(time.mktime(time.localtime()) - time.mktime(msc_t)) / 60 +1.1666666666666667 +``` \ No newline at end of file diff --git a/TEMA4/Отчет по теме 4.md b/TEMA4/Отчет по теме 4.md new file mode 100644 index 0000000..210c739 --- /dev/null +++ b/TEMA4/Отчет по теме 4.md @@ -0,0 +1,656 @@ +# Бушманов Артём Сергеевич А-01-23 +## 1. Запуск интерактивной оболочки IDLE + +## 2. Стандартные функции + +### 2.1. Функция round – округление числа с заданной точностью +```python +>>>round(123.456,1) +123.5 +>>>type(round(123.456,1)) + +>>>round(123.456,0) +123.0 +>>>type(round(123.456,0)) + +>>>round(123.456) +123 +>>>type(round(123.456)) + +``` +Если ndigits не указан — возвращает округлённое целое число. +Если ndigits указан (даже 0) — возвращает число с плавающей точкой. +Использует банковское округление: если число посередине между двумя возможными, выбирается ближайшее чётное. + +### 2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1. + +```python +>>>gg = range(76, 123, 9) +>>>list(gg) +[76, 85, 94, 103, 112, 121] +>>>range(23) +range(0, 23) +>>>type(range(23)) + +>>>list(range(0,26)) +[0, 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] +``` +Объект range(26) будет содержать последовательность целых чисел, начиная с 0 и до 25 (так как 26 не включается). Чтобы это увидить, необходимо применить list(). range — это легковесный объект, который генерирует числа на лету, а не хранит их все в памяти, поэтому преобразование в list нужно только для просмотра. Границы диапазона: от 0 и до 23, проход с шагом 1 по умолчанию. + +### 2.3. Функция zip - создание итерируемого объекта из кортежей +Объединяет несколько последовательностей в кортежи поэлементно. +Идёт до самой короткой последовательности. +Возвращает итератор класса zip, а не список. Для вывода: list(zip(...)). +Используется для параллельной обработки нескольких списков. +```python +>>>qq = ["Bushmanov", "Podolskiy", "Terehov", "Butko"] +>>>ff = zip(gg, qq) +>>>ff + +>>>tuple(ff) +((76, 'Bushmanov'), (85, 'Podolskiy'), (94, 'Terehov'), (103, 'Butko')) +``` +Длина получившегося объекта соответствует длине меньшего объекта-параметров(длина 4 значения). +```python +>>>ff[1] +Traceback (most recent call last): + File "", line 1, in + ff[1] +TypeError: 'zip' object is not subscriptable +``` +К объекту ff нельзя обратиться по индексу из-за того что он не итерируемый, так же он является не изменяемым. + +### 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки. +Вычисляет строку как выражение Python и возвращает результат. +Можно использовать для динамических вычислений. +Опасна: при вводе непроверенного текста может выполняться произвольный код. + +```python +>>>fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156') +коэффициент усиления=55 +>>>fff +55.0 +>>>dan +119.0 +``` +### 2.5. Функция exec – чтение и выполнение объекта-аргумента функции. +```python +>>>exec(input('введите инструкции:')) +введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3) +>>>gg +221.456 +``` +- Исполняет строку как инструкцию Python.Отличие от eval: не возвращает значение, может создавать переменные и функции. +- Опасна при работе с вводом пользователя. + +### 2.6. Функции abs, pow, max, min, sum, divmod, len, map. +- Функция abs(возвращение модуля): +```python +>>>x = abs(-10) +>>>x +10 +``` +- Функция pow(возведение в степень) +```python +>>>pow(2, 10) +1024 +>>>pow(4,5,10) # 4**5 = 1024, затем 1024 % 10 = 4 +4 +``` +- Функции max и min(выбор максимального и минимального значения соответственно) +```python +>>>max(40, 50, 6) +50 +>>>min(-3, 57, 30) +-3 +``` +- Функция sum(суммирование элементов) +```python +>>>sum([1,2,3,4,5]) +15 +>>>sum([1,2,3,4,5], -5) +10 +``` +- Функция divmod(возвращение кортежа из целой части и остатка от деления) +```python +>>>divmod(36, 5) +(7, 1) +``` +- Функция len(длина списка) +```python +>>>len([1,2,3,4,5,6]) +6 +``` +- Функция map ( это встроенная функция Python, которая применяет заданную функцию к каждому элементу итерируемого объекта (списка, кортежа и т.д.) и возвращает итератор с результатами.) +```python +>>>a = [10, 20, 30] +>>>a +[10, 20, 30] +>>>b = [30, 20, 10] +>>>b +[30, 20, 10] +>>>result = list(map(lambda x, y: x + y, a, b)) +>>>result +[40, 40, 40] +``` + +## 3. Функции из стандартного модуля math – совокупность разнообразных математических функций. +```python +>>>import math +>>>dir(math) +['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp'] +help(math.factorial) +Help on built-in function factorial in module math: + +factorial(x, /) + Find x!. + + Raise a ValueError if x is negative or non-integral. + +>>>math.factorial(5) +120 +``` +Аналогичным образом изучим и попробуем применить некоторые другие функции из этого модуля: sin, acos, degrees, radians, exp, log, log10, sqrt, ceil, floor, pi. +- Функция sin - - тригонометрия в радианах. +```python +>>>help(math.sin) +Help on built-in function sin in module math: +sin(x, /) + Return the sine of x (measured in radians). +>>>math.sin(math.pi / 3) +0.8660254037844386 +``` +- Функция acos - обратные функции. +```python +>>>help(math.acos) +Help on built-in function acos in module math: +acos(x, /) + Return the arc cosine (measured in radians) of x. + + The result is between 0 and pi. +>>>math.acos(1) +0.0 +``` +- Функция degrees - перевод между градусами и радианами. +```python +>>>help(math.degrees) +Help on built-in function degrees in module math: +degrees(x, /) + Convert angle x from radians to degrees. +>>>math.degrees(math.pi / 2) +90.0 +``` +- Функция radians - перевод между градусами и радианами. +```python +>>>help(math.radians) +Help on built-in function radians in module math: + +radians(x, /) + Convert angle x from degrees to radians. +>>>math.radians(360) +6.283185307179586 +>>>math.radians(157) +2.7401669256310974 +``` +- Функция exp - e**x +```python +>>>help(math.exp) +Help on built-in function exp in module math: +exp(x, /) + Return e raised to the power of x. +>>>math.exp(3) +20.085536923187668 +>>>math.exp(5) +148.4131591025766 +``` +- Функция log - логарифм (натуральный или по базе). +```python +>>>help(math.log) +Help on built-in function log in module math: + +log(...) + log(x, [base=math.e]) + Return the logarithm of x to the given base. + + If the base not specified, returns the natural logarithm (base e) of x. +>>>math.log(10) +2.302585092994046 +>>>math.log(math.e) +1.0 +``` +- Функция log10 - десятичный логарифм. +```python +>>>help(math.log10) +Help on built-in function log10 in module math: + +log10(x, /) + Return the base 10 logarithm of x. +>>>math.log10(10) +1.0 +>>>math.log10(100) +2.0 +>>>math.log10(105) +>>>2.0211892990699383 +``` +- Функция sqrt - корень (ошибка при отрицательных). +```python +>>>help(math.sqrt) +Help on built-in function sqrt in module math: + +sqrt(x, /) + Return the square root of x. +>>>math.sqrt(16) +4.0 +>>>math.sqrt(25) +5.0 +``` +- Функция ceil(округление в большую сторону) +```python +help(math.ceil) +Help on built-in function ceil in module math: + +ceil(x, /) + Return the ceiling of x as an Integral. + + This is the smallest integer >= x. + +>>>math.ceil(4.56) +5 +>>>math.ceil(130.1) +131 +``` +- Функция floor(округление в меньшую сторону) +```python +>>>help(math.floor) +Help on built-in function floor in module math: + +floor(x, /) + Return the floor of x as an Integral. + + This is the largest integer <= x. + +>>>math.floor(99.999) +99 +``` +- Функция pi +```python +>>>math.pi +3.141592653589793 +``` + +## 4. Функции из модуля cmath – совокупность функций для работы с комплексными числами. +```python +>>>import cmath +>>>dir(cmath) +['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau'] +>>>cmath.sqrt(1.2-0.5j) # извлечения квадратного корня из комплексного числа (возвращает комплексный результат даже для отрицательных) +(1.118033988749895-0.22360679774997896j) +>>>cmath.phase(1-0.5j) # функция расчета фазы(аргумент (фаза) комплексного числа в радианах) +-0.4636476090008061 +``` +## 5. Стандартный модуль random – совокупность функций для выполнения операций с псевдослучайными числами и выборками. +```python +>>>import random +>>>dir(random) +['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_index', '_inst', '_isfinite', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate'] +>>>help(random.seed) +Help on method seed in module random: + +seed(a=None, version=2) method of random.Random instance + Initialize internal state from a seed. + + The only supported seed types are None, int, float, + str, bytes, and bytearray. + + None or no argument seeds from current time or from an operating + system specific randomness source if available. + + If *a* is an int, all bits are used. + + For version 2 (the default), all of the bits are used if *a* is a str, + bytes, or bytearray. For version 1 (provided for reproducing random + sequences from older versions of Python), the algorithm for str and + bytes generates a narrower range of seeds. + +>>>random.seed() +``` +Фиксирует исходное состояние генератора (повторяемость результатов). +random.seed(x) инициализирует внутреннее состояние генератора Mersenne Twister. Однаковый seed => одна и та же последовательность псевдослучайных значений при том же порядке вызовов. +- Функци random(равномерно распределенное случайное число от 0 до 1) +```python +>>>help(random.random) +Help on built-in function random: + +random() method of random.Random instance + random() -> x in the interval [0, 1). + +>>>random.random() +0.15224090837130377 +>>>random.random() +0.8451183120672832 +>>>random.random() +0.8392090272295469 +``` + +- Функция uniform (равномерно распределенное случайное число) +```python +>>>help(random.uniform) +Help on method uniform in module random: + +uniform(a, b) method of random.Random instance + Get a random number in the range [a, b) or [a, b] depending on rounding. + +>>>random.uniform(1, 5) +1.4822447721210175 +>>>random.uniform(1, 500) +11.101749613668387 +``` +равномерно от a до b. +- Функция gauss(нормально распределенное случайное число) +```python +>>>help(random.gauss) +Help on method gauss in module random: + +gauss(mu, sigma) method of random.Random instance + Gaussian distribution. + + mu is the mean, and sigma is the standard deviation. This is + slightly faster than the normalvariate() function. + + Not thread-safe without a lock around calls. + +>>>random.gauss(1, 5) +5.705708773458442 +>>>random.gauss(12, 57) +-14.33510203993609 +``` +нормально распределённое число. +- Функция randint(случайные целые числа) +```python +>>>help(random.randint) +Help on method randint in module random: + +randint(a, b) method of random.Random instance + Return random integer in range [a, b], including both end points. + +>>>random.randint(3, 19) +4 +>>>random.randint(3, 19) +5 +``` +целое от a до b включительно. +- Функция choice (случайный выбор из совокупности) +```python +>>>help(random.choice) +Help on method choice in module random: + +choice(seq) method of random.Random instance + Choose a random element from a non-empty sequence. + +>>>random.choice([True, "ababba", 35, 90.3, 3+5j]) +90.3 +>>>random.choice([True, "ababba", 35, 90.3, 3+5j]) +(3+5j) +``` + +- Функця shuffle (случайная перестановка элементов списка) +```python +>>>help(random.shuffle) +Help on method shuffle in module random: + +shuffle(x, random=None) method of random.Random instance + Shuffle list x in place, and return None. + + Optional argument random is a 0-argument function returning a + random float in [0.0, 1.0); if it is the default None, the + standard random.random will be used. + +>>>lst = [True, "ababba", 35, 90.3, 3+5j] +>>>random.shuffle(lst) +>>>lst +[35, 'ababba', 90.3, (3+5j), True] +``` +- Функция sample (случайный выбор подмножества элементов) +```python +>>>help(random.sample) +Help on method sample in module random: + +sample(population, k, *, counts=None) method of random.Random instance + Chooses k unique random elements from a population sequence or set. + + Returns a new list containing elements from the population while + leaving the original population unchanged. The resulting list is + in selection order so that all sub-slices will also be valid random + samples. This allows raffle winners (the sample) to be partitioned + into grand prize and second place winners (the subslices). + + Members of the population need not be hashable or unique. If the + population contains repeats, then each occurrence is a possible + selection in the sample. + + Repeated elements can be specified one at a time or with the optional + counts parameter. For example: + + sample(['red', 'blue'], counts=[4, 2], k=5) + + is equivalent to: + + sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) + + To choose a sample from a range of integers, use range() for the + population argument. This is especially fast and space efficient + for sampling from a large population: + + sample(range(10000000), 60) + +>>>random.sample(lst, 5) +['ababba', 90.3, True, (3+5j), 35] +>>>random.sample(lst, 1) +['ababba'] +``` +- Функция betavariate(случайное число с бета-распределением) +```python +>>>help(random.betavariate) +Help on method betavariate in module random: + +betavariate(alpha, beta) method of random.Random instance + Beta distribution. + + Conditions on the parameters are alpha > 0 and beta > 0. + Returned values range between 0 and 1. + +>>>random.betavariate(1, 2) +0.3174347054415454 +>>>random.betavariate(1, 2) +0.17833765040946833 +``` + +- Функция gammavariate(случайное число с гамма-распределением) +```python +>>>help(random.gammavariate) +Help on method gammavariate in module random: + +gammavariate(alpha, beta) method of random.Random instance + Gamma distribution. Not the gamma function! + + Conditions on the parameters are alpha > 0 and beta > 0. + + The probability distribution function is: + + x ** (alpha - 1) * math.exp(-x / beta) + pdf(x) = -------------------------------------- + math.gamma(alpha) * beta ** alpha + +>>>random.gammavariate(2, 5) +18.174658510394487 +>>>random.gammavariate(2, 5) +29.01757536081825 +``` + +- Создание списка с 4 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям и с любыми допустимыми значениями параметров этих распределений. +```python +>>>ls_r = [0] * 4 +>>>ls_r[0] = random.uniform(0, 5) +>>>ls_r[1] = random.gauss(0, 2) +>>>ls_r[2] = random.betavariate(1, 3) +>>>ls_r[3] = random.gammavariate(3, 2) +>>>ls_r +[2.1956405045678467, -2.238234699654799, 0.30508834143011926, 1.9912119529312582] +``` +## 6. Функции из модуля time – работа с календарем и со временем. +- UNIX время и текущее время +```python +>>>import time +>>>dir(time) +['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname'] +c1=time.time() +c1 +1759739386.6377628 +>>>c2=time.time()-c1 # временной интервал в секундах, со времени ввода предыдущей инструкции +>>>c2 +26.08662247657776 +>>>dat = time.gmtime() # Эта функция возвращает, так называемое, «Всемирное координированное время» (UTC) +>>>dat.tm_mon # получение номера месяца +10 +>>>dat +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=24, tm_hour=8, tm_min=57, tm_sec=30, tm_wday=0, tm_yday=279, tm_isdst=0) + +``` + +- Текущее время с учетом часового пояса +```python +>>>mestn = time.localtime() +>>>list(mestn) +[2025, 10, 24, 12, 18, 35, 0, 279, 0] +``` + +- Функция asctime (преобразование представления времени из кортежа в строку) +```python +>>>time.asctime(mestn) + +'Mon Oct 24 12:18:35 2025' +``` +- Функция ctime (преобразование времени в секундах, прошедшего с начала эпохи, в строку) +```python +>>>time.ctime() + +'Mon Oct 24 12:22:01 2025' +``` + +- Функция sleep (прерывание работы программы на заданное время) +```python +>>>time.sleep(5) +``` + +- Функция mktime (преобразование времени из типа кортежа или struct_time в число секунд с начала эпохи) +```python +>>>time.mktime(mestn) + +1759742315.0 +``` + +- Обратное преобразование из секунд в местное время +```python +>>>time.localtime(c1) + +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=6, tm_hour=11, tm_min=29, tm_sec=46, tm_wday=0, tm_yday=279, tm_isdst=0) +``` + + +## 7. Графические функции + +Импортируем модули mathplotlib и pylab для построения графика. + +-Создание и отображение графика x(t): + +```python +>>>import matplotlib +>>>import pylab + +>>>x=list(range(-3,55,4)) +>>>t=list(range(15)) +>>>pylab.plot(t,x) #Создание графика в оперативной памяти +[] +>>>pylab.title('Первый график') +Text(0.5, 1.0, 'Первый график') +>>>pylab.xlabel('время') +Text(0.5, 0, 'время') +>>>pylab.ylabel('сигнал') +Text(0, 0.5, 'сигнал') +>>>pylab.show() #Отображение графика на экране +``` +![График](figure0.png) + +- Рассмотрим способ построения нескольких графиков на одном рисунке. +```python +>>>X1 = [12, 6, 8, 10, 7] +>>>X2 = [5, 7, 9, 11, 13] +>>>pylab.plot(X1) +[] +>>>pylab.plot(X2) +[] +>>>pylab.show() +``` +![График](figure1.png) + + +- Теперь изучим возможность построения круговой диаграммы. +```python +>>>region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы +>>>naselen=[65,12,23,17] # Значения для диаграммы +>>>pylab.pie(naselen, labels=region) #Создание диаграммы в памяти +([, , , ], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')]) +>>>pylab.show() #Отображение диаграммы +``` +![График](figure2.png) + + +- Построение гистограммы +```python +>>>pylab.show() +>>>data = [1, 2, 2, 3, 3, 3, 4, 4, 5] +>>>pylab.hist(data) +(array([1., 0., 2., 0., 0., 3., 0., 2., 0., 1.]), array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ]), ) +>>>pylab.title('Простая гистограмма') +Text(0.5, 1.0, 'Простая гистограмма') +>>>pylab.xlabel('Значения') +Text(0.5, 0, 'Значения') +>>>pylab.ylabel('Частота') +Text(0, 0.5, 'Частота') +>>>pylab.show() +``` + +![График](figure3.png) + + +- Построение столбиковой диаграммы +```python +>>>fruits = ["apple", "date", "apricot", "raspberry", "watermelon"] +>>>values = [13, 16, 8, 25, 6] +>>>pylab.bar(fruits, values, color='green') + +>>>pylab.show() +``` + +![График](figure4.png) + + +Все графики, диаграммы и гистограммы сохранены в папку в формате "jpg". + +## 8. Статистический модуль statistics + +```python +>>>data = [10, 20, 30, 40, 50] +>>>statistics.mean(data) # Нахождение математического ожидания +30 +>>>statistics.median(data) # Нахождение медианы +30 +>>>statistics.stdev(data) # Нахождение среднеквадратичного отклонения +15.811388300841896 +>>>statistics.variance(data) # Нахождение дисперсии +250 +>>>statistics.mode(data) # Нахождение моды +10 +``` + +## 9. Завершение работы