Научное программирование и Sage

Как устроена система

  1. Инсталляция, библиотеки, исходники, git.
  2. Режимы использования — интерактивный интерпретатор, notebook, пакетный режим, cloud

Особенности языка и предметной области

  1. Preparser
  2. Типы данных
  3. type и parent
  4. Обзор стандартной библиотеки.

Практическая польза от системы

  1. Latex. (пример)

  2. Рисование, в т.ч. 3D
  3. Анимация. (пример)

  4. Интерактивные элементы. (пример с графом, пример с фракталом)

  5. Решение (систем) уравнений (пример).

Д/З

Решения всех задач должны быть оформлены отдельными sage-скриптами или worksheet-ами (примеры см. выше), годными для запуска в sage-консоли или в notebook. Также полезно (и ускорит обратную связь), если они будут опубликованы в какой-либо живой Sage-системе (например в этом notebook или даже лучше в в новом облаке — и тогда ссылка на соответствующий worksheet должна быть размещена в README

Пункты, помеченные <!> — необязательные.

  1. Рисование (вручную заполнить объект Graphics)
    1. Написать функцию, которая принимате на вход граф (sage.graphs.Graph) и рисует его, размещая на пустом объекте Graphic() вершины и ребра.
    2. Написать функцию, которая получает на вход текстовое представление лабиринта (из прошлого семестра) и рисует его на графике (можно и трехмерном) так, чтобы лабиринт был похож на лабиринт.

  2. Анимация (animate) — построить объект Animation, пригодный для сохранения в gif-ке
    1. Написать функцию, которая по данному графу и двум вершинам строит анимацию (объект Animation), которая иллюистрирует алгоритм (можно взять любой) поиска пути по графу (по кадру на каждый шаг поиска, с подсветкой текущего пути другим цветом).
    2. Написать функцию, которая по текстовому представлению лабиринта (см. выше) строит анимацию (объект Animation), иллюстрирущую алгоритм поиска пути в лабиринте (закрашивание просмотренных клеток)
    3. Написать фрагмент кода на Sage, который создаёт анимацию (объект Animation), иллюстрирующую падение во фрактал (в любой), хотя бы 100 кадров. Желательно с зацикливанием. <!>

    4. С помощью Sage получить познавательную и реалистичную визуализацию нетривиального физического явления (теплопроводность, распространение волн, упругость, гравитационный маневр и т.п.), решив подходящее уравнение (систему уравнений) аналитически или численно. <!>

  3. Интерактивные элементы (interact) — написать interact-функцию, пригодную для использования в браузере
    1. Написать функцию, которая генерирует случайный граф (параметры: начальное зерно генератора случайных чисел, число вершин в графе, плотность ребер) и строит анимацию поиска пути в графе (между первой и последней вершинами). Завернуть ее в interact, снабдив все параметры подходящими элементами управления.
    2. Написать функцию, которая генерирует случайный лабиринт (параметры: начальное зерно генератора случайных чисел, размеры) и строит анимацию поиска пути в нем (из левой верхней и правую нижнюю клетку). Завернуть ее в interact, снабдив все параметры подходящими элементами управления.

Полезные ссылки

  1. Sage

  2. Документация

  3. SageWiki — много примеров кода, в т.ч. интерактивных.

    1. Галерея графики, в т.ч. интерактивной

  4. Немного русской документации и скринкастов, стареньких (courtesy Alexander Turenko).

  5. Старенький онлайн-notebook

  6. Новое Sage-облако. По сути, это полноценный бесплатный shared linux hosting с дополнительным веб-интерфейсом к файловой системе и Sage notebook, а также веб-терминалом (bash). Можно грабить корованы работать по SSH. Краткая инструкция:

    1. Зарегистрироваться в системе.
    2. Склонировать репозиторий куда-нибудь к себе, быстрее всего на GitHub же.

    3. Создать новый пустой проект (Project).
    4. Выполнить терминальную команду вида git clone https://github.com/spacediver/sage-demo.git (заменить путь репозиторию на свой, https:// оставить. push будет делаться по https с вводом логина-пароля всякий раз. Можно заморочиться с ssh-keygen, подкладыванием ~/.ssh/id_rsa.pub на свой аккаунт github и доступанием к репозиторию через ssh, это тоже должно работать).

    5. Перейти в подкаталог sage-demo (или какой создался).

    6. Создать новый терминал (это такой файл с расширением .term, который в веб-интерфейсе открывается в виде полноценного терминала).

    7. Запустить htop, cat /etc/passwd, bitcoind...-

    8. Настроить git для новых коммитов

          git config --global user.name "John Doe"
          git config --global user.email johndoe@example.com 

      (ну или подложить свой ~/.gitconfig)

    9. Плодотворно поработать в веб-интерфейсе системы, создавая и редактируя рабочие листы (worksheet), копируя в них код примеров, и т.п.
    10. В терминале выполнить команды git status, diff, add, commit, push.
    11. ...
    12. PROFIT!
    13. Можно зайти на сервер по ssh (см. кнопку «Settings» вашего проекта — нужно будет через веб-интерфейс подложить свой ключик в ~/.ssh/authorized_keys).

LecturesCMC/PythonDevelopment2015/04_Sage (последним исправлял пользователь PavelSutyrin 2015-03-22 15:40:04)