Прикладные пакеты с алгоритмическим языком Python и их применения для проведения лабораторных работ по компьютерному моделированию

Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.04.2019
Размер файла 2,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования Республики Азербайджан

Гянджинский государственный университет

Факультет Математики и Информатики

Кафедра Информатики

Выпускная работа

выполненная по теме

Прикладные пакеты с алгоритмическим языком Python и их применения для проведения лабораторных работ по компьютерному моделированию

Студентка IV курса специальности

Учитель Математики и Информатики

Ибрагимзаде Гюнай Фикрет кызы

Руководитель выпускной работы: Доц. С.Т.Гусейнов

Студентка: Г.Ф.Ибрагимзаде

Гянджа - 2014

Содержание

Вступление

1. Программное обеспечение Python и ее основные характеристики, как программной среды

1.1 Общие сведения о языке программирования Python

1.1.1 Типы и структуры данных в ПО Python

1.1.2 Синтаксис и семантика в ПО Python

1.1.3 Выражения

1.1.4 Имена

1.1.5 Строки документации

1.1.6 Интерактивный режим

1.1.7 Объектно-ориентированное программирование

1.1.8 Функциональное программирование

1.2 Структура и свойства ппп алгоритмического языка Python и особенности их применения

1.2.1 Модули и прикладные пакеты Python

1.2.2 Стандартная библиотека в Python

1.2.3 Модули расширения и программные интерфейсы

1.2.4 Графические библиотеки

1.2.5 Интроспекция

1.2.6 Обработка исключений

1.2.7 Итераторы

1.2.8 Генераторы

1.2.9 Декораторы

2. Особенности применения ППП Python(x,y) с использованием его различных вычислительных модулей в учебном процессе при преподавании различных курсов естественных наук

2.1 Составные части ППП Python(x,y) в его прикладных пакетах для компьютерного моделирования

2.2 Среда программирования - модули Python(x,y) и особенности их назначений

2.3 Визуализация и научная графика: - модули Python(x,y) и особенности их назначений

3. Примеры применения в учебном процессе по python совместно с научными ППП Python(x,y) для проведения лабораторных работ по компьютерному моделированию

3.1 Компьютерное моделирование в механике

3.2 Компьютерное моделирование в физике

3.3 Компьютерное моделирование в химии

3.4 Компьютерное моделирование в биологии и медицине

3.5 Компьютерное моделирование в Геофизике

3.6 Компьютерное моделирование методом Монте-Карло

Заключение

Литература

Вступление

python программный вычислительный учебный

История развития ППП Python. Cтруктура и составные части пакетов прикладных программ (ППП) с ядром программирования на алгоритмическом языке Python, как средства для компьютерного моделирования в различных прикладных науках и в высшем образовании.

Разработка языка Python была начата в конце 1980-х годов сотрудником голландского института CWI Гвидо ван Россумом. Для распределённой ОС Amoeba требовался расширяемый скриптовый язык, именно он начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). В феврале 1991 года Гвидо опубликовал исходный текст в alt.sources. Название языка произошло не от вида пресмыкающихся - автор назвал язык в честь популярного британского комедийного телешоу 1970-х «Летающий цирк Монти Пайтона». Для использования в научных расчетах наиболее фундаментальным средством с языком Python считается ППП SciPy.

Тип:

расширение языка Python

Разработчик

Проект сообщества

ПО:

Си, Фортран, C++, Cython иPython

ОС:

Кроссплатформенное программное обеспечение

Последняя версия:

0.12.0 (7 августа 2013)

Лицензия:

Лицензия BSD

Сайт:

scipy.org

SciPy -- это открытая библиотека высококачественных научных инстру-ментов для языка программирования Python. SciPy содержит модули для оптимизации, интегрирования, специальных функций, обработки сигна-лов, обработки изображений, генетических алгоритмов, решения обыкно-венных дифференциальных уравнений и других задач, обычно решаемых в науке и при инженерной разработке. Библиотека разрабатывается для той же аудитории, что MATLAB и Scilab.

ППП ИЛИ МОДУЛИ SciPy: constants - физические константы и коэффициенты пересчёта; cluster - векторное квантование; fftpack - дискретные алгоритмы преобразования Фурье; integrate - инструменты для интегрирования; interpolate - инструменты для интерполяции; io - ввод-вывод данных; lib - врапперы Python для внешних библиотек; linalg - линейная алгебра; misc - разные утилиты; optimize - средства оптимизации; sandbox - экспериментальный код; signal - обработка сигналов; sparse - поддержка разреженных матриц; special - специальные функции; stats - статистические функции; weave - позволяет включение кода C/C++ внутри кода Python.

ДОПОЛНИТЕЛЬНАЯ ФУНКЦИОНАЛЬНОСТЬ.

Основной функционал SciPy расширяется за счёт других инструментов, http://ru.wikipedia.org/wiki/Scipy - cite_note-3например:

· Графика. На данный момент рекомендованным пакетом для отрисовки двухмерной графики является Matplotlib, тем не менее, существует множество других, например, HippoDraw, Chaco, и Biggles. Также популярными являются Python Imaging Library и MayaVi (для 3D визуализации).

· Оптимизация. Хотя SciPy имеет свой пакет для оптимизации, OpenOpt имеет доступ к большему количеству оптимизационных пакетов и решателей.

· Продвинутый анализ данных. При помощи RPy, SciPy обеспечивает интерфейс к статистическому пакету R предназначенному для сложного анализа данных.

· База данных. SciPy может взаимодействовать с PyTables, иерар-хической базой данных разработанной для эффективного управления большими объёмами данных, хранящихся в файлах формата HDF5.

· Интерактивная оболочка. IPython это интерактивная среда которая обеспечивает дебаггинг и создание кода в стиле, близком к MATLAB.

· Символьная математика. Существует несколько библиотек для Python, такие как PyDSTool, Symbolic и SymPy, которые позволяют работать с символьной математикой.

SciPy является ППП с открытым исходным кодом программное обеспечение для математики, естественных наук и инженерии. В частности, ниже в таблице приведем некоторые из основных подпакетов этого ППП:

ЛОГОГОТИПЫ ППП SciPy

НАИМЕНОВАНИЕ

КРАТКАЯ ХАРАКТЕРИСТИКА

NumPy

Пакет программ для численного моде-лирования на основе N-размерных мас-сивов (по аналогии с Matlab)

SciPy library

Фундаментальная библиотека программ для научных вычислений (т.е. ППП для компьютерной математики)

Matplotlib

ППП для создания 2D и 3D научной гра-фики)

IPython

Расширенная интерактивная консоль (т.е. расширенная среда программирова-ния на алгоритмическом языке Python)

Sympy

Символьная математика (т.е. ППП по компьютерной алгебре с ядром про-граммирования Python)

Pandas

Структура данных & анализ (т.е. ППП для создания баз данных)

Необходимо отметить, существует ещё большее количество стандартных библиотек (ППП) на основе языка Python, которые в той или иной степени могут и применяются в качестве инструментов для проведения компьютерного моделирования (хотя, возможно, многие из них не входят в ППП SciPy).

Ниже приведем список, всех ППП с ядром Python:

· CherryPy - ([???i pa?] «ЧерриПай», игра слов: англ. cherry pie -- «вишнёвый пирог»), это объектно-ориентированный веб-фреймворк, написанный на языке программирования Python. Спроектирован для быстрой разработки веб-приложений для сети Интернет. Представляет собой надстройку над HTTP-протоколом, но остаётся на низком уровне и не выходит за рамки требований RFC 2616. CherryPy может выступать в качестве самостоятельного веб-сервера или работать под управлением другого серверного приложения, поддерживающего протокол WSGI.

· Django - (Джанго, ['d?ї??o?]) -- свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation. Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Один из основных принципов фреймворка -- DRY (англ. Don't repeat yourself). Также в отличие от других фреймворков обработчики URL в Django конфигурируются явно при помощи регулярных выражений, а не выводятся автоматически из структуры моделей контроллеров.

· GAE framework - свободный фреймворк для веб-приложений. Изначально проект был создан как аналог Django, который полностью совместим с Google App Engine и написан на языке Python. Сайт на GAE framework строится из нескольких приложений, которые рекомендуется делать независимыми и подключаемыми. Для работы с хранилищем данных GAE framework использует ORM из состава Google App Engine.

· Genshi - является библиотекой Python, обеспечивающий интегрированный набор компонентов для разбора, подготовки и обработки HTML, XML или другого текстового контента в WEB. Genshi используют некоторые веб-фреймворки, такие как CherryPy, TurboGears, Pylons и web2py. Genshi заменил Kid в TurboGears 2.x

· Jinja - (произносится как дзиндзя), это шаблонизатор для языка программирования Python. Это текстовой язык шаблонов и, таким образом, может быть использован для создания какой-либо разметки, а также исходного кода. Лицензирован под BSD лицензией. Шаблонизатор Jinja позволяет настраивать теги, фильтры, тесты и глобальные переменные. Поставляется с простой в использовании системой фильтров, похожей на конвейер Unix.

· JPype - расширение для языка программирования Python, реализующее возможность программам полный доступ к библиотекам классов Java. В отличие от Jython позволяет достичь большего быстродействия и доступа ко всем Python расширениям.

· Matplotlib - библиотека на языке программирования Python для визуализации данных двумерной (2D) и трёхмерной (3D) научной графикой. Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях.

· Natural Language Toolkit - Библиотека NLTK, или NTLK - это пакет библиотек и программ для символьной и статистической обработки естественного языка, написанных на языке программирования Python. Содержит графические представления и примеры данных. Сопровождается обширной документацией, включая книгу с объяснением основных концепций, стоящих за теми задачами обработки естественного языка, которые можно выполнять с помощью данного пакета. NTLK является свободным программным обеспечением.

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

· Pygame - набор модулей (библиотек) языка программирования Python, предназначенный для написания компьютерных игр и мультимедиа-приложений. Pygame базируется на мультимедийной библиотеке SDL. С 2004/2005 года является свободным ПО.

· PyGTK - набор Python-привязок для библиотеки графического интерфейса GTK+. PyGTK является свободным ПО и распространяется на условиях GNU LGPL.

· PyMidas - ППП PyMidas имеет основную цель: это совместить возможности скриптового языка Python со множеством готовых библиотек для обработки астрономических данных пакета MIDAS.

· PyNGL - свободный ППП распространяющийся (The University of Illinois/NCSA Open Source license). Это модуль для языка программирования Python, использующийся для визуализации научных данных с упором на высококачественную 2D визуализацию в геонауках. Разрабатывается в National Center for Atmospheric Research (NCAR).

· PyObjC - проект, позволяющий совместно использовать библиотеки и классы таких языков программирования, как Python и Objective-C.

· PyQt - набор «привязок» графического фреймворка Qt для языка программирования Python, выполненный в виде расширения Python. PyQt работает на всех платформах, поддерживаемых Qt: Linux и другие UNIX-подобные ОС, Mac OS X и Windows. PyQt практически полностью реализует возможности Qt. А это более 600 классов, более 6000 функций и методов, включая: Существующий набор виджетов графического интерфейса; стили виджетов; доступ к базам данных с помощью SQL (ODBC, MySQL, PostgreSQL, Oracle); QScintilla, основанный на Scintilla виджет текстового редактора; поддержку интернационализации (i18n); парсер XML; поддержку SVG; интеграцию с WebKit, движком рендеринга HTML; поддержку воспроизведения видео и аудио. PyQt также включает в себя Qt Designer (Qt Creator) -- дизайнер графического интерфейса пользователя.

· Pyramid - (программный каркас или фреймворк) для разработки веб-приложений с открытым исходным кодом, написанный на языке Python в рамках проекта Pylons.

· PySide - привязка языка Python к инструментарию Qt, совместимая на уровне API с PyQt.

· Python Imaging Library - (сокращенно PIL) библиотека языка Python, предназначенная для работы с растровой графикой.

· PythonQt - (сокращенно PIL) это библиотека языка Python, предназначенная для работы с растровой графикой. Возможности библиотеки: поддержка бинарных, полутоновых, индексированных, полноцветных и CMYK изображений; поддержка форматов BMP, EPS, GIF, JPEG, PDF, PNG, PNM, TIFF, ICO, MPEG, PCX, PSD, WMF и др.

· SQLAlchemy - это программная библиотека на языке Python для работы с реляционными СУБД с применением технологии ORM. Служит для синхронизации объектов Python и записей реляционной базы данных.

· Tkinter - это кросс-платформенная графическая библиотека на основе средств Tk. Входит в стандартную библиотеку Python.

· Tornado - расширяемый, неблокирующий веб-сервер и фреймворк, написанный на Python.

· Twisted - это событийно-ориентированный сетевой фреймворк, написанный на Python и распространяемый под лицензией MIT.

· ZODB - это объектно-ориентированная база данных (ООБД) для Python-объектов. Используются для организации симпозиумов, конференций, лекций и т. п., разработанном и используемом ЦЕРН-ом.

1. Программное обеспечение Python и ее основные характеристики, как программной среды

Python (англ. python -- питон, произносится [?p??и(?)n] - памйтон, также, широко используется русскоязычное произношение питомн)http://ru.wikipedia.org/wiki/Python - cite_note-2 - это высоко-уровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций. Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, фу-нкциональное, императивное и аспектно-ориентированное. Основные архите-ктурные черты - это динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты).

Класс языка:

мультипарадигмальный: (объектно-ориентиро-ванный, императивный, функциональный, аспе-ктно-ориентированный)

Тип исполнения:

интерпретируемый, компилируемый в MSIL, компилируемый в байт-код Java

Появился в:

1990

Автор:

Гвидо ван Россум

Расширение файлов:

.py, .pyw, .pyc, .pyo, .pyd[1]

Релиз:

3.2.2, 2.7.2 (4 сентября 2011, 11 июня 2011[2])

Типизация данных:

строгая, динамическая

Основные реализации:

CPython, Jython, IronPython,PyPy, Stackless

Испытал влияние:

ABC, Modula-3, Lisp, TclSmalltalk, C, Java, Icon

Повлиял на:

Ruby, Boo, Groovy, ECMAScript,CoffeeScript

Лицензия:

PSFL

Сайт:

www.python.org

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

1.1 Общие сведения о языке программирования Python

1.1.1 Типы и структуры данных в ПО Python

Python поддерживает динамическую типизацию, то есть тип переменной определяется только во время исполнения. Поэтому вместо «присваивания значения переменной» лучше говорить о «связывании значения с некоторым именем». В Питоне имеются встроенные типы: булевые, строки, Unicode-строки, целые числа произвольной точности, числа с плавающей запятой, комплексные числа и некоторые другие. Из коллекций Python поддерживает кортежи (tuples), списки, словари (ассоциативные массивы) и, начиная с версии 2.4, множества. Все значения в Питоне являются объектами, в том числе функции, методы, модули, классы. Добавить новый тип можно либо написав класс (class), либо определив новый тип в модуле расширения (например, написанном на языке C). Система классов поддержи-вает наследование (одиночное и множественное) и метапрограмми-рование. Возможно наследование от большинства встроенных типов и типов расширений. Все объекты делятся на ссылочные и атомарные. К атомарным относятся int, long, complex и некоторые другие. При присваивании атомарных объектов копируется их значение, в то время как для ссылочных копируется только указатель на объект, таким образом, обе переменные после присваивания используют одно и то же значение. Ссылочные объекты бывают изменяемые и неизменяемые. Например, строки и кортежи являются неизменяемыми, а списки, словари и многие другие объекты - изменяемыми. Кортеж в Питоне является, по сути, неизменяемым списком. Во многих случаях кортежи работают быстрее списков, поэтому если вы не планируете изменять последовательность, то лучше использовать именно их.

1.1.2 Синтаксис и семантика в ПО Python

Python, как язык высокого уровня обладает чётким и последовательным синтаксисом, продуманной модульностью и масштабируемостью, благодаря чему исходный код написанных на Питоне программ легко читаем. Набор операторов достаточно традиционен. Приведем основные из них:

§ условный оператор if (если). Альтернативный блок после else (иначе). Если условий и альтернатив несколько, можно использовать elif (сокр. от else if).

§ операторы цикла while (пока) и for (для). Внутри цикла возможно применение break и continue для прерывания цикла и перехода сразу к следующей итерации соответственно.

§ оператор определения класса class.

§ оператор определения функции, метода или генератора def. Внутри возможно применение return (возврат) для возврата из функции или метода, а в случае генератора -- yield (давать).

§ оператор обработки исключений try - except - else или try - finally.

§ оператор pass ничего не делает. Используется для пустых блоков кода.

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

1.1.3 Выражения

Выражение является полноправным оператором в Питоне. Состав, синтаксис, ассоциативность и приоритет операций достаточно привычны для языков программирования и призваны минимизировать употребление скобок. Отдельно стоит упомянуть операцию форматирования для строк (работает по аналогии с printf() из С), которая использует тот же символ, что и взятие остатка от деления:

>>> print ("Здравствуй, %s!" % "Мир")

Здравствуй, Мир!

Python имеет удобные цепочечные сравнения. Такие условия в программах -- не редкость:

1 <= a < 10 and 1 <= b < 20

(a < b) and "меньше" or "больше или равно"

Встроенные типы данных, как правило, имеют особый синтаксис для своих литералов (записанных в исходном коде констант):

"строка" + 'строка' """тоже строка""" u"Юникод-строка"

True or False # булевы литералы

3.14 # число с плавающей запятой

012 + 0xA # числа в восьмеричной и шестнадцатеричной системах счисления

1 + 2j # комплексное число

[1, 2, "a"] # список

(1, 2, "a") # кортеж

{'a': 1, 'b': 'B'} # словарь

lambda x: x**2 # анонимная функция

Для списков (и других последовательностей) Python предлагает набор операций над срезами. Особенностью является индексация, которая может показаться новичку странной, но раскрывает свою согласованность по мере использования. Индексы элементов списка начинаются с нуля. Запись среза s[N:M] означает, что в срез попадают все элементы от N включительно до M не включая.

1.1.4 Имена

Имя (идентификатор) может начинаться с латинской буквы любого регистра или подчёркивания, после чего в имени можно использовать и цифры. В качестве имени нельзя использовать ключевые слова (их список можно узнать поimport keyword; print keyword.kwlist) и нежелательно переопределять встроенные имена. Имена, начинающиеся на подчёркивание, имеют специальное значение. В каждой точке программы интерпретатор имеет доступ к трём пространствам имён (то есть отображениям имён в объекты): локальному, глобальному и встроенному. Области видимости имён могут быть вложенными друг в друга (внутри определяемой функции видны имена из окружающего блока кода).

1.1.5 Строки документации

Python предлагает механизм документирования кода pydoc. В начало каждого модуля, класса, функции вставляется строка документации - docstring (англ.). Строки документации остаются в коде на момент времени исполнения, и в язык встроен доступ к документации, что используется современными IDE (например, Eclipse). В интерактивном режиме можно получить помощь, сгенерировать гипертекстовую документацию по целому модулю или даже применить doctest (англ.) для автоматического тестиро-вания модуля.

1.1.6 Интерактивный режим

Подобно Лиспу и Прологу в режиме отладки, интерпретатор Питона имеет интерактивный режим работы, при котором введённые с клавиатуры операторы сразу же выполняются, а результат выводится на экран (REPL). Этот режим интересен не только новичкам, но и опытным программистам, которые могут протестировать в интерактивном режиме любой участок кода, прежде чем использовать его в основной программе, или просто использовать как калькулятор с большим набором функций. Так выглядит общение с Питоном в интерактивном режиме:

>>> 2 ** 100 # возведение 2 в степень 100

1267650600228229401496703205376L

>>> from math import * # импорт математических функций

>>> sin(pi * 0.5) # вычисление синуса от половины пи

1.0

>>> help(sorted) # помощь по функции sorted

Help on built-in function sorted in module __builtin__:

sorted(...)

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

В интерактивном режиме доступен отладчик pdb и система помощи (вызы-вается по help()).

1.1.7 Объектно-ориентированное программирование

Язык Python построен вокруг объектно-ориентированной модели про-граммирования. Реализация ООП в Питоне является элегантной, мощной и хорошо продуманной, но вместе с тем достаточно специфической по сравнению с другими объектно-ориентированными языками. Возможности и особенности:

1. Классы являются одновременно объектами со всеми ниже приведён-ными возможностями.

2. Наследование, в том числе множественное.

3. Полиморфизм (все функции виртуальные).

4. Инкапсуляция (два уровня -- общедоступные и скрытые методы и по-ля). Особенность -- скрытые члены доступны для использования и помечены как скрытые лишь особыми именами.

5. Специальные методы, управляющие жизненным циклом объекта: конструкторы, деструкторы, распределители памяти.

6. Перегрузка операторов (всех, кроме is, '.', '=' и символьных логических).

7. Свойства (имитация поля с помощью функций).

8. Управление доступом к полям (эмуляция полей и методов, частичный доступ, и т. п.).

9. Методы для управления наиболее распространёнными операциями (истинностное значение, len(), глубокое копирование, сериализация, итерация по объекту, …)

10. Метапрограммирование (управление созданием классов, триггеры на создание классов, и др.)

11. Полная интроспекция.

12. Классовые и статические методы, классовые поля.

13. Классы, вложенные в функции и классы.

1.1.8 Функциональное программирование

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

1.2 Структура и свойства ппп алгоритмического языка Python и особенности их применения

1.2.1 Модули и прикладные пакеты Python

Программное обеспечение (приложение или библиотека) на Питоне оформляется в виде модулей, которые в свою очередь могут быть собраны в пакеты. Модули могут располагаться как в каталогах, так и в ZIP-архивах. Модули могут быть двух типов по своему происхождению: модули, написанные на «чистом» Питоне, и модули расширения (extension modules), написанные на других языках программирования. Например, в стандартной библиотеке есть «чистый» модуль pickle и его аналог на С: cPickle. Модуль оформляется в виде отдельного файла, а пакет -- в виде отдельного каталога. Подключение модуля к программе осуществляется оператором import. После импорта модуль представлен отдельным объектом, дающим доступ к пространству имён модуля. В ходе выполнения программы модуль можно перезагрузить функцией reload().

1.2.2 Стандартная библиотека в Python

Богатая стандартная библиотека является одной из важных сторон Питона. Здесь имеются средства для работы со многими сетевыми протоколами и форматами Интернета, например, модули для написания HTTP-серверов и клиентов, для разбора и создания почтовых сообщений, для работы с XML и т. п. Существуют модули для работы с регулярными выражениями, текстовыми кодировками, мультимедийными форматами, криптографическими протоколами, архивами, сериализации данных, поддержка юнит-тестирования и др. Набор модулей для работы с операционной системой позволяет писать кросс-платформенные приложения.

1.2.3 Модули расширения и программные интерфейсы

В Python уществует множество библиотек, предоставляющих интерфейс ко всем системным вызовам на разных платформах; в частности, на платформе Win32 поддерживаются все вызовы Win32 API, а такжеCOM в объёме не меньшем, чем у Visual Basic или Delphi. Количество прикладных библиотек для Python в самых разных областях без преувеличения огромно (веб, базы данных, обработка изображений, обработка текста, численные методы, приложения операционной системы и т. д.). Для Python принята спецификация программного интерфейса к базам данным DB-API 2 и разработаны соответствующие этой спецификации пакеты для доступа к различным СУБД: PostgreSQL, Oracle, Sybase, Firebird(Interbase), Informix, Microsoft SQL Server, MySQL и sqlite. На платформе Microsoft Windows доступ к БД возможен через ADO (ADOdb). Коммерческий пакет mxODBC для доступа к СУБД через ODBC для платформ Windows и UNIXразработан eGenix. Для Питона написано мно-го ORM (SQLObject, SQLAlchemy, Dejavu, Django), выполнены программные каркасы для разработки веб-приложений (Django, Pylons). Библиоте-ка NumPy для работы с многомерными массивами позволяет достичь произ-водительности научных расчётов, сравнимой со специализированными пакетами. SciPy использует NumPy и предоставляет доступ к обширному спектру математических алгоритмов (матричная алгебра - BLAS, level 1-3 и LAPACK; БПФ). Numarray специально разработан для операций с большими объёмами научных данных. WSGI - интерфейс шлюза с веб-сервером (Python Web Server Gateway Interface). Python предоставляет простой и удобный программный интерфейс C API для написания собственных модулей на языках С и С++. Такой инструмент как SWIG позволяет почти автоматически получать привязки для использования C/C++ библиотек в коде на Питоне. Возможности этого и других инструментов варьируются от автоматической генерации (C/C++/Fortran)-Python интерфейсов по специальным файлам (SWIG, pyste, SIP, pyfort), до предоставления более удобных API (boost::python, CXX и др.). Инструмент стандартной библиотеки ctypes позволяет программам Питона напрямую обращаться к динамическим библиотекам/DLL, написанным на C. Существуют модули, позволяющие встраивать код на С/C++ прямо в исходные файлы Python, создавая расширения «на лету» (pyinline, weave). Другой подход состоит во встраивании интерпретатора Python в приложения. Python легко встраивается в программы на Java, C/C++, Ocaml. Взаимодействие Python-приложений с другими системами возможно также с помощью CORBA,XML-RPC, SOAP, COM. С помощью Pyrex возможна ко-мпиляция Python-подобного языка (добавлена возможность типизации) в эквивалентный С-код и связывание с внешними модулями. Экспериментальный проект Shedskin предполагает создание компилятора для трансформации неявно типизированных Python программ в оптимизированный С++ код. Python и большинство библиотек к нему бесплатны и поставляются в исходных кодах. В отличие от многих открытых систем, лицензия никак не ограничивает использование Python в коммерческих разработках и не налагает никаких обязательств кроме указания авторских прав.

1.2.4 Графические библиотеки

С Питоном поставляется библиотека tkinter на основе Tcl/Tk для создания кроссплатформенных программ сграфическим интерфейсом. Существуют расширения, позволяющие использовать все основные GUI библиотеки - wxPython, основанное на библиотеке wxWidgets, PyGTK, PyQt и PySide и другие. Некоторые из них также предоставляют широкие возможности по работе с базами данных, графикой и сетями, используя все возможности библиотеки, на которой основаны. Для создания игр и приложений, требующих нестандартного интерфейса, можно использовать библиотеку Pygame. Она также предоставляет обширные средства работы с мультимедиа: с её помощью можно управлять звуком и изображениями, воспроизводить видео. Предоставляемое pygame аппаратное ускорение графики OpenGL имеет более высокоуровневый интерфейс по сравнению с PyOpenGL, копирующей семантику С-библиотеки для OpenGL. Есть также PyOgre[, обеспечивающая привязку к Ogre - высокоуровневой объектно-орие-нтированной библиотеке 3D-графики. Кроме того, существует библиотека pythonOCC, обеспечивающая привязку к среде 3D-моделирования и симуляции OpenCascade. Для работы с растровой графикой используется библиотека Python Imaging Library.

1.2.5 Интроспекция

Python поддерживает полную интроспекцию времени исполнения. Это означает, что для любого объекта можно получить всю информацию о его внутренней структуре. Применение интроспекции является важной частью того, что называют pythonic style, и широко применяется в библиотеках и фреймворках Python, таких как PyRO, PLY, Cherry, Django и др., значи-тельно экономя время использующего их программиста.

1.2.6 Обработка исключений

Обработка исключений поддерживается в Python посредством операто-ров try, except, else, finally, raise, образующих блок обработки исключения. В общем случае блок выглядит следующим образом:

try:

# Здесь код, который может вызвать исключение

raise Exception("message") # Exception, это один из #стандартных типов исключения (всего лишь класс),

# может использоваться любой другой, в том числе свой

except (Тип исключения1, Тип исключения2, …), Переменная:

# Код в блоке выполняется, если тип исключения совпадает с # одним из типов Тип исключения1, Тип исключения2, …) или #является наследником одного из этих типов.

except (Тип исключения3, Тип исключения4, …), Переменная:

# Количество блоков except не ограниченно

raise # Сгенерировать исключение "поверх" полученного; #без параметров - повторно сгенерировать полученное

except:

# Будет выполнено при любом исключении, не обработанном #типизированными блоками except

else: # Код блока выполняется, если не было исключений.

finally:

# Будет исполнено в любом случае, возможно после соответствующего # блока except или else

1.2.7 Итераторы

В программах на Питоне широко используются итераторы. Цикл for мо-жет работать как с последовательностью, так и с итератором. Все коллекции, как правило, предоставляют итератор. Объекты определённого пользова-телем класса тоже могут быть итераторами. Модуль itertools стандартной библиотеки содержит много полезных функций для работы с итераторами.

1.2.8 Генераторы

Генераторы - это функции, сохраняющие внутреннее состояние: значения локальных переменных и текущую инструкцию. Генераторы могут использоваться как итераторы для структур данных и для ленивых вычис-лений. При вызове генератора функция немедленно возвращает объект-итератор, который хранит текущую точку исполнения и состояние локальных переменных функции. При запросе следующего значения (посредством метода next(), неявно вызываемого в for цикле) генератор продолжает исполнение функции от предыдущей точки останова до следующего оператора yield или return. В Python 2.4 появились генеаторные выражения - выражения, дающие в результате генератор. Генераторные выражения позволяют сэкономить память там, где иначе требовалось бы использовать список с промежуточными результатами:

>>> sum(i for i in xrange(1, 100) if i % 2 != 0)

2500

В этом примере суммируются все нечётные числа от 1 до 99.

1.2.9 Декораторы

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

def myWonderfulMethod():

return "Некоторый метод"

myWonderfulMethod = staticmethod(myWonderfulMethod)

и с помощью декоратора:

@staticmethod

def myWonderfulMethod():

return "Некоторый метод"

2. Особенности применения ППП Python(x,y) с использованием его различных вычислительных модулей в учебном процессе при преподавании различных курсов естественных наук

Python(x, y) - это набор библиотек и программного обеспечения для числен-ных расчетов, анализа и визуализации данных на основе Python. IDE представлены IDLE, Eclipse и Spyder, основой GUI избран Qt. Главной особенностью этого ППП являются модули, относящихся к самому Python. Во время установки можно выбрать только то, что нужно, поэтому стоит разобраться что к этому нужному отнести. Кроме того, знание этих модулей может очень пригодиться, поскольку их можно установить и по отдельности. Порядок следования модулей повторяет порядок оригинальной страницы и список чекбоксов установки.

2.1 Составные части ППП Python(x,y) в его прикладных пакетах для компьютерного моделирования

Python - стандартные библиотеки, сейчас используется более стабильная версия - Python 2.6.7.

Spyder (Scientific Python Development Environment) - IDE для интеракти-вных вычислений и визуализации данных.

formlayout - создание форм диалогов/виджетов для редактирования каких-то вводимых параметров без написания GUI-кода.

Ниже приведем список основных модулей и их свойств в ППП Python(x,y):

· PyQwt - привязка Python к библиотеке Qwt для построения двумерной графики на Qt.

· wxPython - альтернативная GUI библиотека. Хотя очевидно, что здесь всюду продвигается PyQt, она нужна для популярного набора программ ETS, а также отладчика winpdb.

· NumPy - популярный модуль для высокоэффективной работы с многомерными массивами (ядро модуля SciPy).

· SciPy - содержит модули для математической оптимизации, интегрирования, специальных функций, обработки сигналов, обработки изображений, генетических алгоритмов, решения обыкновенных дифференциальных уравнений и многих других задач.

· numexpr -- быстрое вычисление выражений для элементов массивов с помощью векторной виртуальной машины.

· guidata - автоматическое создание GUI для удобного ввода данных и их показа.

· guiqwt - инструменты быстрого создания GUI, более объемная реализация идей предыдущего.

· IPython - замена стандартного Python shell, обладающая расширенными возможностями.

· SetupTools - библиотека, позволяющая автоматически загружать, собирать, устанавливать и управлять пакетами языка Python, находящимися в репозитории модулей PyPI (Python Package Index) подобно пакетным менеджерам.

· mx -- eGenix.com mx Distribution, содержит модули для упрощения обработки данных различных типов: mxDateTime (преобразование и парсинг различных форматов дат и времени), mxTextTools (парсинг текста и поисковые алгоритмы), mxProxy, mxBeeBase (управление небольшими базы данных), mxURL, mxUID, mxStack, mxQueue и mxTools.

· SymPy -- математическая библиотека для символьных вычислений.

· cvxport - библиотека выпуклой оптимизации.

· PyWavelets -- модуль вейвлет-преобразований.

· scikits.timeseries -- набор инструментов для анализа временных рядов.

· NetworkX -- создание, манипуляция и исследования структур, динамики и функций сложных сетей, графов.

· PyTables - пакет основан на HDF5 библиотеке управления большими иерархическими структурами данных.

· h5py - интерфейс для HDF5 файлов (в отличие от PyTables, h5py обеспечивает прямой доступ к полной библиотеке HDF5 С).

· pyhdf - интерфейс для файлов HDF4.

· netcdf4 - работа с netCDF4 (Network Common Data Form), набором библиотек программного обеспечения и машинно-независимого фор-мата данных, которые поддерживают создание, доступ и обмен ориентированных на массивы научных данных.

· GDAL (Geospatial Data Abstraction Library) - работа с данными о геопространстве.

· pyvisa - контроль всех видов измерительных устройств с помощью различных шин (GPIB, RS232, USB или чуть больше, если обернуть их в try-except ImportError):

· xlrd -- извлечение данных из файлов Microsoft Excel, статья на хабре.

· xlwt -- создание файлов электронных таблиц, совместимых с Microsoft Excel, OpenOffice.org Calc и Gnumeric.

2.2 Среда программирования - модули Python(x,y) и особенности их назначений

Приведем ниже список важнных с точки зрения программной среды модулей ППП Python(x,y) с их краткой характеристикой основных свойств:

· MDP - модульный набор инструментальных средств для обработки данных (набор управляемых и самообучающихся алгоритмов).

· PP (Parallel Python) - параллельное выполнение кода Python на системах с несколькими процессорами или ядрами.

· pylint - анализ кода на поиск ошибок и плохих мест, достаточно запустить из командной строки pylint example.py и pylint выведет большую сводку того, что думает о вашем коде.

· winpdb - интерактивный отладчик программ.

· simplejson - простой, быстрый JSON (JavaScript Object Notation) кодер / декодер.

· py2exe - инструмент, который преобразует Python сценарии в автономные.

· исполняемые файлы Windows, о нем немногонаписано на хабре.

· PyParallel - библиотека доступа к параллельному порту.

· PySerial - библиотека доступа к последовательному порту.

· Cython - язык, основанный на Python, позволяющий более плотно использовать скоростные возможности С.

· psyco - модуль, позволяющий повысить скорость выполнения кода на Python.

· SendKeys - Python модуль для Windows, который может отправить одно или несколько нажатий клавиш или комбинации клавиш в активное окно.

· pywinauto - набор модулей для автоматизации Microsoft Windows GUI (действия мыши и клавиатуры).

2.3 Визуализация и научная графика: - модули Python(x,y) и особенности их назначений

Ниже приведем список очень важных модулей в ППП Python(x,y) и их свойств для визуализации научных вычислений:

· Matplotlib - графическая 2D и псевдо 3D библиотека, имеющая во многих случаях синтаксис близкий к MATLAB, что позволяет опытным пользователям последнего быстро переучиваться; у Matplotlib имеется обширная галерея примеров получаемых изображений с сопутствующим кодом, что хорошо помогает войти в курс дела.

· pyopencv - работа с библиотекой алгоритмов компьютерного зрения OpenCV.

· gnuplot - еще один распространенный пакет для построения кривых и поверхностей. PIL (Python Imaging Library) - работа с растровой графикой различных форматов, чтение и запись, конвертирование, редактирование и так далее.

· PyOpenGL - работа с OpenGL, известного интерфейса для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

· ETS (Enthought Tool Suite) - большой самостоятельный пакет программ, в котором наиболее интересным, наверное, является средство 3D-визуализации Myavi.

· pydicom - обработка медицинских изображений стандарта DICOM.

· ITK - программное обеспечение для обработки изображений из области медицины. VTK - программное обеспечение для визуализации, 3D графики, объемной прорисовки и обработки изображений.

· VPython - создание трехмерных интерактивных моделей физических систем.

· ReportLab - создание pdf-документов.

· rst2pdf - инструмент для преобразования reStructuredText в PDF с использованием ReportLab.

· docutils - текстовый процессор перевода документации из простого текста в полезные форматы, такие как HTML, XML или LaTeX (включая reStructuredText).

· pygments - подсветка исходного кода, понимает большинство используемых языков, умеет выдавать на выходе html, картинки или LaTeX.

· Sphinx - инструмент для генерации документации, использующий в качестве языка разметки reStructuredText; с помощью Sphinx оформлена и документация самого Python, и самого Sphinx, и многих других библиотек, входящих в Python(x, y)

· vitables -- графический инструмент для просмотра и редактирования файлов в HDF5 и PyTables форматах

3. Примеры применения в учебном процессе по python совместно с научными ППП Python(x,y) для проведения лабораторных работ по компьютерному моделированию

Python используется во многих университетах США (MIT) и Европы в образовании и научных исследованиях. В последнее время Python все больше используется в большинстве известных крупных компаниях и организациях с мировыми именами (Google, YouTube, Nokia, NASA и т.п.). Язык программирования Python обладает ясным и понятным синтаксисом, и потому легко учится и хорошо подходит для введения в программирование. Это позволит нам не отвлекаться от решаемой задачи на особенности языка и их объяснение, позволит естественным образом последовательно вводить новые инструменты. Язык близок с MATLAB и хорош для программирования математических вычислений особенно для компьютерного моделирования. К тому же Python умеет работать с такими языками как Fortran, C и С++, которые уже широко используются в научных расчетах. Кроме всего прочего, большинство продуктов и модулей, написанных на Python, распространяются бесплатно. Мы в этой главе приведем различные примеры из математики, физики, биологии, экономике и т.д. В свою очередь, знание языка Python или умение программировать на любом другом языке совсем не предполагается, что и язык изучается одновременно с решением задач. Знать английский язык, хотя бы на базовом уровне - основное требование. Программирование фокусирует свое внимание исключительно на особенностях языка программирования. Однако, чтобы писать программы, надо думать как программист и прикладник в какой то определенной области. Это означает, что надо находить решение на поставленную задачу. Мы приведем примеры задач, в некоторых случаях в виде программных кодов на языке Python (глава 3.5, моделирование методом Монте-Карло). Надо помнить, что нельзя научиться программировать, только читая тексты программ и пояснения к ним: так, как самое важное - это практика. Этого в идеальном случае можно достичь на лабораторных работах по компьютерному моделированию при составлении собственных прикладных программ.

3.1 Компьютерное моделирование в механике

Особенно хорошо в ППП Python(x,y) представленны специальные пакеты для компьютерного моделирования? Такие, как Matpltlib и Mayavi. Справа на верхнем рисунке мы видим иллюстрацию крмпьютерного моделирования двузвенного физического маятника. Надо принять во внимание, что эта задача сама по себе достаточно сложна даже для университетского образования. Математическая модель этой системы описывается системой из четырех нелинейных обыкновенных дифференциальных уравнений с постоянными коэффициентами. Для решения этой задачи Коши численно применяется алгоритм метода Рунге-Кутты 4-го порядка (в ППП Python(x,y) для этого используются следующие модули: SciPy, NumPy, Matplotlib и Mayavi). Эта стандартная процедура входит в пакет NumPy. На рисунке справа ниже показана иллюстрация компьютерного моделирования не менее сложной задачи: исследования гироскопи-ческого эффекта вращающегося колеса, одна сторона оси вращения которого прикреплена упругой пружиной к неподвижной опоре.

3.2 Компьютерное моделирование в физике

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

3.3 Компьютерное моделирование в химии

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

3.4 Компьютерное моделирование в биологии и медицине

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


Подобные документы

  • Понятие и характеристики облачных технологий, модели их развертывания, технологические процессы, аспекты экономики и критика. Язык программирования Python, оценка функциональности, сравнение с аналогами. Управление облаком в Python на примере libcloud.

    курсовая работа [43,0 K], добавлен 08.06.2014

  • Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.

    реферат [51,9 K], добавлен 18.01.2015

  • Об'єктно-орієнтована мова Python - сучасна мова програмування, проста у вивченні та використанні. Наявність повної стандартної бібліотеки. Середовища програмування на Python. Механізм функціонування інтерпретатора. Колекції даних, комбіновані оператори.

    презентация [753,2 K], добавлен 06.02.2014

  • Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.

    курсовая работа [3,1 M], добавлен 27.02.2015

  • Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.

    курсовая работа [160,3 K], добавлен 03.12.2014

  • Разработка программ средствами библиотеки tkinter на языке Python. Изучение основы работы в текстовом редакторе Word. Описание авторской идеи анимации. Использование базовых команд и конструкций. Процесс проектирования и алгоритм разработанной программы.

    контрольная работа [125,3 K], добавлен 11.11.2014

  • Исторические аспекты развития линии "Алгоритмизация и программирование" в старшей школе. Изучение языка программирования Python с применением дистанционных курсов Coursera. Методическая система обучения программированию с использованием Coursera.

    дипломная работа [808,8 K], добавлен 13.12.2017

  • Представление полиномов в виде кольцевых списков и выполнение базовых арифметических действий над ними. Реализация алгоритмов сложения, умножения и вычитания полиномов класса List на языке программирования Python 2.7. в интегрированной среде Python IDLE.

    курсовая работа [228,1 K], добавлен 11.01.2012

  • Анализ основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области. Понятие и механизм инкапсуляции. Фиксирование информационной работы отеля. Диаграмма классов. Реализация на языке Python.

    курсовая работа [227,6 K], добавлен 14.05.2017

  • Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.

    реферат [79,0 K], добавлен 23.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.