LINUX.ORG.RU

Python for Physics


0

3

В ходе учебы в университете внезапно обнаружил, что я занимаюсь математическим моделированием в качестве научной деятельности. Первый опыт был на Java, однако что то мне подсказывает, что есть более простой и интересный вариант. Решил обратить внимание на Python. Что собственно хотелось узнать: 1) Существуют ли какие либо статьи/сборники рецептов/прочее для юнных идиотов физиков, которые помогут для не знающего Python человека научится относительно быстро решать задачи уровня «решить дифференциальное уравнение»?

2) По личному опыту - насколько будет важно доскональное знание языка для решения задач математического моделирования? Ежели важно - то что смотреть порекомендуете из литературы?

3) Существует ли возможно вызывать и использовать результаты вызова Java-кода из Python?

Прикладная область - физика полупроводников, квантовая механика.

cast AIv, Vudod

P.S.: Как кстати нынче обстоят дела с PyQt? Насколько будет важно знание самого Qt и C++ для работы с ним?

Перемещено mono из talks

★★★

Последнее исправление: TheKnight (всего исправлений: 3)

По личному опыту - насколько будет важно доскональное знание языка для решения задач математического моделирования?

По опыту коллег - не очень важно.

Существует ли возможно вызывать и использовать результаты вызова Java-кода из Python?

В Jython есть, но проблема в том, что навороченные математические библиотеки Python написаны на Си и для JVM недоступны, AFAIK.

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

Да мне свои извраты бы вызывать из питона... C не знаю, а потому проще написать библиотечку на Java и ее дергать, если что то нестандартное и требующее более быстрого просчета, чем это может сделать Python стандартными средствами... Ну и по идее работа с GUI там попроще чем в Java будет.

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

P.S.: Как кстати нынче обстоят дела с PyQt? Насколько будет важно знание самого Qt и C++ для работы с ним?

Там всё просто, да и доки хороши.

ggrn ★★★★★
()

1) Существуют ли какие либо статьи/сборники рецептов/прочее для юнных идиотов физиков, которые помогут для не знающего Python человека научится относительно быстро решать задачи уровня «решить дифференциальное уравнение»?

Есть такой курс.
Для питона есть несколько крупных наборов библиотек, для научных вычислений. Не фортран конечно, но достаточно.

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

И не надо забивать гвозди пассатижами.

ох, видел бы ты мой сливной бачок...

lazyklimm ★★★★★
()

Ну ява тут конечно выглядит странно...

Мы пишем на связке Python-C++. Глубинные познания питона не нужны (как и плюсов), важнее разбираться в предметной области и соответствующих численных методах (на уровне конечного пользователя).

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

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

не знаю, а потому проще написать библиотечку на Java и ее дергать

Ну, используй Jython. Хотя я не думаю, что ты ввыиграешь что-то по сравнению с родными JVM-языками.

если что то нестандартное и требующее более быстрого просчета, чем это может сделать Python стандартными средствами..

NumPy и SciPy считаются «стандартными средствами»?

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

Кратким КУРСОМ это может назвать человек только с очень-очень буйной фантазией. Максимум это ПРОГРАММА курса. Кроме того, содержание этой программы вызывает некоторое количество вопросов... Почему для построения графиков только матплотлиб? Где разбор аргументов командной строки? Или где создание форточек?

Дело то нужное, но создается ощущение что это «ничего обо всем». Тем более, что есть куча литературы по питону, лучше было бы составить просто список - эту тему читаем здесь, эту тему читаем здесь, вот тебе упражнение, вот типовое использование в вычислениях этой фичи.

ЗЫ Урок 5. Общение с пользователем - выбил слезу. НИкогда, НИКОГДА не общайтесь с пользователем через стандартный ввод/вывод в интерактивном режиме, если только Вы не сделали DSL с поддержкой реадлайн, нормальным интерпретатором и т.д. Тем более НИКОГДА так не делайте в научных вычислениях.

Где функциональщина питонья? Как можно нормально кодить на питоне без ФП, тем более в научных вычислениях?

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

PPS а где там про фильтры для обработки данных? Один из самых актуальных инструментов для обработки данных, как раз ниша для питона - где оно О_О?

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

Вот это да! Сколько слов и каких!
Почему профессиональные программисты не понимают простых вещей. Иногда программы пишут, чтобы ими пользоваться самостоятельно. И делают это далеко не профессиональные программисты.
Расскажите, как можно без знания языка и теории алгоритмов быстро набросать программку для расчета теплопрередачи многослойного материала пользуясь только Лутцем?
Расскажите, как человек может освоить сложный высокоуровневый язык программирования (пусть даже питон) с наскоку по справочнику, если этот человек не знает что такое, например, ООП, и как его можно применять.
А напоследок добавьте свой список литературы и статей.
Из-за таких вот «не знаешь - не лезь» половина моих знакомых инженеров пишут программки на VBA и AutoLISP'е, потому что не могут освоить компиляторы и систему ввода-вывода в ОС.

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

Вы вообще читали содержимое темы?

статьи/сборники рецептов/прочее для юнных физиков, которые помогут для не знающего Python человека научится относительно быстро решать задачи уровня «решить дифференциальное уравнение»

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

Как можно нормально кодить на питоне без ФП, тем более в научных вычислениях?

Я начинающий программист с интересом к ФП.
Расскажите, пожалуйста, как вы используете ФП в питоне для научных вычисленй. Это что-то вроде функции map?

Sphinx ★★☆☆
()

Если есть деньги (или нет совести), то можешь посмотреть на Wolfram Mathematica.

psikh
()

Существуют ли какие либо статьи/сборники рецептов/прочее для юнных идиотов физиков, которые помогут для не знающего Python человека научится относительно быстро решать задачи уровня «решить дифференциальное уравнение»?

Non-Programmer's Tutorial for Python 2.6 Non-Programmer's Tutorial for Python 3 далее если дисциплина численные методы знакома проблем нет ;) и готового как уже было сказано полно

По личному опыту - насколько будет важно доскональное знание языка для решения задач математического моделирования? Ежели важно - то что смотреть порекомендуете из литературы?

Да важно!

> python2 -c 'print (0.1+0.2)'
0.3
> python3 -c 'print (0.1+0.2)'
0.30000000000000004

Смотреть по необходимости… Из литературы рекомендую Shaw Z.A. - Learn Python the Hard Way, 2nd Edition 2011

3) Существует ли возможно вызывать и использовать результаты вызова Java-кода из Python?

Скорее да…

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

Вот это дааа! Сколько умозаключений на основе моих стольких слов, и ни одного верного!

1) Я НЕ профессиональный программист и вообще не программист, напротив я простой физик, который решает на питоне и С++ всякие разные задачи численного моделирования. В частности, я веду кафедральный спецкурс, на котороу учу студентов (тоже не-программистов) как на питоне и С++ что то моделировать.

2) Вся эта Ваша бездна экспрессии, как и тема поднятая ТС, никак не относится к двум простым фактам - то, что у Вас по ссылке это НЕ КУРС, это ПРОГРАММА курса. Причем программа курса, не очень относящаяся к «научным вычислениям на питоне». Я тоже иногда пишу какие то тексты о программировании на питон, но я не обзываю их учебным курсом, кроме того я пишу о том, в чем хорошо разобрался сам, что нужно мне и моим коллегам для того же моделирования, и что не описано кем то еще на нужном нам уровне. А по приведенной Вами ссылке - первая часть про питон вообще кардинально уступает тому же ГВР, а остальное просто тезисно, причем набор тем довольно странный.

Вы вообще читали содержимое темы?

Я да. А Вы? Как то что приведено по ссылке хоть чем то поможет ТС-у? Если Вы и правда думаете, что оно в том виде в каком есть поможет ТС-у, то или Вы не знакомы с предметом, или Вы автор того текста и у Вас ЧСВ овер 9000. Не знаю, что хуже...

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

И map и reduce и генераторы. Если и правда интересно - могу кинуть в почту некий текст, который пока что содержит кучу ошибок и который поэтому я не готов выкладывать на широкое обозрение.

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

Расскажите, пожалуйста, как вы используете ФП в питоне для научных вычисленй. Это что-то вроде функции map?

Мне случалось писать сеточные методы и молекулярную динамику на Haskell. Впечатления положительные. Также потихоньку осваиваю генерацию CUDA ядер на нём же (с помощью template haskell это дико удобно, шаблоны C++ можно выкинуть на помойку), возможно один проект попробую на неё перевести.

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

В частности, я веду кафедральный спецкурс, на котороу учу студентов (тоже не-программистов) как на питоне и С++ что то моделировать.

Ну же. Где Ваши рекомендации по изучению питона для физических расчетов? Или эти рекомендации получают только Ваши студенты?

Как то что приведено по ссылке хоть чем то поможет ТС-у? Если Вы и правда думаете, что оно в том виде в каком есть поможет ТС-у, то или Вы не знакомы с предметом, или Вы автор того текста и у Вас ЧСВ овер 9000.

Когда я задался аналогичным вопросом, что и ТС, это было самое доступное и краткое из того, что я нашел. Почему бы Вам не исправить недочеты того курса, который в с таким упоением раскритиковали.

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

У меня есть программа моего курса + задачи по курсу + ряд статей по некоторым актуальным вопросам (но что бы их понять надо уже знать как то питон). Сам питон каждый учит по своему, и этот вопрос неоднократно обсуждался, буквально вчера была тема. Чем программа моего курса или задачи по моему курсу могут помочь ТС-су я ума не приложу, решать надо конкретные задачи а не учить ЯП «вообще». Когда ТС возьмется моделировать что-то в чем я разбираюсь (или начнет решать проблему в которой я могу помочь) - он тут спросит, я отвечу.

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

Потому что это довольно большая работа, времени на нее нету, а халутурить я не люблю. И главное, повторюсь - я не вижу смысла в курсе подобного формата. Учить питон - берите ГВР и учите, первые две части прочитать и понять то можно (прикладывая к свои задачам)? Моделирование на птоне - минимум я тут Python for Physics (комментарий) сказал, если хочется подробностей - давайте задачу, будем говорить про подробности. Моделирование ОЧЕНЬ СИЛЬНО завязано на предметную область вообще то, решение уравнения Фоккера-Планка слабо поможет при решении у-й газодинамики горения. Ну кроме архитектуры, которую я уже описал.

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

У меня есть программа моего курса + задачи по курсу + ряд статей по некоторым актуальным вопросам (но что бы их понять надо уже знать как то питон). Сам питон каждый учит по своему, и этот вопрос неоднократно обсуждался, буквально вчера была тема.

Я так понял, вы ведете курс по компьютерному моделированию процессов по своей области знаний. У меня в институте был такого же рода курс по тепло-массообмену привязанный к фортрану. Мы же понимаем, что привязка к языку в таком случае - формальна. Если есть разработанная алгоритмическая часть, то человеку нужны только полезные особенности языка, которые могли бы ему упростить часть алгоритмов или ускорить их воплощение.
Т.е. человеку не нужно знать особенности парсинга html на питоне, а вот примеры организации массивов и работы с ними, на базе стандартных функций, пригодятся.

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

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

Не по моделированию, а по технологиям моделирования. Если так уж интересно, вот ссылка на программу курса: https://sites.google.com/site/kiam81k/teaching/speckurs-sovremennye-tehnologi...

ВОт некоторые задачи по питону:

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

Файл может содержать:
- комментарии (начинаются с символа #) - должны проходить через фильтр без изменений.
- несколько независимых частей с данными, разделенных одной или несколькими пустыми строками - части должны дифференцироваться независимо и выводится в том же порядке и с тем же числом разделителей (пустых линий) что и в исходном файле.

Фильтр должен быть написан в функциональном стиле, допустимо использование генераторов, не допустимо использование циклов и условий.
----------------------------------------------------------
Написать на С++ класс с оператором сложения и индексации.
Класс должен быть проимпортирован в Python при помощи пакеты SWIG, Makefile и .i файл должны быть написаны руками.
После импорта класс должен поддерживать специальные методы str, repr, корретный оператор индексации и сериализацию при помощи pickle.

AIv ★★★★★
()

где теги? python и полупроводники меня тоже интересуют.

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