LINUX.ORG.RU

Python в научных вычислениях

 ,


29

5

Доктор физико-математических наук Андрей Грозин прочитал цикл лекций об использовании Python в целях ликвидации безграмотности среди студентов, аспирантов и прочих. Презентации были приготовлены для представления в среде Jupyter. Видеоматериалы лекций с разрешения лектора доступны под свободной лицензией CC-BY-SA. Исходные видеофайлы будут выложены в торрентах позже.

Первая и третья лекция записаны не были. Остальные записаны, как записаны. Лекционные материалы выложены на страничке лектора.

Первые четыре лекции представляют из себя введение в язык программирования Python. Следующие пять лекций — это обзор возможностей Python, которые смогут пригодится в процессе занятия наукой.

  • Лекция 1. Jupiter. Числа. Строки. Списки. (html, ipynb)
  • Лекция 2. Кортежи. Множества. Словари. Функции.(html, YouTube, ipynb)
  • Лекция 3. Объектно-ориентированное программирование. Исключения. (html, ipynb)
  • Лекция 4. Модули. Ввод-вывод, файлы, директории. (html, YouTube, ipynb)
  • Лекция 5. numpy. Одномерные массивы. Операции над одномерными массивами. 2-мерные массивы. Линейная алгебра. Преобразование Фурье. Интегрирование. Дифференциальные уравнения.(html, YouTube, ipynb)
  • Лекция 6. matplotlib. Логарифмический масштаб. Полярные координаты. Экпериментальные данные. Гистограмма. Контурные графики. Images (пиксельные картинки). Трёхмерная линия. Поверхности. (html, YouTube, ipynb)
  • Лекция 7. SymPy (html, ipynb). Многочлены и рациональные функции. Элементарные функции. Структура выражений. Решение уравнений. Ряды. Производные. Интегралы. Суммирование рядов. Пределы. Дифференциальные уравнения. Линейная алгебра. Собственные значения и векторы. Нормальная жорданова форма. Графики. (html, YouTube, ipynb)
  • Лекция 8. iminuit (html, ipynb). cython. Функции. Интерфейс к библиотеке на C. Структуры. cdef классы. Интерфейс к библиотеке на C. (html, YouTube, ipynb)
  • Лекция 9. Интерфейс к библиотеке на C (продолжение). pandas (html, ipynb) — пакет для статистической обработки данных. Series. DataFrame. sh — простой вызов shell-комманд. rpyc — remote python call. pyroot — интерфейс к пакету анализа данных в том числе и данных очень большого объёма ROOT. (YouTube)

>>> YouTube

★★★★★

Проверено: splinter ()
Последнее исправление: Psych218 (всего исправлений: 5)

Полезный курс. Чем больше студентов и преподавателей перейдут на что-либо с Mathcad'a, тем лучше.

В курсах для своих студентов для численных вычислений я использую Octave. К Python'у пока присматриваюсь.

Мне лично не нравится в IDE для научного Питона ориентированность на Web-интерфейс. Если кто-то подскажет IDE по образу и подобию wxMaxima, то буду благодарен.

DarthVadimius ★★★★
()
Ответ на: комментарий от DarthVadimius

В смысле IDE? Можно просто python запустить и выполнять в нём команды как в shell или требуется что-то вроде Notebook для обучения? В этом случае Jupiter — это всё, что пока есть.

Evgueni ★★★★★
() автор топика
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от DarthVadimius

Мне лично не нравится в IDE для научного Питона ориентированность на Web-интерфейс.

Я вообще не понял. Питоном по работе активно пользуюсь с 2009 года, преподаю на нём с 2011. Использовал разные IDE, в том числе много стандартное IDLE и блокнот Geany. Ещё были Komodo Editor и PyCharm. Писл в Kate. Нигде не видел заточенности под веб-интерфейс. Более того, я вообще не видел специальных IDE для научного Питона (если только вы не о специальных виндовых сборках типа Pyzo). Где вы такое чудо откопали?

Vudod ★★★★★
()
Ответ на: комментарий от Evgueni

В смысле IDE?

Под IDE я имел ввиду то, что запускается по ipython notebook

Можно просто python запустить и выполнять в нём команды как в shell

Про такую функцию знаю.

DarthVadimius ★★★★
()
Ответ на: комментарий от DarthVadimius

Ну, в принципе есть ещё что-то в emacs: http://www.emacswiki.org/emacs/PythonProgrammingInEmacs#toc25

Никогда не пробовал. Мне, как правило, достаточно текстового редактора и консоли рядом/в нём.

И опять же Jupiter вполне себе можно пользоваться — настроить сервер, а пользователи будут заходить на него из обычного браузера.

Evgueni ★★★★★
() автор топика
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Vudod

Ответ выше. Возможно неточно выразился. Под IDE для научного Питона я имел в виду то, что запускается по ipython notebook . Оно имеет только Web-интерфейс.

DarthVadimius ★★★★
()
Ответ на: комментарий от DarthVadimius

А вам не рекомендую использовать интерактивный режим, как это предлагается в курсе. Пишите скрипт. Для любого дела длиннее 3 строк это удобнее.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

Более того, я вообще не видел специальных IDE для научного Питона (если только вы не о специальных виндовых сборках типа Pyzo). Где вы такое чудо откопали?

М.б. речь про spyder.

Akamanah ★★★★★
()
Ответ на: комментарий от Akamanah

М.б. речь про spyder.

spyder

Когда я его в последний раз пробовал года два назад, он был ужасен. ИМХО, pycharm/pydev сейчас выглядят лучше.

anonymous
()
Ответ на: комментарий от DarthVadimius

IntelliJ Community Edition со свободным Python-плагином имеет встроенную поддержку Python-notebook, хоть и довольно кривую.

trycatch ★★★
()
Ответ на: комментарий от anatoly

Не дерзи. Я просто показываю причину не использовать Mathcad. Какой смысл учить Mathcad и заранее обрекать себя/работодателя на затраты, если всё равно начинать изучение с нуля и есть достойные альтернативы?

vitruss ★★★★★
()
Ответ на: комментарий от vitruss

Не дерзи.

Папе своему советы давай.

Я просто показываю причину не использовать Mathcad.

Python в научных вычислениях (комментарий)

Ты оплатишь?

Это папа тебя научил подобным образом «показывать причины» ?

Какой смысл учить Mathcad

Его и не надо учить. В нём можно сходу работать.

заранее обрекать себя/работодателя на затраты

Ты о чём вообще? Речь о студентах и преподавателях — а значит, об учебе, а не поиске вакансий.

anatoly
()
Ответ на: комментарий от anatoly

Ты советуешь платный продукт, но не хочешь его оплатить тем кто считает его неоправданно дорогим для их конкретных задач? Что это как не реклама?

Может и MSO стоит своих денег, но мне подходит LibreOffice. Намек надеюсь понят.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от overmind88

Ну да. Постоянно опечатываюсь.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

Закрытый калькулятор-переросток не нужен

судя по тому, что на форумах задают вопросы, связанные с ним, можно сделать вывод, что это не так

anatoly
()
Последнее исправление: anatoly (всего исправлений: 1)
Ответ на: комментарий от anatoly

На форумах задают вопросы и на тему Пони, но это не значит что офтопик следует подпускать к анализу данных хоть в каком-то виде. Это яркий пример плохого неавтоматизируемого интерфейса.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от anatoly

Языком программирования, например. Вместо того, что бы использовать готовый язык, они напридумывали надстройку над матричным калькулятором.

Когда ты занимаешься непосредственно вычислениями - сахарок для матричных операций, да, неплох. Можно даже сказать, что делать тоже в numpy утомительнее. Но когда начинается алгоритмизация (и, скажем, ООП), то начинается boilerplate code ад:

  • Привязка имён файлов к именам функций и классов
  • Нет возможности мешать код и определение функций и классов в m-файле.
  • Нет возможности написать call_a().call_b()
  • Вынужденная работа с hObject и handles
  • Постоянная точка с запятой и индексация с 1
  • Неймспейсы в матлабе?
  • Нет возможности делать файлы исходного кода в utf-8
  • Работа с исключениями, и исключениями при работе в GUI
  • Попробуйте сделать для строки метод startswith
  • Переменные-объекты, которые на самом деле числа, которые как бы указатели на объекты. Но есть «новые» объекты (handle), которые больше похожи на то, что называют «объектами» в остальных языках.
  • GUI-привязки к другим тулкитам?
  • Вставки в файлах от самого матлаба вида «% Begin initialization code - DO NOT EDIT»
  • Кросс-платформенность и переносимость кода мягко говоря, неофициальны

P.S. Возможно, какие-то из этих недостатков пофиксили в прошедшие пару лет. Не знаю, соскочил с этого раньше.

omegatype ★★★
()
Ответ на: комментарий от omegatype

Насчёт матлаба у меня аналогичное мнение. Но речь изначально шла про mathcad.

anatoly
()
Ответ на: комментарий от omegatype

Зато с бубенчиками и висюльками. Многим, как нам тут пытаются втереть, нравится.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от omegatype

Но маткад уж совсем слаб.

Для учёбы (например, для курса ЦОС) — самое то.

Простой как молоток. Сразу можно пользоваться.

anatoly
()
Ответ на: комментарий от anatoly

Пользоваться головой надо, а для профессионального использования ПО, которое не автоматизируется, идёт в топку без вариантов.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от anatoly

И вместо изучения тем, непосредственно связанных с ЦОС, провести 90% времени за изучением python, numpy и scipy.

Тебе уже советовали расслабиться?

tailgunner ★★★★★
()
Ответ на: комментарий от anatoly

То есть преподавать цифровую обработку сигналов без таких слов как fft или понимания того, что «вектор отсчетов сигнала» на практике будет «массив чисел float»?

Если после ЦОС-а будет курс «а теперь тоже самое моделируем на машине в условиях, приближенных к реальным», то да. По моим ранним впечатлениям маткад не шибко развивает способность к использованию машины для моделирования, а просто позволяет «меньше париться с построением графиков и некоторыми вычислениями», но не моделированием.

omegatype ★★★
()
Ответ на: комментарий от anatoly

Скажу тебе по секрету: профессиональные инструменты требуют времени для изучения, к дурным негодным инструментам подходить не нужно сразу же, а изучать алгоритмы можно и без компьютеров.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от anatoly

целях ликвидации безграмотности среди студентов, аспирантов и прочих

Тут речь не только про учёбу, особенно с учётом заголовка. И всё равно, даже в Mathcad надо изучать основы и смотреть справочники. Да и лицензия на всё это чудо (тем более на целый класс), будет стоить не мало.

vitruss ★★★★★
()
Ответ на: комментарий от omegatype

В Mathcad'е есть и встроенная функция fft, и векторы/матрицы. И ни что не мешает реализовать в системе алгоритм fft самостоятельно.

Если после ЦОС-а будет курс ...

Обычно курс ЦОС разбивают на две больших части/курса: теоретическую и практическую. Где на практической части уже занимаются программированием непосредственно сигнальных процессоров или чего-нибудь другого.

Так вот нет ничего плохого, чтобы теоретическую часть вести с использованием Mathcad'а. И сразу садить студентов за сигнальные процессоры ничуть не лучше того, чем за python, numpy и scipy.

anatoly
()
Ответ на: комментарий от Evgueni

Скажу тебе по секрету: профессиональные инструменты требуют времени для изучения

Мне это и без тебя известно.

дурным негодным инструментам подходить не нужно сразу же

Понятное дело, определять, что дурно и негодно, можешь только ты.

а изучать алгоритмы можно и без компьютеров.

Утверждаешь, что ЦОС лучше преподавать вообще без компьютеров, чем использовать Mathcad?

anatoly
()
Ответ на: комментарий от DarthVadimius

wxMaxima

Бя

Лучше взять emacs + imaxima, наярить slime:

(require 'asdf)

(progn
  (flet ((%gpath (p)
           (push (merge-pathnames p
                                  *default-pathname-defaults*)
                 asdf:*central-registry*))) 
    (let ((*default-pathname-defaults*
            #P"/usr/share/sbcl-source/contrib/"))
      (map nil #'%gpath
           '(#P"sb-cltl2/"
             #P"sb-introspect/")))
    (let ((*default-pathname-defaults* (user-homedir-pathname)))
      (%gpath #P".emacs.d/site-lisp/slime/")
      (asdf:initialize-output-translations
       `(:output-translations (t ,(merge-pathnames #P".cache/maxima/lisp/"))
         :ignore-inherited-configuration)))) 

  (asdf:oos 'asdf:load-op :swank))

(swank:create-server :dont-close nil
                     :port 23146)
 
(to-maxima)

Далее M-x slime-connect <RET> 127.0.0.1 <RET> 23146 <RET>

ados ★★★★★
()
Ответ на: комментарий от DarthVadimius

Чувак, расслабься. iPython notebooks уже сегодня принимают к зачёту в некоторых университетах Северной Америки (как минимум на двух факультетах двух университетов :)). Они удобны и работают практически везде, в том числе удалённо. Их удобно сохранять, ими удобмно обмениваться, в них удобно по быстрому прикинуть что к чему. Мощный инструмент в умелых руках. А для начинающих так вообще бомба. Иногда бывает полезно отложить свои привычки в сторону и попробовать что-то новое. Вот это как раз тот самый случай.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.