Разница между страницами «Науки о данных/Летний проект» и «Дифференциальные уравнения (ФКН)/Демонстрационный проект»

Материал из MathINFO
< Науки о данных(Различия между страницами)
Перейти к навигации Перейти к поиску
(Новая страница: «==Наука о данных/Летний проект== Проекты выполняются индивидуально. Проекты оцениваются...»)
 
 
Строка 1: Строка 1:
==Наука о данных/Летний проект==
+
== Общее описание ==
Проекты выполняются индивидуально. Проекты оцениваются по принципу peer review, в режиме двойного слепого оценивания. Каждый проект должен получить как минимум три оценки от других студентов, при этом в качестве итоговой оценки используется медиана. При выставлении оценок они должны быть обоснованы. Лектор имеет право пересмотреть оценку, выставленную в ходе peer review, при наличии явных ошибок оценивания (например, рецензент не заметил функцию, которая на самом деле была реализована). Если вы по какой-то причине не можете участвовать в процедуре рецензирования, сообщите об этом до момента сдачи работы. Для получения оценки за проект каждый студент обязан отрецензировать по крайней мере три (можно больше) другие работы.
 
  
При сдаче работа должна быть анонимизирована, то есть в ней не должно быть указано имя или другая информация, идентифицирующая автора. Просмотрите свою работу внимательно: ваше имя может случайно оказаться, например, среди системных предупреждений (в путях файлов), в ссылках на внешние ресурсы (если вы хотите использовать github-репозиторий, создайте новый аккаунт, не привязанный к вам), в API-ключах и т.д.
+
Вам необходимо подготовить интерактивную демонстрацию для какого-либо известного дифференциального уравнения или системы, задаваемой дифференциальными уравнениями. Она должна быть выполнена в виде веб-страницы, для просмотра которой не нужно устанавливать никаких дополнительных приложений (то есть пользоваться можно только HTML/JavaScript).
  
==Требования к проекту==
+
Вы можете использовать любые подходящие для этого библиотеки общего пользования (в т.ч. для решения дифференциальных уравнений), однако код, непосредственно анализирующий / решающий выбранную систему, должен быть написан вами самостоятельно.
Оценка вычисляется как сумма баллов, набранных по отдельным критериям согласно таблице ниже, и не может превосходить 12 баллов.
 
  
Для удобства оценивания рекомендуется сопроводить проект описанием того, какие технологии и как в нём используются. Это позволит избежать ситуации, когда рецензент не заметил какой-либо технологии и из-за этого поставил заниженную оценку.
+
На странице должно быть представлено описание системы, её физичесий / механический / биологический / etc. смысл, математические свойства решений (если известны) — всё, что делает эту систему интересной. Предполагается, что вы изучите литературу, посвященную выбранной системе, и сделаете на её основе научно-популярную статью с интерактивными иллюстрациями. Можно представлять себе энциклопедическую статью или главу из учебника, но использующую возможности современных технологий. Весь текст должен быть написан самостоятельно, но при этом опираться на качественные источники, которые должны быть явно указаны.
  
===О базах данных===
+
У читателя должна быть возможность задавать параметры системы (начальные условия, другие параметры) и видеть, как система от них зависит. Например, выбрать начальные условия и построить траекторию или анимацию, показывающую динамику системы; или выбрать дополнительные параметры и увидеть, как меняется фазовый портрет. По формату хочется что-то вроде статьи на http://distill.pub, только про дифференциальные уравнения.
Для работы с базой данных вы можете использовать SQLite и создать свою базу (например, с помощью <code>pandas.DataFrame.to_sql</code>), либо использовать публичные датасеты в [https://console.cloud.google.com/marketplace/browse?filter=solution-type:dataset Google BigQuery]. В последнем случае вам надо получить [https://cloud.google.com/bigquery/docs/authentication/service-account-file#bigquery_client_json_credentials-python Service Account Key File] и использовать его с помощью библиотеки <code>google-cloud-bigquery</code> (см. пример [https://cloud.google.com/bigquery/docs/reference/libraries здесь]). Использование BigQuery является бесплатным в рамках некоторой квоты (которой нам скорее всего хватит для учебного проекта).
 
  
{| class="wikitable"
+
На любом этапе работы вы можете советоваться с лектором по поводу проекта.
! Критерий
 
  
! Баллы
+
== Примеры систем ==
  
|-
+
* Двойной маятник (double pendulum).
| Базовая работа с R<br>
+
* Задача двух тел.
| 1 — Загрузка данных из csv, работа с векторами и датафреймами без использования tidyverse.<br>
+
* Задача трёх (или n, n>2) тел.
|-
+
* Модель Лотки Вольтерра и другие модели «хищник-жертва».
| Программирование в R<br>
+
* Модель ФитцХью Нагумо.
| 1 — Использованы циклы, проверка условий и функции.<br>
+
* Осциллятор Ван дер Поля.
|-
+
* Аттрактор Лоренца.
| Обработка данных с помощью tidyverse.<br>
+
* Модель Рамсея.
| 0 — не использовалась; 1 — использовалась примерно в объёме одной задачи домашней работы; 2 — использовалось что-то более сложное и/или объёмное.<br>
+
* Вы можете предложить другую модель, не представленную в списке, но лучше это заранее обсудить с лектором.
|-
 
| Визуализация с помощью ggplot2<br>
 
| 0 — не использовалась; 1 — простая визуализация на уровне «построен scatter-plot»; 2 — более сложная визуализация (картинка состоит из нескольких «слоёв» (<code>geom_*</code>)).<br>
 
|-
 
| Визуализация с помощью дополнений к ggplot2<br>
 
| 1 — использовалось любое дополнение [http://www.ggplot2-exts.org/gallery/ отсюда].<br>
 
|-
 
| Базовая работа с SQL<br>
 
| 1 — работа с SQL на уровне «Выбрать строки по условию» (<code>SELECT</code>, <code>WHERE</code>, <code>LIMIT</code>).<br>
 
|-
 
| SQL: Группировка и агрегирование<br>
 
| 1 — использовалось всё перечисленное: агрегирующие функции, <code>GROUP BY</code> и <code>HAVING</code>.<br>
 
|-
 
| SQL: <code>JOIN</code> и subqueries<br>
 
| 1 — использовались <code>JOIN</code>'ы или subquerie.<br>
 
|-
 
| SQLAlchemy<br>
 
| 1 — использовалось.<br>
 
|-
 
| Регулярные выражения.<br>
 
| 1 использовались для решения какой-нибудь практической задачи<br>
 
|-
 
| Обработка текстовых данных<br>
 
| 1 — использовались методы обработки естественного языка (например, библиотеки <code>pymorphy2</code>, <code>natasha</code> и <code>TextBlob</code>, обсуждавшиеся на лекции)<br>
 
|-
 
| Объём (осмысленных строк кода).<br>
 
| 0 0-50; 1 — 50+.<br>
 
|}
 
===Об объёме===
 
Объём проекта измеряется в «осмысленных самостоятельно написанных логических строках кода».
 
 
 
* «Логических» означает, что если разделить строку на две с помощью кнопки Enter, нажимемой в нужных местах, то это всё равно одна строка. В SQL каждая clause может считаться отдельной строкой.
 
 
 
* «Осмысленного» означает, что если написать десять раз подряд строчку <code>name = 'Alice'</code>, то это не считается.
 
 
 
* «Самостоятельно написанного» означает, что вы можете копипастить код откуда-то ещё, если он вам нужен для работоспособности вашего проекта — например, со StackOverflow — но любая такая копипаста должна обязательно сопровождаться ссылкой на источник и в зачёт ваших строк не идёт. Такая копипаста должна начинаться с комментария <code>### FROM: (адрес источника)</code> и заканчиваться комментарием <code>### END FROM</code>. Неправильно оформленная копипаста приравнивается к плагиату.
 

Версия 20:34, 20 ноября 2021

Общее описание

Вам необходимо подготовить интерактивную демонстрацию для какого-либо известного дифференциального уравнения или системы, задаваемой дифференциальными уравнениями. Она должна быть выполнена в виде веб-страницы, для просмотра которой не нужно устанавливать никаких дополнительных приложений (то есть пользоваться можно только HTML/JavaScript).

Вы можете использовать любые подходящие для этого библиотеки общего пользования (в т.ч. для решения дифференциальных уравнений), однако код, непосредственно анализирующий / решающий выбранную систему, должен быть написан вами самостоятельно.

На странице должно быть представлено описание системы, её физичесий / механический / биологический / etc. смысл, математические свойства решений (если известны) — всё, что делает эту систему интересной. Предполагается, что вы изучите литературу, посвященную выбранной системе, и сделаете на её основе научно-популярную статью с интерактивными иллюстрациями. Можно представлять себе энциклопедическую статью или главу из учебника, но использующую возможности современных технологий. Весь текст должен быть написан самостоятельно, но при этом опираться на качественные источники, которые должны быть явно указаны.

У читателя должна быть возможность задавать параметры системы (начальные условия, другие параметры) и видеть, как система от них зависит. Например, выбрать начальные условия и построить траекторию или анимацию, показывающую динамику системы; или выбрать дополнительные параметры и увидеть, как меняется фазовый портрет. По формату хочется что-то вроде статьи на http://distill.pub, только про дифференциальные уравнения.

На любом этапе работы вы можете советоваться с лектором по поводу проекта.

Примеры систем

  • Двойной маятник (double pendulum).
  • Задача двух тел.
  • Задача трёх (или n, n>2) тел.
  • Модель Лотки — Вольтерра и другие модели «хищник-жертва».
  • Модель ФитцХью — Нагумо.
  • Осциллятор Ван дер Поля.
  • Аттрактор Лоренца.
  • Модель Рамсея.
  • Вы можете предложить другую модель, не представленную в списке, но лучше это заранее обсудить с лектором.