Научная статья на тему 'Обзор языка программирования Python для решения задач математического моделирования'

Обзор языка программирования Python для решения задач математического моделирования Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
3598
576
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ / PYTHON / ЯЗЫК ПРОГРАММИРОВАНИЯ / БИБЛИОТЕКИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кирдяев М. М.

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

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

Текст научной работы на тему «Обзор языка программирования Python для решения задач математического моделирования»

Рисунок 1 - Собственные формы колебаний для некоторых вариантов крепления ПУ

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

С использованием полученных значений

K

а

а

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

Статья подготовлена в рамках реализации проекта «Разработка методов и средств создания высоконадежных компонентов и систем бортовой радиоэлектронной аппаратуры ракетно-космической и

транспортной техники нового поколения»

шение № 15-19-10037 от 20 мая 2015 г.) нансовой поддержке Российского научного

также заданных электрической схемой значений массы ЭРЭ и требуемой площади монтажного поля автоматически находятся резонансные частоты ПУ по формуле (1) и на их основе строятся морфологические таблицы для выбора вариантов схем крепления и параметров печатных плат безрезонансных ПУ с заданным коэффициентом отстройки.

ЛИТЕРАТУРА

1. Маквецов Е.Н., Тартаковский А.М. Механические воздействия и зашита радиоэлектронной туры: Учебник для вузов / Е.Н. Маквецов, А.М. Тартаковский, Москва: Радио и связь, 1993.

2

А.П.

3

Учеб

4

5

ение

(Согла-при фи-фгнд-.

аппара-вузов /

Ненашев А.П. Конструирование радиоэлектронных средств: Учебник для радиотехн. спец. Ненашев, М.: Высш. школа, 1990. Талицкий Е.Н. Защита электронных средств от механических воздействий. Теоретические основы: пособие / Владим. гос. ун-т. Владимир, 2001. 256 с.

Карпушин В.Б. Вибрации и удары в радиоаппаратуре. М. «Советское радио», 1971г. Под ред. Биргер И.А., Пановко Я.Г. Прочность, устойчивость, колебания, М., изд. Машиностро-1968г.

6. Фролов С.И. Разработка методики конструирования РЭА с учетом комплексного воздействия электромагнитного поля и вибрации. Диссертация на соискание ученой степени кандидата технических наук. М., МАТИ им.К.Э. Циолковского,1974г.

7. Токарев М.Ф., Талицкий Е.Н., Фролов В.А. Механические воздействия и защита радиоэлектронной аппаратуры. М. «Радио и связь», 1984г.

УДК 004.4'233 Кирдяев М.М,

ФГБОУ ВО «Пензенский государственный университет», Пенза, Россия

ОБЗОР ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON ДЛЯ РЕШЕНИЯ ЗАДАЧ МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ

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

Математическое моделирование, Python, язык программирования, библиотеки.

Введение

В настоящее время расчёт физических моделей разрабатываемых изделий невозможен без ЭВМ. Это, в свою очередь, заставляет выбирать оптимальный язык программирования для написания программ обработки данных. Данная статья посвящена такому языку программирования как Python, и анализу его

достоинств и недостатков при использовании в инженерной практике и математическом моделировании.

Основная часть

Ру^оп-это интерпретируемый, интерактивный, объектно-ориентированный язык сценариев, предназначенный для решения самых разнообразных задач.

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

Интерактивность означает, что в РуШопвозможна запись кода непосредственно в оболочке интерпретатора, с немедленным выполнением команд.

Словосочетание «объектно-ориентированный

язык сценариев» смешивает поддержку ООП с общей ориентацией на сценарии.

Теперь, когда определение языка РуШопбыло получено, выявим основные преимущества и недостатки языка:

Преимущества:

Удобочитаемость кода, легкость в обслуживании и повторном использовании.

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

Скорость разработки кода на Python значительно выше, чем на компилирующих или строго типизированных языках вроде C++, Java. Для сравнения, код на РуШопможет занимать до трети объёма от C++ или Java. C+ +

ftinclude <iostream> using namespace std; int main(void) { long r = 0;

for (int i = 0; i< 10000; i++) { for (int j = 0; j < 10000; j++) { r = (r + (i * j) % 100)

% 47; }

}

cout« "answer:" « r «endl;

}

Python

def test(): r = 0

for i in range(0, 10000): for j in range(0,

(r +

j.

100)

47

Операции над формой. Сортирование и выборку. Дискретные преобразования Фурье. Операции базовой линейной алгебры. Базовые статистические операции. »>fromnumpyimport * »> а = arange(15).reshape(3, 5) »>а

аггау([[ 0, 1, 2, 3, 4], [ 5, б, 7, 8, 9], [10, 11, 12, 13, 14]]) »>а.shape (3, 5) »>a.ndim 2

»> a.dtype.name 'int32' »>a.itemsize

4

»>a.size 15

»>type(a) numpy.ndarray »> b = array(

7,

10000): r

test()

print("answer:", r)

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

Интеграция. Язык способен взаимодействовать с другими языками. Например, Ру^опможет вызывать функции из C/C++, сам вызываться ими.

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

Недостатки:

1) Скорость выполнения расчётов практически во всех случаях уступает компилирующим языкам, так как собственный код выполняется медленнее сгенерированного машинного.

Существующие разработки, предназначенные для выполнения инженерных расчётов.

Сила языка во многом определяется количеством созданных под него библиотек, и Python3flecb занимает лидирующие позиции, уступая лишь Си Java.

Полезные библиотеки

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

NumPy

NumPy считается необходимым для проведения инженерных и математических расчётов, так как добавляет BPython многомерные матрицы и операции над ними, которые отсутствуют в "4HCTOM"Python (в стандартной библиотеке используются списки для работы с массивами, они более универсальны, но имеют ограниченный набор математических операций над ними).Кроме того, проводящиеся вычисления выполняются крайне быстро.

Список операций, доступных над массивами, включает в себя:

Математические, логические операции.

»>b

array([6, 7, 8]) »>type(b) numpy.ndarray SymPy

Библиотека, предназначенная для работы с символьной математикой, претендующая на становление полноценной компьютерной алгебраической системой наравне с Mathcad, Maple.

Добавляет в Ру^опсимвольные переменные, с помощью которых возможны такие операции, как: Раскрытие скобок, упрощение выражений. Операции с дробями. Вычисление пределов.

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

»> import sympy

»> # Создание символьных переменных »> х = sympy.Symbol('x')

»> у = sympy.Symbol('y')

»># Простейшие математические операции »> print (х + х + у*у+1)

1 + 2*х + у**2

»># В модуле SymPy предусмотрена специальная функция pprintQ для более наглядного вывода символьных выражений

>» sympy. pprint (х + х + у*у + 1)

2

1 + 2*х + у

»> sympy.pprint(sympy.lntegral(x**2, х))

/ I

I 2

| х dx

1

/

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

»> # Раскрытие скобок »>z = (х + у) ** 2 »> sympy.pprint ( z.expand())

2 2

2*х*у + х + у

»> #Разложение на простые дроби »> z = 1/( (х+2)*(х+1))

»> sympy.pprint (sympy.apart (z, x)) 1 1 + x 2 + x Pandas

Библиотека, обрабатывающая данные. С помощью неё удобно работать с таблицами и большими объёмами данных,загруженных из различных источников, таких как:Ехсе1, HTML, SQL. По функциональности РапбаБСхож с Excel, то есть может довольно свободно обрабатывать табличные данные и визуализировать их. MatPlotLib

Библиотека, ориентированная на работу с графиками и визуализацию данных.

Добавляет в Python возможностипостроения: Графиков Гистограмм Спектров мощности Разбросы участков, и т.д.

Рисунок 1 - пример работы MatPlotLib

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

IPython

Интерактивная оболочка, обладающая расширенным синтаксисом. Упрощает разработку кода и добавляет такие функции, как:

Дополнительный синтаксис.

Интерактивные параллельные вычисления.

Визуализация данных.

Подсветка кода.

SciPy

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

Кластерные алгоритмы.

Физические и математические константы.

Быстрое преобразование Фурье.

Уравнения интегрирования и дифферинцирования.

Интерполяция.

Линейная алгебра.

Оптимизация, и т.д.

Кроме того, возможностиБаРу можно расширить за счёт таких инструментов, как IPython, Mat-PlotLib, OpenOpt и ещё много чем[1].

Anaconda

Бесплатный инсталлятор языка Python, включающий огромное количество библиотек для физических и математических расчётов.В него входят все вышеперечисленные библиотеки и ещё больше 330

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

Python(x, у)

Научно-ориентированный дистрибутив, предназначенный для расчётов, анализа и визуализации данных. Основан на языке Python, Spyder и Qt.

Конечно, предоставленный список далеко не полный, но он даёт представление об общем развитии в этом направлении.

Заключение

Проанализировав всю информацию, можно сделать вывод, что Python обладает большим потенциалом для написания программ, посвящённым математическому моделированию. Его особенности позволяют создать кроссплатформенную, легко изменяемую программу в сравнительно короткие сроки. А репутацию медленного языка перекрывает большое количество специально написанных для инженерных и математических расчётов оптимизированных библиотек, по скорости работы сопоставимые с C++ и Java. Другими словами, начав работать на Python, вы можете в короткие сроки создать рабочую программу, которая даст вам общее видение ситуации и размер предстоящих работ, что поможет вам в дальнейшей оптимизации программы. Также, если производительности будет не хватать, всегда можно заменить медленный участок кода с помощью быстрого языка, такого как С, это возможно за счёт больших возможностей интеграции Python с другими языками.

ЛИТЕРАТУРА

1. SciPy v0.17.0 Reference Guide - http://docs.scipy.org/doc/scipy/reference/tutorial/gen-eral.html

2. 0 Minutes to pandas - pandas 0.18.0 documentation - http://pandas.pydata.org/pandas-

docs/stable/lOmin.html

3. Introduction — IPython 4.2.0 documentation - http://ipython.readthedocs.io/en/stable/over-view.html

4. Learn more about Anaconda - https://www.continuum.io/documentation

5. Матюшкин Лёва, Python(x, у) - https://habrahabr.ru/post/113065/

6. Python(x,y) - the scientific Python distribution - https://python-xy.github.io/

7. Обзор математических OpenSorce библиотек для языка программирования Python - https://habra-habr.ru/sandbox/19669/

8. Математический Python - http://jenyay.net/Programming/PyMath

9. Игнатьев А. А., Субоч К. А. Использование IPython в качестве интерактивной среды математического моделирования процессов в машиностроении // Молодой ученый. — 2015. — №21.2. — С. 25-27. -http://www.moluch.ru/archive/101/23656/

10. Python -Обзор - http://pythonicway.com/python-overview

11. Производительность C++ vs. Java vs. РНР vs. Python. - https://habrahabr.ru/post/66562/

i Надоели баннеры? Вы всегда можете отключить рекламу.