Введение в научный Python-1. Введение в научный Python
Скачать 6.2 Mb.
|
1 Доля П.Г. Харьковский Национальный Университет Факультет математики и информатики 2016 г. Введение в научный Python. Python представляет собой интерпретируемый объектно-ориентированный язык и интерактивную среду для разработки программ. С его помощью можно разрабатывать приложения с графическим интерфейсом, работать с базами данных, создавать Wеb-сайты и делать многое другое. Язык программирования Python обладает ясным и понятным синтаксисом и хорош для программирования математических вычислений. В некотором смысле Python это мощный калькулятор. Даже если вы только поверхностно с ним знакомы, вы можете использовать его для выполнения невероятных вещей. Python реализован практически во всех операционных системах, и большинство его модулей распространяется бесплатно. В этом пособии мы бегло познакомимся с основными конструкциями языка и наиболее часто используемыми функциями из стандартной библиотеки. Мы не будем пытаться охватить всѐ – недостающие факты вы легко найдете в справочной документации. Основное внимание будет уделено рассмотрению пакетов, используемых в научных вычислениях – numpy, scipy, matplotlib и sympy . В них реализованы классические численные алгоритмы решения уравнений, задач линейной алгебры, вычисления определенных интегралов, аппроксимации, решения дифференциальных уравнений и их систем. Пакет matplotlib обладают хорошо развитыми возможностями визуализации двумерных и трехмерных данных. Основой пакетов NumPy и SciPy являются численные расчеты, но и символьные вычисления, основанные на библиотеке SymPy, Python умеет делать хорошо. Решение уравнений и систем, интегрирование и дифференцирование, вычисление пределов, разложение в ряд и суммирование рядов, поиск решения дифференциальных уравнений и систем, упрощение выражений – вот далеко не полный перечень «аналитических» возможностей пакета sympy. Пособие предназначено в первую очередь для знакомства с математическими возможностями Python. Читайте текст и выполняйте примеры. Во многих случаях все пояснения дает сам код решения задачи. Надеемся, что по окончании выполнения последнего примера вы начнете применять Scientific Python для решения ваших задач. Большая часть, изложенного в пособии материала, доступна студентам младших курсов физико–математических факультетов университетов, а также студентам технических вузов, прослушавшим курс высшей математики. Сложности могут возникнуть только при чтении параграфов, содержащих решение прикладных задач, поскольку они предполагают некоторое знакомство с соответствующими областями знаний. 2 Оглавление 1. Введение ............................................................................................................... 2 1.1 Первые шаги. Числа, переменные, операции, выражения. ....................... 3 1.2 Среды разработки и выполнения Python программ. ................................ 13 2. Основные языковые конструкции Python ....................................................... 31 2.1 Типы данных и операторы управления ..................................................... 31 2.2 Списки, кортежи, словари и строки .......................................................... 37 2.3 Функции, модули и пакеты ........................................................................ 55 3. Массивы и линейная алгебра ........................................................................... 65 3.1 Массивы ....................................................................................................... 66 3.2 Элементы линейной алгебры .................................................................... 96 4. Графические возможности ............................................................................. 107 4.1 Двумерные графики matplotlib ................................................................. 107 4.2 Трехмерные графики matplotlib ............................................................... 142 4.3 Анимация ................................................................................................... 160 4.4 Графические функции модуля mpmath ................................................... 174 5. Символьные вычисления ................................................................................ 177 5.1 Основы символьных вычислений ............................................................ 177 5.2 Алгебраические вычисления .................................................................... 184 5.3 Реализация основных понятий математического анализа .................... 193 5.4 Графические возможности пакета SymPy .............................................. 200 5.5 Символьное решение дифференциальных уравнений .......................... 208 5.6 Совместное использование символьной и численной математики ..... 214 6. Научные вычисления с пакетом SciPy .......................................................... 222 6.1 Численное интегрирование. ..................................................................... 222 6.1.1 Вычисление интегралов. .................................................................... 222 6.1.2 Вычисление длин, площадей и объемов. ......................................... 234 6.2 Обыкновенные дифференциальные уравнения и системы. .................. 239 1. Введение Вначале вы должны установить программную среду на свой компьютер. Полагаем, что вы уже это сделали. Если нет, то ее можно взять с сайта разработчиков https://www.python.org/downloads/. Выберите на этой странице желаемую версию Python и скачайте инсталляционный пакет, соответствующий вашей операционной системе (он бесплатный). Запустите скачанный файл и следуйте инструкциям мастера установки. Затем вам потребуется установить научные библиотеки. Их коллекция называется SciPy (Scientific Library for Python) и установка этой библиотеки потребует от вас некоторых усилий. Другой способ установить «научный» Python состоит в использовании бесплатного дистрибутива Anaconda (https://www.continuum.io/downloads). Это самый простой способ установить сразу Python и научные библиотеки. Кроме всего прочего, вы получите неплохую интегрированную оболочку Spyder предназначенную для разработки и выполнения программ. 3 Полагаем, что вы установили пакет Anaconda или Python с научными библиотеками numpy, scipy, matplotlib и sympy, или обе среды сразу (для обучения последний вариант более предпочтительный). Далее мы будем полагать, что вы работаете в одной из версий ОС Windows. С обычным Python–ом можно работать по–разному. Один способ состоит в использовании командной строки, когда команды и программы запускаются на выполнение из консольного окна. Однако для изучения языка, а также создания и редактирования текстов программ, лучше использовать среду разработки IDLE, поставляемую вместе с дистрибутивом Python. Она состоит из интерпретатора команд, называемого Python Shell, и специального текстового редактора IDLE для Python. В окне интерпретатора Python Shell можно выполнять те же команды, что и в консоли. Кроме интерпретатора Python Shell среды IDLE, многие разработчики пользуются интерактивной оболочкой IPython. Она предоставляет расширенный список возможностей по сравнению со стандартным Python shell. Другой удобной средой для выполнения научных исследований является IPython Notebook (переименованной в Jupyter Notebook). Она выполняется в web–браузерах и по своим функциональным возможностям напоминает оболочку системы Mathematica. Последние версии IPython и Jupyter Notebook вы найдете среди программ, установленных вместе с пакетом Anaconda. При разработке больших Python программ, состоящих из нескольких файлов и классов, использование интерпретатора командной строки не всегда удобно. Большинство программистов пользуется какой–либо интегрированной средой разработки. Одной из наиболее распространенных программ является Spyder – бесплатная среда разработки и выполнения Python программ, созданная специально для выполнения научных расчетов. Она содержит редактор, предназначенный для разработки Python программ, а также оба интерпретатора Python Shell и IPython, любой из которых можно использовать для выполнения команд и программ. Spyder входит в состав пакета Anaconda. Установив пакет Anaconda, вы получите все библиотеки и инструменты, необходимые для работы с нашим пособием. Имейте в виду, что новые версии языка Python и оболочки, предназначенные для разработки его программ, выпускаются довольно регулярно. Поэтому ко времени чтения вами нашего пособия наверняка появятся новые версии языка и его оболочек. В нашем пособии мы будем опираться на стандарт языка Python 3.4. 1.1 Первые шаги. Числа, переменные, операции, выражения. Если вы установили стандартный Python в Windows, то у вас в меню Пуск– Все Программы должна появиться папка примерно следующего содержания. 4 Если запустить программу Python 3.4(command line – 64 bit), то Python запустится внутри консольного окна. Рис. 1.1 Внешний вид Python в окне консоли. В нем можно вводить команды и наблюдать результаты вычислений. Например, после знака >>> введите 3+5 и нажмите клавишу Enter . Вы увидите: >>> 3+5 8 Значок „>>>‟ является символом приглашения на ввод команд. Инструкции нужно вводить справа от него (без пробелов). Для выполнения команды следует нажать клавишу Enter . Если инструкция возвращает значение, то на следующей строке сразу отобразится результат. Затем отображается приглашение для ввода новой команды. В стандартный дистрибутив Python входит интегрированная среда разработки IDLE, в которой редактировать и выполнять программы удобнее, чем в консоли. Вы можете запустить среду разработки IDLE, пройдя по следующему пути: Пуск → Все программы → Python 3.X → IDLE(Python 3.X GUI). На экране появляется окно с заголовком Python 3.X Shell (вместо 3.X будет стоять номер вашей версии). Оно предназначено для ввода команд и отображения результатов вычислений. На первых порах мы будем работать в нем. Рис. 1.2 Внешний вид окна Python Shell 5 Аналогично предыдущему, наберите в окне Python Shell после символа >>> команду 2+2 и нажмите клавишу Enter . Вы увидите: >>> 2+2 4 Здесь также значок >>> является символом приглашения на ввод команд. Возможности Python Shell по выполнению Python программ аналогичны консольному варианту, но бо̀льшие при редактировании и создании программ. Если вы установили на свой компьютер только пакет Anaconda, то среды разработки IDLE в нем нет, но имеется интегрированная среда разработки и выполнения программ Spyder. Мы сейчас кратко расскажем, как ее использовать вместо IDLE. В Windows Spyder вы найдете в меню Все программы–Anaconda3(64– bit)-Spyder . Его главное окно разделено на несколько панелей. Если вы не меняли настроек, то слева у вас будет расположено окно редактора, а в правой нижней части будут расположены одна над другой панели двух консолей: Python и IPython (Interactive Python). Команды можно выполнять в любой из них. Нас сейчас интересует консоль Python, работа в которой подобна работе в Python Shell. Настроим Spyder для работы преимущественно с Python консолью. Для этого в правой нижней части окна Spyder найдите и захватите мышью строку панели с заголовком Console. Перетащите панель влево вверх, расположив ее поверх редактора. Затем, если нужно, переместите правую границу окна консоли. Окно Spider примет следующий вид. Рис. 1.3 Внешний вид окна Spyder Не обращайте пока внимание на другие панели Spyder. О них мы расскажем тогда, когда вы больше будете знать о языке программирования Python. 6 В этом параграфе мы будем предполагать, что вы работаете в интегрированной среде IDLE, но если ее у вас нет, то будем полагать, что примеры вы выполняете в консоли Spyder. Для инструкций языка Python это не имеет значения. Небольшие различия между Python Shell и консолью Spyder имеются при редактировании команд. В тех местах этого параграфа, в которых описываются способы ввода инструкций (а не сами инструкции), мы будем подразумевать команды редактирования Python Shell. Если вы пользуетесь консолью Spyder, то вы должны самостоятельно проверить, что эти команды работоспособны, или по справочной системе узнать их аналоги. В любой из двух описанных нами сред после ввода команды следует нажимать клавишу Enter . Если инструкция возвращает значение, то на следующей строке отображается результат, а затем появляется приглашение >>> для ввода новой команды. Начнем знакомиться с языком Python. В нашем пособии команды (то, что мы вводим) будем записывать шрифтом Arial , а результат их выполнения – шрифтом Courier New. Обычно одна команда Python вводится на отдельной строке после знака приглашения „>>>‟. Но можно набирать несколько команд в одной строке, тогда их нужно разделять символом „;‟ (точка с запятой). >>> x=5;y=10; x+y # Три инструкции на одной строке 15 Текст, стоящий после символа #, является комментарием. Комментарии предназначены для вставки пояснений в текст программы, и интерпретатор полностью их игнорирует. В языке Python имеется только однострочный комментарий, который начинается символом #. Строки выводятся функцией print(...). >>> print("Hello world!") Hello world! Строка – это набор символов, заключенных в двойные или одинарные кавычки. Можно просто ввести строку и нажать клавишу Enter для получения результата: >>> "Привет, мир!" 'Привет, мир!' Результирующая строка отобразится в кавычках. Этого не произойдет, если выводить строку с помощью функции print (...). Учитывая возможность получить результат сразу после ввода команды, окно Python Shell можно использовать в качестве многофункционального калькулятора. >>> 12*45+30 570 Результат вычисления последней инструкции сохраняется в переменной „_‟(одно подчеркивание). Это позволяет производить дальнейшие расчеты без ввода предыдущего результата. Вместо него достаточно ввести символ подчеркивания. 7 >>> 134*4 536 >>> _*6 3216 >>> _/4 804.0 Перенести курсор в одну из верхних секций интерпретатора нельзя. Для повторения одной из предыдущих команд можно использовать клавишу <↑> (или <↓>), нажав ее нужное количество раз. В текущей командной строке будут по очереди отображаться предыдущие (следующие) команды. Когда появится нужная команда, вы можете ее отредактировать и нажать клавишу Enter Для математических операций в выражениях используются следующие обозначения: * – это умножение; 34*89 это 34 умножить на 89; ** – обозначает возведение в степень; 2**3 это 2 в третьей степени. Степень может быть дробной: >>>3**0.5 1.7320508075688772 Возведение целого числа в целую степень даѐт целое число, если показатель степени ≥0, и число с плавающей точкой, если он <0. / – это деление; 15/6 это 15 делить на 6 с результатом 2.5. Деление целых чисел всегда даѐт результат с плавающей точкой, даже если они делятся нацело (в версиях Python 3.X). // – целочисленное деление; 15//6 вернет 2. % – это операция вычисления остатка от деления. >>> 5%2 1 >>> 5.4%2.1 # остаток от деления 1.2000000000000002 ( ) – (круглые скобки) служат для указания порядка вычислений: (6+9)/4 это 6+9 деленное на 4. Не используйте квадратные или фигурные скобки для указания порядка вычислений. Кроме этого, круглые скобки используются для указания аргументов функций, а также для создания кортежей. Кортежем является любая последовательность элементов, разделенных запятыми и заключенная в круглые скобки. [ ] – (квадратные скобки) обозначают список; [1,2,3,4] - это список из четырех чисел. К элементам списка можно обращаться по индексу. Нумерация индексов начинается с нуля. >>> x=[10,20,30,40] >>> x[2] 30 >>> x[0] 10 8 Для запоминания результатов вычислений удобно использовать переменные. При определении переменной используется знак равенства =. Слева от знака равенства стоит имя переменной, а справа – ее значение или выражение для вычисления. Одно значение можно присвоить сразу нескольким переменным: >>>x = y = z = 0 Имя переменной (идентификатор) не должно совпадать с именами ключевых слов (операторов и функций) Python. Имя должно начинаться с буквы, может содержать буквы, цифры и символ подчеркивания. Недопустимо включать в имена переменных пробелы и специальные знаки. Регистр букв учитывается при именовании переменных. При попытке использовать переменную, которой не присвоено никакого значения, генерируется ошибка. _ (подчеркивание) представляет результат последнего вычисления. Эта переменная используется только для чтения и ей нельзя присвоить значение явно. == – проверка на равенство; a ==5 возвращает True, если а равно 5. != – проверка на неравенство; a!=5 возвращает True, если а не равно 5. <,<=,>,>= обозначают неравенства; можно использовать привычные из математики сравнения, вроде 2 1 x : >>>x=3.4 >>>1 >>>1 Набранная формула, как правило, не заканчивается никаким символом. Если выполнялось присваивание, то результат операции сразу не отображается. >>> z=1 True С логическими значениями True и False можно выполнять логические операции and, or, not. >>> True and False False >>> not(True or False) False Логические (булевы) значения True и False можно использовать в арифметических выражениях, в которых они интерпретируются как 1 и 0. >>> a=4 >>> b=True >>> a+b 5 >>>(3+True)**0.5 # извлечение квадратного корня из 4 2.0 Допустимо следующее выражение 9 >>> (3*(4>3)+(5!=6))**0.5 # извлечение квадратного корня из 4 2.0 Однако помните, что арифметические операции имеют приоритет перед логическими. Сравните предыдущий пример со следующим. >>> (3*(4>3)+5!=6)**0.5 # извлечение квадратного корня из 1 1.0 В языке Python встроенных функций немного. Большинство надо импортировать (загружать из специальных файлов, называемых модулям). Элементарные математические функции, такие как sin, cos, log и другие, собраны в модуле math. Чтобы функции стали доступными, модуль следует импортировать в рабочее пространство исполнительной системы командой import имя_модуля . Затем для вызова функции нужно использовать команду имя8>3> |