{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Домашнее задание 1 (Python)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 1: основы работы с Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1\n", "Напишите программу, которая последовательно запрашивает с клавиатуры три целых числа (после ввода каждого числа пользователь нажимает *Enter* — иными словами, каждое число вводится на отдельной строке) и выводит их произведение.\n", "\n", "**Пример.**\n", "\n", "**Входные данные:**\n", "\n", " 1\n", " 2\n", " 3\n", "\n", "**Выходные данные:**\n", "\n", " 6" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ " 2\n", " 3\n", " 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", " 6\n" ] } ], "source": [ "string1 = input()\n", "string2 = input()\n", "string3 = input()\n", "\n", "print('\\n', int(string1) * int(string2) * int(string3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "\n", "Напишите программу, которая последовательно запрашивает с клавиатуры два положительных числа (целых или с плавающей точкой) и выводит на экран их [среднее геометрическое](https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5_%D0%B3%D0%B5%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5). После ввода каждого числа пользователь нажимает *Enter*.\n", "\n", "**Примеры:**\n", "\n", "*Входные данные:*\n", "\n", " 3\n", " 12\n", "\n", "*Выходные данные:*\n", "\n", " 6.0\n", "\n", "*Входные данные:*\n", "\n", " 5\n", " 4 \n", "\n", "*Выходные данные:*\n", "\n", " 4.47213595499958" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ " 5\n", " 4\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "4.47213595499958\n" ] } ], "source": [ "import math\n", "a1 = input()\n", "a2 = input()\n", "\n", "g = math.sqrt(int(a1) * int(a2))\n", "print(g)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3\n", "\n", "Напишите функцию `my_expo(x)`, которая принимает на вход число `x` и возвращает значение экспоненты, возведенной в степень `x`. Функция не должна ничего печатать (выводить на экран).\n", "\n", "**Примеры работы функции:**\n", "\n", "*Применение:*\n", "\n", " my_expo(2)\n", " \n", "*Результат:* \n", "\n", " 7.38905609893065\n", " \n", "*Применение:*\n", "\n", " my_expo(-1.5)\n", " \n", "*Результат:* \n", "\n", " 0.22313016014842982" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.22313016014842982\n" ] } ], "source": [ "def my_expo(x):\n", " return math.exp(x)\n", "print(my_expo(-1.5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4\n", "\n", "Напишите функцию `int_list(L)`, которая принимает на вход список строк `L`, представляющих собой целые числа, и возвращает новый список из целых чисел. Функция не должна ничего печатать (выводить на экран).\n", "\n", "**Пример работы функции:**\n", "\n", "*Применение:*\n", "\n", " int_list(['1', '3', '5', '18'])\n", " \n", "*Результат:* \n", "\n", " [1, 3, 5, 18]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 3, 5, 18]\n" ] } ], "source": [ "def int_list(L):\n", " return list(map(int, L))\n", "\n", "print(int_list(['1', '3', '5', '18']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 5\n", "\n", "Напишите функцию `ListMax(L1, L2)`, которая принимает на вход два списка чисел `L1`, `L2`и возвращает наибольшее число из этих двух списков. Склеивать списки (приписывать элементы одного списка в конец другого) нельзя, использовать функцию `max()` можно. Функция не должна ничего печатать (выводить на экран).\n", "\n", "**Примеры работы функции:**\n", "\n", "*Применение:*\n", "\n", " ListMax([6, 8, 9], [7, 10, 2, 5])\n", " \n", "*Результат:* \n", "\n", " 10\n", " \n", "*Применение:*\n", "\n", " ListMax([0, 8, 1, 7], [8, 3, 4, 0, 5, -1])\n", " \n", "*Результат:* \n", "\n", " 8 " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "18\n" ] } ], "source": [ "def ListMax(L1, L2):\n", " if max(L1) > max(L2):\n", " max_val = max(L1)\n", " else:\n", " max_val = max(L2)\n", " return max_val\n", "\n", "print(ListMax([0, 8, 1, 7], [18, 3, 4, 0, 5, -1]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 2: библиотека `pandas`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В этом задании вам предлагается поработать с [таблицей](https://hubofdata.ru/dataset/mos-buildings-years), содержащей информацию о годах постройки жилых домов в Москве (можно просто скопировать эту [ссылку](https://raw.githubusercontent.com/allatambov/R-programming-3/master/seminars/sem4-08-12/moscow-buildings.csv)). Данные достаточно новые, а для вдохновения [посмотрите](http://msk.mercator.ru/), что можно получить, используя эту информацию.\n", "\n", "Все операции предполагают использование функций `pandas`.\n", "\n", "1. Загрузите базу данных `moscow-buildings.csv` и сохраните ее как `df_build`. Посмотрите на нее.\n", "2. Удалите из базы данных строки, в которых значения года постройки не указаны («н.д.»), а после превратите столбец `house_age` в числовой.\n", "3. Посмотрите на минимальное и максимальное значения года постройки. Разумны ли они? Если нет, уберите из базы данных \"странные\" значения годы постройки.\n", "4. Выберите из базы данных строки, соответствующие Басманному району и сохраните их в базу `basm_data`.\n", "5. Сгруппируйте данные в базе по районам и посмотрите, сколько домов в базе относятся к каждому району.\n", "6. Найдите средний возраст дома (возраст - в годах, считаем от 2018) по каждому району. *Подсказка:* сначала добавьте переменную `house_age` («возраст дома»).\n", "7. Найдите улицу с самым старым домом." ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
full_addresscityaddressstreet_prefixstreet_namebuildinghouse_idarea_namehouse_year
area_id
2281084г Москва п Загорье д.10Москвап Загорье д.10пЗагорьед.107569627муниципальный округ Бирюлево Восточное1968
2281084г Москва п Загорье д.3Москвап Загорье д.3пЗагорьед.37569823муниципальный округ Бирюлево Восточное1964
2281084г Москва п Загорье д.4Москвап Загорье д.4пЗагорьед.47569840муниципальный округ Бирюлево Восточное1972
2281084г Москва п Загорье д.5Москвап Загорье д.5пЗагорьед.57569862муниципальный округ Бирюлево Восточное1963
2281084г Москва п Загорье д.8Москвап Загорье д.8пЗагорьед.87569888муниципальный округ Бирюлево Восточное1963
..............................
2281107г Москва ул Короленко д.7 кор.2Москваул Короленко д.7 кор.2улКороленкод.7 кор.27630827муниципальный округ Сокольники1926
2281107г Москва ул Маленковская д.3Москваул Маленковская д.3улМаленковскаяд.38280705муниципальный округ Сокольники1997
2281107г Москва ул Русаковская д.31Москваул Русаковская д.31улРусаковскаяд.317550765муниципальный округ Сокольники2009
2281107г Москва ул Сокольническая Слободка д.3Москваул Сокольническая Слободка д.3улСокольническая Слободкад.38285714муниципальный округ Сокольники2005
2281107г Москва ул Шумкина д.11 кор.аМоскваул Шумкина д.11 кор.аулШумкинад.11 кор.а8476228муниципальный округ Сокольники2007
\n", "

21987 rows × 9 columns

\n", "
" ], "text/plain": [ " full_address city \\\n", "area_id \n", "2281084 г Москва п Загорье д.10 Москва \n", "2281084 г Москва п Загорье д.3 Москва \n", "2281084 г Москва п Загорье д.4 Москва \n", "2281084 г Москва п Загорье д.5 Москва \n", "2281084 г Москва п Загорье д.8 Москва \n", "... ... ... \n", "2281107 г Москва ул Короленко д.7 кор.2 Москва \n", "2281107 г Москва ул Маленковская д.3 Москва \n", "2281107 г Москва ул Русаковская д.31 Москва \n", "2281107 г Москва ул Сокольническая Слободка д.3 Москва \n", "2281107 г Москва ул Шумкина д.11 кор.а Москва \n", "\n", " address street_prefix \\\n", "area_id \n", "2281084 п Загорье д.10 п \n", "2281084 п Загорье д.3 п \n", "2281084 п Загорье д.4 п \n", "2281084 п Загорье д.5 п \n", "2281084 п Загорье д.8 п \n", "... ... ... \n", "2281107 ул Короленко д.7 кор.2 ул \n", "2281107 ул Маленковская д.3 ул \n", "2281107 ул Русаковская д.31 ул \n", "2281107 ул Сокольническая Слободка д.3 ул \n", "2281107 ул Шумкина д.11 кор.а ул \n", "\n", " street_name building house_id \\\n", "area_id \n", "2281084 Загорье д.10 7569627 \n", "2281084 Загорье д.3 7569823 \n", "2281084 Загорье д.4 7569840 \n", "2281084 Загорье д.5 7569862 \n", "2281084 Загорье д.8 7569888 \n", "... ... ... ... \n", "2281107 Короленко д.7 кор.2 7630827 \n", "2281107 Маленковская д.3 8280705 \n", "2281107 Русаковская д.31 7550765 \n", "2281107 Сокольническая Слободка д.3 8285714 \n", "2281107 Шумкина д.11 кор.а 8476228 \n", "\n", " area_name house_year \n", "area_id \n", "2281084 муниципальный округ Бирюлево Восточное 1968 \n", "2281084 муниципальный округ Бирюлево Восточное 1964 \n", "2281084 муниципальный округ Бирюлево Восточное 1972 \n", "2281084 муниципальный округ Бирюлево Восточное 1963 \n", "2281084 муниципальный округ Бирюлево Восточное 1963 \n", "... ... ... \n", "2281107 муниципальный округ Сокольники 1926 \n", "2281107 муниципальный округ Сокольники 1997 \n", "2281107 муниципальный округ Сокольники 2009 \n", "2281107 муниципальный округ Сокольники 2005 \n", "2281107 муниципальный округ Сокольники 2007 \n", "\n", "[21987 rows x 9 columns]" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "df = pd.read_csv(\"df_build.csv\", index_col = 0)\n", "df1 = df.copy()\n", "\n", "# Удаление строк с \"н.д.\"\n", "df1 = df1[df1[\"house_year\"] != \"н.д.\"]\n", "\n", "# Преобразование столбца \"house_year\" в int\n", "newh = [int(i) for i in df1[\"house_year\"]]\n", "df1[\"house_year\"] = newh\n", "\n", "# Удаление странных значений\n", "df_cleaned = df1.drop(df1[(df1['house_year'] < 500) | (df1['house_year'] > 2024)].index)\n", "df_cleaned" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
full_addresscityaddressstreet_prefixstreet_namebuildinghouse_idarea_namehouse_year
area_id
2281050г Москва б-р Покровский д.14/5Москваб-р Покровский д.14/5б-рПокровскийд.14/58104093муниципальный округ Басманный1927
2281050г Москва б-р Покровский д.14/6 строение 1Москваб-р Покровский д.14/6 строение 1б-рПокровскийд.14/6 строение 18104094муниципальный округ Басманный1915
2281050г Москва б-р Покровский д.16/10 строение 1Москваб-р Покровский д.16/10 строение 1б-рПокровскийд.16/10 строение 18104099муниципальный округ Басманный1860
2281050г Москва б-р Покровский д.16_18 строение 4_4АМоскваб-р Покровский д.16_18 строение 4_4Аб-рПокровскийд.16_18 строение 4_4А8104106муниципальный округ Басманный1860
2281050г Москва б-р Покровский д.18/15 строение 2Москваб-р Покровский д.18/15 строение 2б-рПокровскийд.18/15 строение 28104113муниципальный округ Басманный1860
\n", "
" ], "text/plain": [ " full_address city \\\n", "area_id \n", "2281050 г Москва б-р Покровский д.14/5 Москва \n", "2281050 г Москва б-р Покровский д.14/6 строение 1 Москва \n", "2281050 г Москва б-р Покровский д.16/10 строение 1 Москва \n", "2281050 г Москва б-р Покровский д.16_18 строение 4_4А Москва \n", "2281050 г Москва б-р Покровский д.18/15 строение 2 Москва \n", "\n", " address street_prefix street_name \\\n", "area_id \n", "2281050 б-р Покровский д.14/5 б-р Покровский \n", "2281050 б-р Покровский д.14/6 строение 1 б-р Покровский \n", "2281050 б-р Покровский д.16/10 строение 1 б-р Покровский \n", "2281050 б-р Покровский д.16_18 строение 4_4А б-р Покровский \n", "2281050 б-р Покровский д.18/15 строение 2 б-р Покровский \n", "\n", " building house_id area_name \\\n", "area_id \n", "2281050 д.14/5 8104093 муниципальный округ Басманный \n", "2281050 д.14/6 строение 1 8104094 муниципальный округ Басманный \n", "2281050 д.16/10 строение 1 8104099 муниципальный округ Басманный \n", "2281050 д.16_18 строение 4_4А 8104106 муниципальный округ Басманный \n", "2281050 д.18/15 строение 2 8104113 муниципальный округ Басманный \n", "\n", " house_year \n", "area_id \n", "2281050 1927 \n", "2281050 1915 \n", "2281050 1860 \n", "2281050 1860 \n", "2281050 1860 " ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Выбор строк, где 'area_name' содержит 'Басманный район'\n", "basm_data = df1[df1['area_name'].str.contains('Басманный', na=False)]\n", "# Сохранение в новый CSV файл\n", "basm_data.to_csv('basm_data.csv', index=False)\n", "basm_data.head()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area_namehouse_count
0муниципальный округ Алексеевский212
1муниципальный округ Алтуфьевский114
2муниципальный округ Арбат134
3муниципальный округ Аэропорт186
4муниципальный округ Бабушкинский251
\n", "
" ], "text/plain": [ " area_name house_count\n", "0 муниципальный округ Алексеевский 212\n", "1 муниципальный округ Алтуфьевский 114\n", "2 муниципальный округ Арбат 134\n", "3 муниципальный округ Аэропорт 186\n", "4 муниципальный округ Бабушкинский 251" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Группировка по столбцу 'area_name' и подсчёт количества домов\n", "house_counts = df_cleaned.groupby('area_name').size().reset_index(name='house_count')\n", "house_counts.head()" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area_nameaverage_house_age
0муниципальный округ Алексеевский55.155660
1муниципальный округ Алтуфьевский46.280702
2муниципальный округ Арбат87.462687
3муниципальный округ Аэропорт55.102151
4муниципальный округ Бабушкинский50.123506
\n", "
" ], "text/plain": [ " area_name average_house_age\n", "0 муниципальный округ Алексеевский 55.155660\n", "1 муниципальный округ Алтуфьевский 46.280702\n", "2 муниципальный округ Арбат 87.462687\n", "3 муниципальный округ Аэропорт 55.102151\n", "4 муниципальный округ Бабушкинский 50.123506" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Добавление переменной house_age (2018 - house_year)\n", "df_cleaned['house_age'] = 2018 - df_cleaned['house_year']\n", "\n", "# Группировка по районам и вычисление среднего возраста домов\n", "average_age_by_area = df_cleaned.groupby('area_name')['house_age'].mean().reset_index(name='average_house_age')\n", "\n", "# Просмотр первых строк результата\n", "average_age_by_area.head()" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Год постройки: 1060\n", "Улица с самым старым домом: ['Парковая 3-я ']\n" ] } ], "source": [ "# Минимальный год постройки\n", "oldest_year = df_cleaned['house_year'].min()\n", "\n", "# Все строки, где год постройки совпадает с минимальным\n", "oldest_house_info = df_cleaned[df_cleaned['house_year'] == oldest_year]\n", "\n", "# Уникальные улицы с самыми старыми домами\n", "oldest_streets = oldest_house_info['street_name'].unique()\n", "\n", "print(f\"Год постройки: {oldest_year}\")\n", "print(f\"Улица с самым старым домом: {oldest_streets}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 3: библиотека `numpy`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Напишите программу, которая запрашивает у пользователя размерность квадратной матрицы (двумерного массива, в котором число строк и столбцов совпадают) и создает единичную матрицу `E` (массив) соответствующей размерности. Использовать готовую функцию `np.eye()` нельзя, воспользуйтесь циклами и условиями.\n", "\n", "**Пример:**\n", "\n", "*Ввод:*\n", "\n", " Введите размерность матрицы: 4\n", "\n", "*Вывод:*\n", "\n", " array([[1., 0., 0., 0.],\n", " [0., 1., 0., 0.],\n", " [0., 0., 1., 0.],\n", " [0., 0., 0., 1.]])\n", "\n", "\n", "1. Выведите на экран число измерений (dimensions) полученного массива `E`.\n", "\n", "2. Выведите на экран общее число элементов в массиве `E`.\n", "\n", "3. Измените форму массива `E`, используя функцию `reshape()` любым корректным способом (то есть форма нового массива может быть любой в рамках того, что позволяет сделать число элементов массива)." ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Введите размерность матрицы: 3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Единичная матрица:\n", "[1.0, 0.0, 0.0]\n", "[0.0, 1.0, 0.0]\n", "[0.0, 0.0, 1.0]\n", "Число измерений массива E: 3\n", "Общее число элементов в массиве E: 9\n", "Массив после reshape:\n", "[1. 0. 0. 0. 1. 0. 0. 0. 1.]\n" ] } ], "source": [ "n = int(input(\"Введите размерность матрицы: \"))\n", "\n", "# Единичная матрица размерности n x n\n", "E = [[1.0 if i == j else 0.0 for j in range(n)] for i in range(n)]\n", "\n", "print(\"Единичная матрица:\")\n", "for row in E:\n", " print(row)\n", "\n", "# Число измерений массива E\n", "print(f\"Число измерений массива E: {len(E)}\")\n", "\n", "# Общее число элементов в массиве E\n", "total_elements = n * n\n", "print(f\"Общее число элементов в массиве E: {total_elements}\")\n", "\n", "# reshape\n", "import numpy as np\n", "\n", "E_np = np.array(E)\n", "reshaped_E = E_np.reshape(total_elements) # Преобразуем в одномерный массив для примера\n", "print(\"Массив после reshape:\")\n", "print(reshaped_E)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "\n", "В блоке, посвященном теории вероятностей мы познакомимся с понятием математического ожидания – средним ожидаемым значением случайной величины. Для дискретной случайной величины $X$ (множество ее значений не бесконечно) математическое ожидание считается так:\n", "\n", "$$E(X) = x_1 \\cdot p_1 + x_2 \\cdot p_2 + \\dots + x_k \\cdot p_k,$$\n", "\n", "то есть как сумма произведений значений величины на соответствующие им вероятности.\n", "\n", "Случайная величина $X$ принимает три значения: $-5$, $2$, $4$. Известно, что значение $-5$ случайная величина принимает с вероятностью $0.5$, значение $2$ – с вероятностью $0.2$ и значение $4$ – с вероятностью $0.3$. Посчитайте математическое ожидание $E(X)$, предварительно создав массив значений $X$ и массив вероятностей $p$." ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Математическое ожидание E(X): -0.9000000000000001\n" ] } ], "source": [ "# Задаем массив значений X и массив соответствующих вероятностей p\n", "X = np.array([-5, 2, 4])\n", "p = np.array([0.5, 0.2, 0.3])\n", "\n", "# Вычисляем математическое ожидание\n", "E_X = np.sum(X * p)\n", "\n", "# Вывод результата\n", "print(f\"Математическое ожидание E(X): {E_X}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 4: графика в `matplotlib`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Постройте графики следующих функций (графики должны отображаться в самом ipynb-файле):\n", "\n", "* $f(x)=2x - 1$ на участке $-10" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# Диапазоны x для функций\n", "x1 = np.linspace(-10, 10, 400)\n", "x2 = np.linspace(0.1, 5, 400)\n", "\n", "# Функции\n", "y1 = 2 * x1 - 1\n", "y2 = np.log(3 * x2)\n", "\n", "# Построение первого графика\n", "plt.figure(figsize=(10, 5))\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.plot(x1, y1, 'r--', label='f(x)=2x-1')\n", "plt.title(\"График функции f(x)=2x-1\")\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.grid(True)\n", "plt.legend()\n", "\n", "# Построение второго графика\n", "plt.subplot(1, 2, 2)\n", "plt.plot(x2, y2, 'b-.', label='f(x)=log(3x)')\n", "plt.title(\"График функции f(x)=log(3x)\")\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.grid(True)\n", "plt.legend()\n", "\n", "# Отображение графиков\n", "plt.tight_layout()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.4" } }, "nbformat": 4, "nbformat_minor": 4 }