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

python.ppt

  • Количество слайдов: 21

Научно-технические расчеты на Python Подготовка к занятиям Научно-технические расчеты на Python Подготовка к занятиям

Почему научнотехнические расчеты? l l Важная составляющая инженерного образования без расчетов нет моделирования, и Почему научнотехнические расчеты? l l Важная составляющая инженерного образования без расчетов нет моделирования, и проектирования технических систем Как осуществляются научно-технические расчеты (НТР): l l делаем расчеты на бумаге, калькуляторе – так проектировались технические системы в течение 200 лет; Выполняем расчеты на компьютерах 2

Технологии проведения расчетов l l l Пишем программы с нуля (до середины 60 х Технологии проведения расчетов l l l Пишем программы с нуля (до середины 60 х годов) Используем библиотеки программ (70 ые-90 ые года прошлого века, используется и сейчас). Проблема корректности Специализированные расчетные системы для решения конкретных задач – таких систем должно быть очень и очень много! Они очень дорогие, т. к. малотиражируемые SMath Studio, Scilab, Octave, Sage Специализированные системы для решения классов задач, например, конечноэлементные расчеты (Elcut, Ansys, Comsol Multiphysics) Пакеты инженерных расчетов общего назначения: Matlab, Mathcad, Matematica, Maple – проприетарные и к тому жк дорогие SMath Studio, Scilab, Octave, Sage, R – бесплатные с различной функциональностью l 3

Виды инженерных расчетов l l Сложные повторяемые -> специализированные программные системы, большие вложения Небольшие, Виды инженерных расчетов l l Сложные повторяемые -> специализированные программные системы, большие вложения Небольшие, однократные (большая часть инженерных расчетов), я их называю апплетами: l их нужно сделать быстро и с наименьшими трудозатратами. 4

Как разрабатываются апплеты l l l Традиционные языки программирования (С, Pascal, Java, C#) Системы Как разрабатываются апплеты l l l Традиционные языки программирования (С, Pascal, Java, C#) Системы инженерных расчетов (Matlab, Mathcad…) Сравнение: и в том и в другом случае надо программировать, традиционные компилируемые языки больше подходят для создания индустриальных приложений, системы общего назначения либо очень дорогие, либо недостаточно функциональные… 5

Что мы хотим от средств для разработки апплетов l l Простота языка, ортогональность (пояснить) Что мы хотим от средств для разработки апплетов l l Простота языка, ортогональность (пояснить) Высокий уровень, лаконичность, возможноc, работы со сложными структурами данных Широкий набор бесплатных и качественных библиотек для проведения расчетов Возможность публикации расчетов в виде вебприложений – важно для учебных приложений – принцип нулевой установки 6

За и против Python l Пироги и пышки (Pro) l l l l Ортогональность За и против Python l Пироги и пышки (Pro) l l l l Ортогональность языка Переносимость: приложения работают на практически всех доступных платформах Сверхвысокий уровень Обилие библиотек (принцип с батарейками) Активное сообщество Монокультура (все делается на Python – не надо использовать другие технологии) Средства для создания масштабируемых приложений (Cyphon) l Синяки и шишки (Contra) l l l Своеобразный синтаксис Библиотеки не поспевают за языком, необходимость отслеживания зависимостей (две несовместимых версий языка, множественность версий библиотек) Не всегда адекватная документация, но можно почитать исходные тексты программ 7

Боремся с недостатками l Используем готовые дистрибутивы с библиотеками: l l l Portable Python Боремся с недостатками l Используем готовые дистрибутивы с библиотеками: l l l Portable Python (x, y) Enthought Python – платная, для студентов и преподавателей – бесплатная лицензия 8

Характеристика Python (1) l Разработан в конце 80 х годов прошлого века Гвидо ван Характеристика Python (1) l Разработан в конце 80 х годов прошлого века Гвидо ван Россумом, до недавнего времени работал в Google 9

Monty Python Монти Пайтон в 1969 году Первый ряд: Терри Джонс, Джон Клиз, Майкл Monty Python Монти Пайтон в 1969 году Первый ряд: Терри Джонс, Джон Клиз, Майкл Пейлин, второй ряд: Грэм Чепмен, Эрик Айдл, Терри Гиллиам 10

Ортогональность – несколько парадигм l l Структурное, объектно-ориентированное, функциональное, императивное и аспектноориентированное программирование, но Ортогональность – несколько парадигм l l Структурное, объектно-ориентированное, функциональное, императивное и аспектноориентированное программирование, но об этом можно не знать, используя только то, что необходимо в данный момент. В язык встроены динамическая типизация, автоматическое управление памятью, интроспекция, механизмы обработки исключений, параллельное программирование, исходный код программ может быть организован в функции, классы, модули и пакеты. 11

Мультиплатфомность l l l Система программирования изначально была задумана как многоплатформенная, реализации Python имеются Мультиплатфомность l l l Система программирования изначально была задумана как многоплатформенная, реализации Python имеются практически для всех широко используемых операционных систем, а в Linux Python встроен. Приложения, написанные на Python, работают как на суперкомпьютерах, так и смартфонах. Python интенсивно развивается, примерно раз в два-три года выходят новые версии языка. Вокруг системы программирования сложилось обширное и активное сообщество разработчиков, использующих ее в своей работе. Язык получил широкое распространение, достаточно сказать, что существенная часть приложений NASA, Google и Яндекс написана на Python. 12

Zen of Python (Тим Пейтерс ) l l l l l Красивое лучше, чем Zen of Python (Тим Пейтерс ) l l l l l Красивое лучше, чем уродливое. Явное лучше, чем неявное. Простое лучше, чем сложное. Сложное лучше, чем запутанное. Плоское лучше, чем вложенное. Разреженное лучше, чем плотное. Читаемость имеет значение. Особые случаи не настолько особые, чтобы нарушать правила. При этом практичность важнее безупречности. Ошибки никогда не должны замалчиваться, если не замалчиваются явно. Встретив двусмысленность, отбрось искушение угадать. Должен существовать один — и, желательно, только один — очевидный способ сделать это, хотя он поначалу может быть и не очевиден, если вы не голландец (имеется в виду Гвидо ван Россум). Сейчас лучше, чем никогда. Хотя никогда зачастую лучше, чем прямо сейчас. Если реализацию сложно объяснить — идея плоха. Если реализацию легко объяснить — идея, возможно, хороша. Пространства имён — отличная штука! Будем делать их побольше C батарейками… 13

Сравниваем с C# (Java, C++) using System; namespace Console. Application 1 { class Program Сравниваем с C# (Java, C++) using System; namespace Console. Application 1 { class Program { static void Main(string[] args) { Console. Write. Line("Hello World"); } } } ======== print("Hello World") # ортогональность языка 14

Библиотеки (батарейки) l l l l l l В Python встроена обширная библиотека Python Библиотеки (батарейки) l l l l l l В Python встроена обширная библиотека Python (Hellman D. The Python Standard Library by Example. –NY: Addison. Wesley, 2011), включая: интерфейсы к командам операционной системы; работа с файлами и каталогами; регулярные выражения; разнообразные функции для работы с текстом и строками; форматирование вывода, большое число математических функций; библиотеки для работы с основными Интернет-протоколами (mime, smtp, pop, json, http, ftp, nntp telnet, cookie, cgi и т. д); средства для работы с xml-документами; сжатие данных (zip); инструменты для профилирования (измерение производительности разных фрагментов программ для выявления узких мест); средства для проведения модульного тестирования; средства для автоматической генерации документации; средства для сериализация объектов; средства для работы с данными, включая различные коллекции, множества, очереди и т. д. ; многопоточность; работа с базами данных; криптографические сервисы (md 5, sha, hmac, hashlib); работа с сетевыми интерфейсами (как через сокеты, так и используя более высокоуровневые абстракции); средства взаимодействия процессов (IPC); мультимедиа библиотека; сервисы для локализации и интернационализации; средства для быстрого создания графических пользовательских интерфейсов. Здесь перечислена только малая часть встроенных библиотек. 15

Библиотеки для научнотехнических расчетов l l l l numpy, scipy, интерфейсы для распространенных библиотек Библиотеки для научнотехнических расчетов l l l l numpy, scipy, интерфейсы для распространенных библиотек численных методов IMSL (проприетарная), alglib (бесплатная, созданная нашими соотечественниками), библиотеки для конечно-элементных расчетов, библиотеки визуализации результатов расчетов matplotlib, May. Avi, работы с изображениями PIL; имеются интерфейсные модули, позволяющие взаимодействовать с Matlab, R, другими системами научно-технических расчетов, с различными системами управления базами данных; для Python разработано несколько сред web-разработки (фреймворков), которые со сравнительно умеренной трудоемкостью позволяют публиковать результаты расчетов и конструировать интерактивные webприложения. К ним относятся Django, Pyramid, Plone, Chery. Py; библиотек, созданных сообществом Python тысячи, что позволяет сформулировать еще одну заповедь: производительность работы повышается за счет того, что кто-то разработал части нашего приложения за нас; Прежде чем что-то писать самому, поищите в Google… 16

Начинаем работать… l Попытаемся осваивать конструкции языка в максимально наглядном виде l l l Начинаем работать… l Попытаемся осваивать конструкции языка в максимально наглядном виде l l l Воспользуемся «черепашьей» графикой From turtle import * # из модуля turtle # импортируем все объекты 17

Команды для управления черепашкой l l l l forward(n) – вперед на n пикселов Команды для управления черепашкой l l l l forward(n) – вперед на n пикселов backward(n) – назад на n пикселов left(angle) – поворачиваем влево на angle градусов right(angle) – поворачиваем вправо на angle градусов circle(r) - окружность радиуса |r|, центр которой находится слева от черепашки, если r>0 и справа, если r<0 circle(r, angle) - дуга радиуса |r| и углом angle; дуга рисуется против часовой стрелки, если r>0 и по часовой стрелке, если r<0 goto(x, y) – перемещение черепашки в точку с координатами x, y 18

Команды перемещения черепашки l l l down() – опустить перо up() – поднять перо Команды перемещения черепашки l l l down() – опустить перо up() – поднять перо width(n) – установить ширину следа черепашки n пикселов сolor(s) - установить цвет следа черепашки в s; s должно быть текстовой строкой, заключенной в кавычки, с названием цвета (по-английски), например, "red", "yellow", "green" и т. д. fill(f) - рисованиt закрашенных областей. При начале рисования: fill(1), завершается рисование fill(0) 19

Другие команды l l l reset() - возврат черепашки в исходное состояние: очищается экран, Другие команды l l l reset() - возврат черепашки в исходное состояние: очищается экран, сбрасываются все параметры, черепашка устанавливается в начало координат, глядя вправо сlear() - очистка экрана write(s) – вывод текстовой строки s в точке нахождения черепашки (кириллица не работает) radians() - углы в радианах degrees() - углы в градусах; этот режим включен по умолчанию 20

Упражнения l l l l l Нарисуйте на экране равносторонний треугольник. Нарисуйте желтый равносторонний Упражнения l l l l l Нарисуйте на экране равносторонний треугольник. Нарисуйте желтый равносторонний треугольник. Нарисуйте закрашенный красный равносторонний треугольник. Нарисуйте на экране квадрат с диагоналями. Нарисуйте только диагонали квадрата (два пересекающихся отрезка). Нарисуйте квадрат, стороны которого не параллельны осям координат. Нарисуйте две касающиеся окружности. Нарисуйте две пересекающиеся окружности. Нарисуйте сами какую-нибудь цветную картинку (дом, дерево, рожицу, компьютер, . . . ). 21