1.2. Создание программного модуля, объединяющего математические функции
Модулем называется блок, входящий в состав стандартной библиотеки системы Turbo Pascal и обеспечивающий дополнительные возможности системы при создании программ. По умолчанию при запуске системы в оперативную память загружается только модуль System . Для подключения
других дополнительных модулей в языке Turbo Pascal используется специальная команда Uses . Помимо модуля System, в состав системы
программирования входит еще ряд стандартных модулей.
Так при составлении в Паскале различных программ, работающих в текстовом режиме, широко используются возможности модуля Crt . С
помощью команд, входящих в состав этого модуля, можно очищать экран компьютера в начале работы программы, выводить текст на экран различными цветами, изменять цвет фона, на котором отображается текст, создавать на экране несколько окон для ввода и вывода информации, применять в ходе работы программы различные аудиоэффекты.
Еще одним часто используемым модулем из числа стандартных является модуль Graph . Он применяется для создания рисунков, графиков и
диаграмм в графическом режиме Turbo Pascal. Графический режим в сравнении с текстовым обеспечивает более высокое качество изображения. Подробно об особенностях работы с модулем Graph рассказывается в главе 4 данного пособия. Модуль Overlay используется для разработки программ,
имеющих большой объем и сложную внутреннюю структуру. Существуют в Паскале и другие стандартные модули.
Для обеспечения более быстрой и эффективной работы со
стандартными модулями они объединены в специальный библиотечный файл, который называется turbo.tpl . Расширение этого файла tpl
является сокращением от английского словосочетания Turbo Pascal library – библиотека Turbo Pascal.
Все вышеперечисленные модули не случайно названы стандартными, поскольку они уже имеются в системе Turbo Pascal в готовом виде. Наряду с использованием готовых модулей, программист может создавать в системе Turbo Pascal свои собственные модули. Использование модулей во многих случаях оказывается более удобным и рациональным, чем просто создание процедур и функций внутри основной программы. Если к процедуре или функции можно обращаться только из той программы, частью которой они являются, то обращение к модулю можно производить из любой программы, созданной в Turbo Pascal. Таким образом, один раз создав определенную функцию или процедуру и включив ее в состав модуля, можно в дальнейшем многократно употреблять ее для расчетов в самых различных программах.
Модуль первоначально создается в виде исходного текста, который набирается с помощью встроенного редактора системы Turbo Pascal и
сохраняется в файле с расширением pas . В общем виде модуль имеет такую
внутреннюю структуру: unit имя _ модуля ;
var имя_перем1:тип1; имя_перем2:тип2;…; function имя_функции1(параметр1:тип1;
function имя_функции2(параметр1:тип1; параметр2:тип2;…): значение ;
procedure имя_ процедуры1(параметр1:тип1; параметр2:тип2;…) ;
procedure имя_ процедуры2(параметр1:тип1; параметр2:тип2;…) ;
var имя_перем1:тип1; имя_перем2:тип2;… ; function имя_функции1 ;
список локальных переменных функции1;
тело функции1; function имя_функции2;
список локальных переменных функции2;
список локальных переменных процедуры1;
тело процедуры1; procedure имя_процедуры2;
список локальных переменных процедуры2;
тело процедуры2; begin
Рассмотрим составные части приведенной выше структуры. Текст модуля начинается с заголовка. Заголовок состоит из служебного слова unit
(что в переводе с английского и означает модуль) и собственного имени модуля. Имя модуля дается по тем же правилам, что и имя обычной программы, но на одном моменте здесь все же следует остановиться. В обычной программе рекомендуется указывать в заголовке то же имя, что и имя файла, в котором эта программа хранится. Для модуля это не просто рекомендация, а обязательное правило. Если имя файла с исходным текстом модуля и имя модуля, указанное в его заголовке, будут разными, то модуль не будет правильно работать.
Вслед за заголовком модуля находятся его разделы, которые часто
называют секциями модуля. Первой из них по порядку является секция интерфейса, которая начинается со служебного слова interface . Как
известно, интерфейсом называются средства взаимодействия между компонентами и участниками компьютерной системы. В данном случае речь идет о программном интерфейсе, то есть средстве взаимодействия между различными программами, входящими в состав программного обеспечения компьютера. В этом разделе перечисляются те переменные, функции и процедуры, которые входят в данный модуль и могут использоваться
После служебного слова interface в секции интерфейса находится
список внешних переменных. Этот список начинается со служебного слова var, и далее в нем перечисляются внешние переменные, для каждой из
которых указывается ее тип.
Вслед за списком переменных идет список функций, содержащихся в данном модуле. Для каждой функции должен быть полностью указан ее заголовок. Этот заголовок включает служебное слово function ,
собственное имя функции, список ее параметров, заключенный в скобки (для каждого параметра должен быть указан его тип), и тип самой функции. Далее в секции интерфейса идет список содержащихся в модуле процедур. Заголовок каждой процедуры также должен быть приведен в этом разделе в
полном виде, то есть он должен включать в себя служебное слово procedure , собственное имя процедуры и список ее параметров.
Вслед за секцией интерфейса в модуле идет секция реализации, которая содержит тексты тех функций и процедур, заголовки которых имеются в
интерфейсной секции. Секция реализации начинается со служебного слова implementation (это слово в переводе с английского означает «выполнение», «осуществление»). После слова implementation в разделе
указывается список внутренних переменных, которые могут использоваться только внутри данного модуля.
В секции реализации находятся описания функций данного модуля. Описание функции начинается с ее заголовка. В отличие от интерфейсной
секции, в данном случае в заголовке можно указывать только служебное слово function и собственное имя функции. Список параметров и тип
функции здесь указывать не обязательно. После заголовка функции приводится список локальных переменных, которые используются только
внутри данной функции. После списка локальных переменных находится тело функции. Тело функции в модуле имеет ту же структуру, что и тело функции в обычной программе. Оно начинается со слова begin , затем идет
последовательность операторов, отделенных друг от друга точками с запятой. Завершается тело функции словом end , после которого идет точка с
запятой. После текстов функций в секции реализации расположены описания процедур. Описание процедуры по своей внутренней структуре аналогично описанию функции.
Последней по порядку в модуле является секция инициализации, которая начинается со служебного слова begin , может содержать ряд
операторов и заканчивается служебным словом end , после которого ставится
точка. Следует сказать о том, что далеко не все перечисленные элементы модуля всегда присутствуют в нем. Часто в модуле отсутствует секция инициализации, но слово end с точкой в конце модуля должно находиться
Рис. 1.1. Окно с сообщением об успешной компиляции модуля, созданного в системе Turbo Pascal
После того как исходный текст модуля набран, его следует сохранить в файле с расширением pas . Сохранять файл с исходным текстом модуля
можно в том же каталоге, что и остальные файлы программ. Затем
программу нужно запустить на компиляцию. Следует обратить внимание на то, что компиляция модуля должна производиться через меню Compile .
Открыв этот раздел, нужно выполнить в нем одноименную команду. Если в модуле не имеется ошибок, то на экране компьютера на переднем плане Вы
увидите окно с сообщением об итогах компиляции. В нижней строке этого окна будет видна следующая надпись: «Compile successful: Press
any key». Это означает, что компиляция прошла успешно и для закрытия
окна с сообщением нужно нажать любую клавишу (см. рис. 1.1). Запускать модуль сразу на компиляцию и на выполнение с помощью команды Run → Run , как мы это делали с обычными программами, нельзя.
После успешной компиляции система программирования создает
исполняемый файл, который имеет то же имя, что и исходный, и расширение tpu. Например, если исходный файл назывался modul1 . pas , то исполняемый файл будет называться modul1 . tpu . Для того чтобы этот модуль могли
использовать другие программы, нужно соответствующим образом настроить систему Turbo Pascal.
Рис. 1.2. Диалоговое окно настройки системы Turbo Pascal, необходимой для правильного использования программных модулей
Для этого нужно в окне системы Turbo Pascal открыть меню Options , а в нем использовать команду Directories … После выполнения этой команды откроется диалоговое окно Directories (каталоги). В диалоговом окне в поле, называемом EXE & TPU directory , следует
указать диск и каталог, в которых компилятор будет сохранять исполняемые
файлы модулей с расширением tpu . В поле под названием Unit directories нужно указать этот же каталог для того, чтобы все
программы, использующие модули, могли найти их по указанному адресу (см. рис. 1.2).
Если, например, на компьютере папка TP7 находится в корневом
каталоге диска D , а файлы программ Вы сохраняете в файле prog , то в обоих полях нужно указать адрес d:\TP7\prog . Для подтверждения
внесенных изменений нужно щелкнуть «мышью» экранную кнопку Ok , что
приведет к закрытию диалогового окна. Теперь созданный модуль смогут использовать другие программы.
Рассмотрим создание и использование программного модуля на следующем примере. Создадим модуль под названием math3 , который будет
выполнять те математические операции, для выполнения которых в языке Паскаль не существует стандартных функций или процедур. К таким операциям и относятся возведение в произвольную степень, вычисление факториала и нахождение десятичного логарифма. Для облегчения разработки модуля можно скопировать соответствующие фрагменты текста
из трех предыдущих программ и вставить их в текст модуля. Ниже приведен текст программного модуля math3 .
unit math3; interface
function faktor(n:longint):longint; function log10(x:real):real; procedure step(x,k:real; var s:real);
implementation function faktor;
var i,f:longint; begin
for i:= 1 to n do f:=f*i; faktor:=f;
end; function log10;
var log:real; begin log:=ln(x)/ln(10); log10:=log;
end; procedure step;
var i,n:longint; begin
if int(k)<>k then s:=exp(k*ln(x))
for i:=1 to n do s:=s*x
for i:=-1 downto n do end; s:=s/x;
Разберем более детально внутреннюю структуру данного модуля. Модуль начинается с заголовка, в котором указано его собственное имя – math3 . В секции интерфейса данного модуля содержатся заголовки двух
функций и одной процедуры, находящихся в данном модуле. В секции реализации содержится описание указанных функций и процедуры. Функция faktor вычисляет факториал целого числа. Функция log10 находит
десятичный логарифм числа. Процедура step по заданному числу и
показателю степени находит степень числа. Секция инициализации в данном модуле отсутствует. Завершается модуль служебным словом end с точкой.
После компиляции модуля образуется исполняемый файл, который в данном случае называется math3.tpu . Этот файл могут использовать
другие программы, написанные в Turbo Pascal. В качестве примера использования возможностей созданного модуля приведем небольшую программу. Эта программа вычисляет значение следующего выражения:
где a,b и с вводятся пользователем с клавиатуры, причем a и b –
натуральные числа, а с – действительное число. Ниже приводится текст программы.
program abc; uses crt,math3; var a,b:longint; c,s,r:real; begin
writeln(‘Введите первое число’); readln(a);
writeln(‘Введите второе число’); readln(b);
writeln(‘Введите показатель степени’); readln(c);
writeln(‘Значение выражения равно ‘,r:10:3); readln
В данной программе после ее заголовка указываются подключаемые к программе модули. После стандартного модуля Crt через запятую
указывается созданный модуль math3 . Далее в программе, после ввода исходных данных, дважды идет обращение к функции faktor , содержащейся в модуле math3 . С помощью этой функции вычисляется
сумма факториалов двух чисел. Затем производится обращение к процедуре step , с помощью которой получается искомый результат r , и этот результат
Математические модули в Python: Math и Cmath
Monty Shokeen Last updated Feb 23, 2022
При написании программ в повседневной жизни мы обычно сталкиваемся с ситуациями, когда нам нужно использовать небольшую математику, чтобы выполнить задачу. Как и другие языки программирования, Python предоставляет различные операторы для выполнения базовых вычислений, таких как * для умножения, % для модуля и // для деления пола.
Если вы пишете программу для выполнения определенных задач, таких как изучение периодического движения или моделирования электрических цепей, вам нужно будет работать с тригонометрическими функциями, а также с комплексными числами. Хотя вы не можете использовать эти функции напрямую, вы можете получить к ним доступ, включив сначала два математических модуля. Эти модули являются math и cmath.
Первый дает вам доступ к гиперболическим, тригонометрическим и логарифмическим функциям для действительных чисел, а последний позволяет работать с комплексными числами. В этом уроке я рассмотрю все важные функции, предлагаемые этими модулями. Если явно не указано, все возвращаемые значения — это float.
Арифметические функции
Эти функции выполняют различные арифметические операции, такие как вычисление пола, потолка или абсолютного значения числа с использованием функций floor(x) , ceil(x) и fabs(x) соответственно. Функция ceil(x) вернет наименьшее целое число, которое больше или равно x. Аналогично, floor(x) возвращает наибольшее целое число, меньшее или равное x. Функция fabs(x ) возвращает абсолютное значение x.
Вы также можете выполнять нетривиальные операции, такие как вычисление факториала числа с использованием factorial(x) . Факториал является произведением целого числа и всех положительных целых чисел, меньших его. Он широко используется при работе с комбинациями и перестановками. Его также можно использовать для вычисления значения функций синуса и косинуса.
Еще одна полезная функция в модуле math — gcd(x, y) , которая дает вам наибольший общий делитель (GCD) двух чисел x и y. Когда x и y оба не равны нулю, эта функция возвращает наибольшее положительное целое число, которое делит как x, так и y. Вы можете косвенно использовать его для вычисления наименьшего общего кратного двух чисел, используя следующую формулу:
Вот несколько арифметических функций, которые предлагает Python:
Тригонометрические функции
Эти функции связывают углы треугольника по бокам. У них много приложений, в том числе изучение треугольников и моделирование периодических явлений, таких как звуковые и световые волны. Имейте в виду, что угол, который вы предоставляете, находится в радианах.
Вы можете рассчитать sin(x) , cos(x) и tan(x) непосредственно с помощью этого модуля. Однако нет прямой формулы для вычисления cosec(x) , sec(x) и cot(x) , но их значение равно обратному значению, возвращаемому sin(x) , cos(x) и tan(x) соответственно.
Вместо того, чтобы вычислять значение тригонометрических функций под определенным углом, вы также можете сделать обратный и рассчитать угол, в котором они имеют заданное значение, используя asin(x) , acos(x) и atan(x) .
Вы знакомы с теоремой Пифагора? В нем говорится, что квадрат гипотенузы (сторона, противоположная прямому углу) равна сумме квадратов двух других сторон. Гипотенуза также является самой большой стороной прямоугольного треугольника. Математический модуль обеспечивает функцию hypot(a, b) для вычисления длины гипотенузы.
Гиперболические функции
Гиперболические функции являются аналогами тригонометрических функций, которые основаны на гиперболе вместо круга. В тригонометрии точки (cos b, sin b) представляют точки единичного круга. В случае гиперболических функций точки (cosh b, sinh b) представляют точки, которые образуют правую половину равносторонней гиперболы.
Точно так же, как тригонометрические функции, вы можете непосредственно вычислить значение sinh(x) , cosh(x) и tanh(x) . Остальные значения могут быть рассчитаны с использованием различных отношений между этими тремя значениями. Существуют также другие функции asinh(x) , acosh(x) и atanh(x) , которые могут быть использованы для вычисления обратных соответствующих гиперболических значений.
Так как math.pi равно примерно 3.141592653589793, когда мы использовали asinh() для значения, возвращаемого sinh(math.pi) , мы получили нашу π обратно.
Степень и логарифмические функции
Вероятнее всего, вы чаще всего сталкиваетесь со степенями и логарифмами, чем с гиперболическими или тригонометрическими функциями. К счастью, модуль math предоставляет множество функций, которые помогут нам вычислить логарифмы.
Вы можете использовать log(x, [base]) для вычисления log заданного числа x для данной базы. Если вы оставите необязательный аргумент базы, log x будет вычисляться до базы e. Здесь e — математическая константа, значение которой равно 2.71828182 . и к ней можно получить доступ с использованием math.e . Кстати, Python также позволяет вам получить доступ к другой константе π, используя math.pi .
Если вы хотите рассчитать значения логарифма base-2 или base-10, использование log2(x) и log10(x) вернет более точные результаты, чем log(x, 2) и log(x, 10) . Имейте в виду, что функция log3(x) отсутствует, поэтому вам нужно будет использовать log(x, 3) для вычисления значений логарифма базы-3. То же самое касается всех других баз.
Если значение, логарифм которого вы вычисляете, очень близко к 1, вы можете использовать log1p(x) . 1p в log1p означает 1 плюс. Поэтому log1p(x) вычисляет log(1 + x) , где x близок к нулю. Однако результаты более точны с log1p(x) .
Вы также можете рассчитать значение числа x, возведённого в степень y, используя pow(x, y) . Перед вычислением степени эта функция преобразует оба аргумента в тип float. Если вы хотите, чтобы конечный результат был вычислен в точных целых степенях, вы должны использовать встроенную функцию pow() или оператор ** .
Вы также можете вычислить квадратный корень любого заданного числа x, используя sqrt(x) , но то же самое можно также сделать, используя pow(x, 0.5) .
Сложные числа
Сложные числа хранятся внутри с использованием прямоугольных или декартовых координат. Комплексное число z будет представлено в декартовых координатах как z = x + iy , где x представляет действительную часть, а y представляет собой мнимую часть. Другим способом их представления является использование полярных координат.
В этом случае комплексное число z будет определяться комбинацией модуля r и фазового угла phi. Модуль r является расстоянием между комплексным числом z и началом. Угол phi — угол против часовой стрелки, измеренный в радианах от положительной оси x до отрезка линии, соединяющего z и начало координат.
При работе с комплексными числами модуль cmath может оказать большую помощь. Модуль комплексного числа может быть рассчитан с использованием встроенной функции abs() , и его фаза может быть рассчитана с использованием функции phase(z) , доступной в модуле cmath. Вы можете преобразовать комплексное число в прямоугольной форме в полярную форму, используя polar(z) , которая вернет пару (r, phi), где r — abs(z) , а phi — phase(z) .
Аналогично, вы можете преобразовать комплексное число в полярной форме в прямоугольную форму с помощью rect(r, phi) . Комплексное число, возвращаемое этой функцией, равно r * (math.cos (phi) + math.sin (phi) * 1j) .
Модуль cmath также позволяет использовать регулярные математические функции со сложными числами. Например, вы можете вычислить квадратный корень из комплексного числа, используя sqrt(z) или его косинус, используя cos(z) .
Комплексные числа имеют множество приложений, таких как моделирование электрических цепей, динамика жидкости и анализ сигналов. Если вам нужно работать над любой из этих вещей, модуль cmath не разочарует вас.
Заключение
Все эти функции, о которых мы говорили выше, имеют свои конкретные приложения. Например, вы можете использовать функцию factorial(x) для решения проблем с перестановкой и комбинацией. Вы можете использовать тригонометрические функции для преобразования вектора в декартовы координаты. Вы также можете использовать тригонометрические функции для имитации периодических функций, таких как звуковые и световые волны.
Аналогично, кривая веревки, висящая между двумя полюсами, может быть определена с использованием гиперболической функции. Поскольку все эти функции доступны непосредственно в модуле math, очень легко создавать небольшие программы, которые выполняют все эти задачи.
Надеюсь, вам понравился этот урок. Если у вас есть какие-либо вопросы, дайте мне знать в комментариях.
Модуль Math — математика в Python на примерах (Полный Обзор)
Библиотека Math в Python обеспечивает доступ к некоторым популярным математическим функциям и константам, которые можно использовать в коде для более сложных математических вычислений. Библиотека является встроенным модулем Python, поэтому никакой дополнительной установки через pip делать не нужно. В данной статье будут даны примеры часто используемых функций и констант библиотеки Math в Python.
Содержание статьи
Специальные константы библиотеки math
В библиотеке Math в Python есть две важные математические константы.
Число Пи из библиотеки math
Первой важной математической константой является число Пи (π). Оно обозначает отношение длины окружности к диаметру, его значение 3,141592653589793. Чтобы получить к нему доступ, сначала импортируем библиотеку math следующим образом:
Затем можно получить доступ к константе, вызывая pi :
Данную константу можно использовать для вычисления площади или длины окружности. Далее представлен пример простого кода, с помощью которого это можно сделать:
Мы возвели радиус во вторую степень и умножили значение на число Пи, как и следовало сделать в соответствии с формулой πr 2 .
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Число Эйлера из библиотеки math
Число Эйлера (е) является основанием натурального логарифма. Оно также является частью библиотеки Math в Python. Получить доступ к числу можно следующим образом:
В следующем примере представлено, как можно использовать вышеуказанную константу:
Экспонента и логарифм библиотеки math
В данном разделе рассмотрим функции библиотеки Math в Python, которые используются для нахождения экспоненты и логарифмов.
Функция экспоненты exp() в Python
Библиотека Math в Python поставляется с функцией exp() , которую можно использовать для вычисления значения е . К примеру, e x — экспонента от х . Значение е равно 2.718281828459045 .
Метод может быть использован со следующим синтаксисом:
Параметр x может быть положительным или отрицательным числом. Если x не число, метод возвращает ошибку. Рассмотрим пример использования данного метода:
Мы объявили три переменные и присвоили им значения с различными числовыми типами данных. Мы передали значения методу exp() для вычисления их экспоненты.
Мы также можем применить данный метод для встроенных констант, что продемонстрировано ниже:
При передаче не числового значения методу будет сгенерирована ошибка TypeError, как показано далее:
Как видно из примера выше, генерируется ошибка TypeError .
Функция логарифма log() в Python
Функция log() возвращает логарифм определенного числа. Натуральный логарифм вычисляется относительно основания е . В следующем примере показано использование функции логарифма:
В скрипте выше методу передаются числовые значения с различными типами данных. Также рассчитывается натуральный логарифм константы pi . Вывод следующий:
Функция log10() в Python
Метод log10() возвращает логарифм по основанию 10 определенного числа. К примеру:
Функция log2() в Python
Функция log2() возвращает логарифм определенного числа по основанию 2. К примеру:
Функция log(x, y) в Python
Функция log(x, y) возвращает логарифм числа х по основанию y . К примеру:
Функция log1p(x) в Python
Функция log1p(x) рассчитывает логарифм(1+x), как представлено ниже:
Арифметические функции в Python
Арифметические функции используются для представления чисел в различных формах и осуществления над ними математических операций. Далее представлен перечень самых популярных арифметических функций:
- ceil() : округление определенного числа вверх;
- fabs() : возвращает модуль (абсолютное значение) указанного числа;
- floor() : округление определенного числа вниз;
- gcd(a, b) : получение наибольшего общего делителя чисел a и b ;
- fsum(iterable) : возвращает сумму всех элементов итерируемого объекта;
- expm1() : возвращает (e^x)-1;
- exp(x)-1 : когда значение x слишком мало, вычисление exp(x)-1 может привести к значительной потери в точности. expm1(x) может вернуть вывод с полной точностью.
В следующем примере показано использование перечисленных выше функций:
К числу других математических функций относятся:
- pow() : принимает два вещественных аргумента, возводит первый аргумент в степень, значением которой является второй аргумент, после чего возвращает результат. К примеру, pow(2, 2) эквивалентно выражению 2 ** 2 ;
- sqrt() : возвращает квадратный корень определенного числа.
Примеры данных методов представлены ниже:
Возведение в степень
Тригонометрические функции в Python
Модуль math в Python поддерживает все тригонометрические функции. Самые популярные представлены ниже:
- sin(a) : Возвращает синус «а» в радианах;
- cos(a) : Возвращает косинус «а» в радианах;
- tan(a) : Возвращает тангенс «а» в радианах;
- asin(a) : Возвращает инвертированный синус. Аналогичным образом работают «atan» и «acos» ;
- degrees(a) : Конвертирует угол «a» из радиан в градусы;
- radians(a) : Конвертирует угол «a» из градусов в радианы.
Рассмотрим следующий пример:
Обратите внимание, что вначале мы конвертировали значение угла из градусов в радианы для осуществления дальнейших операций.
Конвертация типов числа в Python
Python может конвертировать начальный тип числа в другой указанный тип. Данный процесс называется «преобразованием». Python может внутренне конвертировать число одного типа в другой, когда в выражении присутствуют смешанные значения. Такой случай продемонстрирован в следующем примере:
В вышеприведенном примере целое число 3 было преобразовано в вещественное число 3.0 с плавающей точкой. Результатом сложения также является число с плавающей точкой (или запятой).
Однако иногда вам необходимо явно привести число из одного типа в другой, чтобы удовлетворить требования параметра функции или оператора. Это можно сделать с помощью различных встроенных функций Python.
Например, чтобы преобразовать целое число в число с плавающей точкой, мы должны вызвать функцию float() , как показано ниже:
Целое число типа integer было преобразовано в вещественное число типа float . float также можно конвертировать в integer следующим образом:
Вещественное число было преобразовано в целое через удаление дробной части и сохранение базового числа. Обратите внимание, что при конвертации значения в int подобным образом число будет усекаться, а не округляться вверх.
Заключение
Библиотека Math предоставляет функции и константы, которые можно использовать для выполнения арифметических и тригонометрических операций в Python. Библиотека изначально встроена в Python, поэтому дополнительную установку перед использованием делать не требуется. Для получения дополнительной информации можете просмотреть официальную документацию.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
Как добавить математический модуль в программу
Работа с модулями: создание, подключение инструкциями import и from
Модулем в Python называется любой файл с программой (да-да, все те программы, которые вы писали, можно назвать модулями). В этой статье мы поговорим о том, как создать модуль, и как подключить модуль, из стандартной библиотеки или написанный вами.
Каждая программа может импортировать модуль и получить доступ к его классам, функциям и объектам. Нужно заметить, что модуль может быть написан не только на Python, а например, на C или C++.
Подключение модуля из стандартной библиотеки
Подключить модуль можно с помощью инструкции import. К примеру, подключим модуль os для получения текущей директории:
После ключевого слова import указывается название модуля. Одной инструкцией можно подключить несколько модулей, хотя этого не рекомендуется делать, так как это снижает читаемость кода. Импортируем модули time и random.
После импортирования модуля его название становится переменной, через которую можно получить доступ к атрибутам модуля. Например, можно обратиться к константе e, расположенной в модуле math:
Стоит отметить, что если указанный атрибут модуля не будет найден, возбудится исключение AttributeError. А если не удастся найти модуль для импортирования, то ImportError.
Использование псевдонимов
Если название модуля слишком длинное, или оно вам не нравится по каким-то другим причинам, то для него можно создать псевдоним, с помощью ключевого слова as.
Теперь доступ ко всем атрибутам модуля math осуществляется только с помощью переменной m, а переменной math в этой программе уже не будет (если, конечно, вы после этого не напишете import math, тогда модуль будет доступен как под именем m, так и под именем math).
Инструкция from
Подключить определенные атрибуты модуля можно с помощью инструкции from. Она имеет несколько форматов:
Первый формат позволяет подключить из модуля только указанные вами атрибуты. Для длинных имен также можно назначить псевдоним, указав его после ключевого слова as.
Импортируемые атрибуты можно разместить на нескольких строках, если их много, для лучшей читаемости кода:
Второй формат инструкции from позволяет подключить все (точнее, почти все) переменные из модуля. Для примера импортируем все атрибуты из модуля sys:
Следует заметить, что не все атрибуты будут импортированы. Если в модуле определена переменная __all__ (список атрибутов, которые могут быть подключены), то будут подключены только атрибуты из этого списка. Если переменная __all__ не определена, то будут подключены все атрибуты, не начинающиеся с нижнего подчёркивания. Кроме того, необходимо учитывать, что импортирование всех атрибутов из модуля может нарушить пространство имен главной программы, так как переменные, имеющие одинаковые имена, будут перезаписаны.
Создание своего модуля на Python
Теперь пришло время создать свой модуль. Создадим файл mymodule.py, в которой определим какие-нибудь функции:
Теперь в этой же папке создадим другой файл, например, main.py:
Поздравляю! Вы сделали свой модуль! Напоследок отвечу ещё на пару вопросов, связанных с созданием модулей:
Как назвать модуль?
Помните, что вы (или другие люди) будут его импортировать и использовать в качестве переменной. Модуль нельзя именовать также, как и ключевое слово (их список можно посмотреть тут). Также имена модулей нельзя начинать с цифры. И не стоит называть модуль также, как какую-либо из встроенных функций. То есть, конечно, можно, но это создаст большие неудобства при его последующем использовании.
Модуль Math — математика в Python на примерах (Полный Обзор)
Библиотека Math в Python обеспечивает доступ к некоторым популярным математическим функциям и константам, которые можно использовать в коде для более сложных математических вычислений. Библиотека является встроенным модулем Python, поэтому никакой дополнительной установки через pip делать не нужно. В данной статье будут даны примеры часто используемых функций и констант библиотеки Math в Python.
Содержание статьи
Специальные константы библиотеки math
В библиотеке Math в Python есть две важные математические константы.
Число Пи из библиотеки math
Первой важной математической константой является число Пи (π). Оно обозначает отношение длины окружности к диаметру, его значение 3,141592653589793. Чтобы получить к нему доступ, сначала импортируем библиотеку math следующим образом:
Математические модули в Python: Math и Cmath
Monty Shokeen Jan 9, 2017 (Updated Feb 23, 2022)
При написании программ в повседневной жизни мы обычно сталкиваемся с ситуациями, когда нам нужно использовать небольшую математику, чтобы выполнить задачу. Как и другие языки программирования, Python предоставляет различные операторы для выполнения базовых вычислений, таких как * для умножения, % для модуля и // для деления пола.
Если вы пишете программу для выполнения определенных задач, таких как изучение периодического движения или моделирования электрических цепей, вам нужно будет работать с тригонометрическими функциями, а также с комплексными числами. Хотя вы не можете использовать эти функции напрямую, вы можете получить к ним доступ, включив сначала два математических модуля. Эти модули являются math и cmath.
Первый дает вам доступ к гиперболическим, тригонометрическим и логарифмическим функциям для действительных чисел, а последний позволяет работать с комплексными числами. В этом уроке я рассмотрю все важные функции, предлагаемые этими модулями. Если явно не указано, все возвращаемые значения — это float.
Арифметические функции
Эти функции выполняют различные арифметические операции, такие как вычисление пола, потолка или абсолютного значения числа с использованием функций floor(x) , ceil(x) и fabs(x) соответственно. Функция ceil(x) вернет наименьшее целое число, которое больше или равно x. Аналогично, floor(x) возвращает наибольшее целое число, меньшее или равное x. Функция fabs(x ) возвращает абсолютное значение x.
Вы также можете выполнять нетривиальные операции, такие как вычисление факториала числа с использованием factorial(x) . Факториал является произведением целого числа и всех положительных целых чисел, меньших его. Он широко используется при работе с комбинациями и перестановками. Его также можно использовать для вычисления значения функций синуса и косинуса.
Еще одна полезная функция в модуле math — gcd(x, y) , которая дает вам наибольший общий делитель (GCD) двух чисел x и y. Когда x и y оба не равны нулю, эта функция возвращает наибольшее положительное целое число, которое делит как x, так и y. Вы можете косвенно использовать его для вычисления наименьшего общего кратного двух чисел, используя следующую формулу:
Вот несколько арифметических функций, которые предлагает Python:
Тригонометрические функции
Эти функции связывают углы треугольника по бокам. У них много приложений, в том числе изучение треугольников и моделирование периодических явлений, таких как звуковые и световые волны. Имейте в виду, что угол, который вы предоставляете, находится в радианах.
Вы можете рассчитать sin(x) , cos(x) и tan(x) непосредственно с помощью этого модуля. Однако нет прямой формулы для вычисления cosec(x) , sec(x) и cot(x) , но их значение равно обратному значению, возвращаемому sin(x) , cos(x) и tan(x) соответственно.
Вместо того, чтобы вычислять значение тригонометрических функций под определенным углом, вы также можете сделать обратный и рассчитать угол, в котором они имеют заданное значение, используя asin(x) , acos(x) и atan(x) .
Вы знакомы с теоремой Пифагора? В нем говорится, что квадрат гипотенузы (сторона, противоположная прямому углу) равна сумме квадратов двух других сторон. Гипотенуза также является самой большой стороной прямоугольного треугольника. Математический модуль обеспечивает функцию hypot(a, b) для вычисления длины гипотенузы.
Гиперболические функции
Гиперболические функции являются аналогами тригонометрических функций, которые основаны на гиперболе вместо круга. В тригонометрии точки (cos b, sin b) представляют точки единичного круга. В случае гиперболических функций точки (cosh b, sinh b) представляют точки, которые образуют правую половину равносторонней гиперболы.
Точно так же, как тригонометрические функции, вы можете непосредственно вычислить значение sinh(x) , cosh(x) и tanh(x) . Остальные значения могут быть рассчитаны с использованием различных отношений между этими тремя значениями. Существуют также другие функции asinh(x) , acosh(x) и atanh(x) , которые могут быть использованы для вычисления обратных соответствующих гиперболических значений.
Так как math.pi равно примерно 3.141592653589793, когда мы использовали asinh() для значения, возвращаемого sinh(math.pi) , мы получили нашу π обратно.
Степень и логарифмические функции
Вероятнее всего, вы чаще всего сталкиваетесь со степенями и логарифмами, чем с гиперболическими или тригонометрическими функциями. К счастью, модуль math предоставляет множество функций, которые помогут нам вычислить логарифмы.
Вы можете использовать log(x, [base]) для вычисления log заданного числа x для данной базы. Если вы оставите необязательный аргумент базы, log x будет вычисляться до базы e. Здесь e — математическая константа, значение которой равно 2.71828182 . и к ней можно получить доступ с использованием math.e . Кстати, Python также позволяет вам получить доступ к другой константе π, используя math.pi .
Если вы хотите рассчитать значения логарифма base-2 или base-10, использование log2(x) и log10(x) вернет более точные результаты, чем log(x, 2) и log(x, 10) . Имейте в виду, что функция log3(x) отсутствует, поэтому вам нужно будет использовать log(x, 3) для вычисления значений логарифма базы-3. То же самое касается всех других баз.
Если значение, логарифм которого вы вычисляете, очень близко к 1, вы можете использовать log1p(x) . 1p в log1p означает 1 плюс. Поэтому log1p(x) вычисляет log(1 + x) , где x близок к нулю. Однако результаты более точны с log1p(x) .
Вы также можете рассчитать значение числа x, возведённого в степень y, используя pow(x, y) . Перед вычислением степени эта функция преобразует оба аргумента в тип float. Если вы хотите, чтобы конечный результат был вычислен в точных целых степенях, вы должны использовать встроенную функцию pow() или оператор ** .
Вы также можете вычислить квадратный корень любого заданного числа x, используя sqrt(x) , но то же самое можно также сделать, используя pow(x, 0.5) .
Сложные числа
Сложные числа хранятся внутри с использованием прямоугольных или декартовых координат. Комплексное число z будет представлено в декартовых координатах как z = x + iy , где x представляет действительную часть, а y представляет собой мнимую часть. Другим способом их представления является использование полярных координат.
В этом случае комплексное число z будет определяться комбинацией модуля r и фазового угла phi. Модуль r является расстоянием между комплексным числом z и началом. Угол phi — угол против часовой стрелки, измеренный в радианах от положительной оси x до отрезка линии, соединяющего z и начало координат.
При работе с комплексными числами модуль cmath может оказать большую помощь. Модуль комплексного числа может быть рассчитан с использованием встроенной функции abs() , и его фаза может быть рассчитана с использованием функции phase(z) , доступной в модуле cmath. Вы можете преобразовать комплексное число в прямоугольной форме в полярную форму, используя polar(z) , которая вернет пару (r, phi), где r — abs(z) , а phi — phase(z) .
Аналогично, вы можете преобразовать комплексное число в полярной форме в прямоугольную форму с помощью rect(r, phi) . Комплексное число, возвращаемое этой функцией, равно r * (math.cos (phi) + math.sin (phi) * 1j) .
Модуль cmath также позволяет использовать регулярные математические функции со сложными числами. Например, вы можете вычислить квадратный корень из комплексного числа, используя sqrt(z) или его косинус, используя cos(z) .
Комплексные числа имеют множество приложений, таких как моделирование электрических цепей, динамика жидкости и анализ сигналов. Если вам нужно работать над любой из этих вещей, модуль cmath не разочарует вас.
Заключение
Все эти функции, о которых мы говорили выше, имеют свои конкретные приложения. Например, вы можете использовать функцию factorial(x) для решения проблем с перестановкой и комбинацией. Вы можете использовать тригонометрические функции для преобразования вектора в декартовы координаты. Вы также можете использовать тригонометрические функции для имитации периодических функций, таких как звуковые и световые волны.
Аналогично, кривая веревки, висящая между двумя полюсами, может быть определена с использованием гиперболической функции. Поскольку все эти функции доступны непосредственно в модуле math, очень легко создавать небольшие программы, которые выполняют все эти задачи.
Надеюсь, вам понравился этот урок. Если у вас есть какие-либо вопросы, дайте мне знать в комментариях.
Модули в Python
В этой статье вы научитесь создавать и импортировать собственные модули в Python. Также вы узнаете несколько полезных лайфхаков, связанных с импортом и использованием модулей.
Что такое модуль
Модуль — файл, в котором содержатся переменные и методы.
К примеру, example.py — это модуль, example — его имя.
Модули позволяют разбивать огромные программы на небольшие кусочки кода, которыми легко управлять и организовывать. Также это позволяет использовать код повторно.
Делается это просто — мы объявляем все часто используемые функции в модуле и импортируем его. И все: больше не нужно копировать и вставлять код.
Давайте создадим модуль. Напишите следующий код и сохраните его с именем example.py .
В модуле example.py мы объявили функцию add() . Эта функция принимает в качестве аргументов два числа и возвращает их сумму.
Как импортировать модули
Импортировать функции, классы и методы можно из одного модуля в другой или в интерактивный интерпретатор.
Для этого используется ключевое слово import . Чтобы импортировать ранее написанный модуль example , введите следующее:
Нужно понимать, что имена функций из example напрямую в таблицу имен не импортируются — импортируется лишь имя модуля example .
Доступ к методам и функциям модуля осуществляется с помощью оператора . . Например:
У Python есть множество полезных стандартных модулей — здесь можно посмотреть полный список и инструкции по применению. Модули находятся в директории Lib , а она в свою очередь в папке, где установлен Python.
Стандартные модули импортируются так же, как и ваши собственные.
Ниже представлены несколько способов импортирования модулей.
С помощью ключевого слова import
Инструкция import предназначена для импортирования модулей в вашу программу. Как было сказано выше, оператор точка . позволяет получить доступ к функциям и методам модуля. Например:
Вывод:
Присвоить произвольное имя модулю
Модулю можно присвоить произвольное имя. Например:
Здесь мы переименовали модуль math в m — так мы сэкономим свое время.
Будьте бдительны — math в нашей области видимости теперь недоступен. То есть, правильным вариантом будет m.pi . math.pi работать не будет.
Использовать инструкцию from. import
from позволяет импортировать определенные объекты из модуля. Благодаря нему отпадает необходимость импорта модуля целиком.
В этой программе мы импортировали из модуля math только константу pi .
В данном случае оператор точка . не нужен. Импортировать можно и несколько объектов:
Импортировать все имена
Мы можем импортировать все имена (объекты) из модуля. Делается это так:
В последней конструкции мы импортировали все имена из модуля math .
Импорт всех объектов с помощью звездочки * — не лучшая идея, поскольку это может привести к конфликтам с вашими объектами. К тому же, такой подход снижает читаемость кода.
Как Python ищет модули
Во время импорта Python проверяет несколько директорий. Сначала интерпретатор просматривает встроенные модули. Если среди них нужного имени не оказалось, Python начнет просматривать директории в sys.path. Порядок поиска такой:
- Текущая директория.
- PYTHONPATH (переменная окружения со списком каталогов).
- Каталог по умолчанию — он зависит от установки.
Этот список можно пополнять собственными директориями.
Как перезагрузить модуль
Интерпретатор Python импортирует модуль за сессию лишь раз — это эффективно. Пример того, как это работает.
Допустим, в модуле my_module написан следующий код:
Вывод:
Как видите, код выполняется лишь раз. Это значит, что наш модуль импортируется только один раз.
Если вы измените модуль во время написания программы, вам нужно его перезагрузить. Один из способов — перезапустить интерпретатор. Но это не лучший вариант.
В Python есть куча способов сделать это эффективнее — например, функция reload() в модуле imp . Делается это так:
Зачем нужна встроенная функция dir()
С помощью функции dir() мы можем увидеть список все атрибуты внутри модуля.
Например, мы объявили функцию add() в модуле example — его мы реализовали еще в начале статьи.
Пример использования dir в модуле example
Эта функция возвращает отсортированный список атрибутов (вместе с add ). Атрибуты, начинающиеся с подчеркивания, определяются не пользователем, а автоматически закрепляются за модулем.
Например, атрибут __name__ содержит имя модуля.
Чтобы узнать все атрибуты, определенные в текущем пространстве имен, вызовите функцию dir() без аргументов.