Математические библиотеки python

Алан-э-Дейл       08.04.2022 г.

Программа на Python с переменными

Рассмотрим пример иллюстрирующий математическую модель описывающий
траекторию полета мяча в воздухе. Из второго закона Ньютона,
предполагая незначительное сопротивление воздуха, мы можем вывести
зависимость вертикального положения \( y \) мяча от времени
\( t \):
$$
\begin{equation*}
\tag{1}
y = v_0 t -0.5 g t^2
\end{equation*}
$$

где \( v_0 \) — начальная скорость, \( g \) — ускорение
свободного падения
, значение которого положим равным \( 9.81 \) м/c \( ^2 \).

Сценарий

Рассмотрим сценарий на Python для вычисления по простой
формуле. Предположим, что сценарий у нас сохранен в виде текста в
файле ball.py

# -*- coding: utf-8 -*-
# Программа для вычисления положения мяча при вертикальном движении

v0 = 5       # Начальная скорость
g = 9.81     # Ускорение свободного падения
t = 0.6      # Время

y = v0*t - 0.5*g*t**2

Разбор сценария

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

Когда сценарий запущен в интерпретаторе Python, он разбирается и выполняется
построчно. Первые две строки

# -*- coding: utf-8 -*-
# Программа для вычисления положения мяча при вертикальном движении

являются

комментариями*, т.е. как только встречается символ ,
интерпретатор Python воспринимает оставшуюся часть строки как
комментарий, пропускает ее и переходит к следующей строки.

Замечание

В первой строке указывается кодировка,
в которой сохранен файл сценария (в нашем случае *— это UTF8). Если в
сценарии не предполагается использование не ASCII символов, то первую
строку можно опустить. Однако, мы можем использовать
кириллический текст, поэтому в наших сценариях мы всегда будем
указывать кодировку.

Следующие 3 строки, интерпретируемые Pyhton:

v0 = 5       # Начальная скорость
g = 9.81     # Ускорение свободного падения
t = 0.6      # Время

В Python выражения вида известны как операторы
присваивания. Значение правой части, в нашем случае целое число
, становится объектом, а имя переменной слева *— именованной
ссылкой на этот объект. Всякий раз, когда мы запишем , Python
заменит ее целым значением . Выражение создает новое
имя для того же целого объекта со значением , а не копирует
объект.

Таким образом, прочитав эти строки интерпретатор Python знает три
переменных и их значения. Эти переменные используются
интерпретатором в следующей строке, фактически реализующей некоторую
формулу

y = v0*t - 0.5*g*t**2

В этой строке Python интерпретирует как оператор умножения, *—
вычитания, *— возведения в степень (естественно, и
интерпретируются как операторы сложения и деления соответственно). В
результате вычисляется значение по формуле в правой части выражения,
которое присваивается переменной с именем . Последняя строка
сценария

print y

выводит на печать значение переменной . Таким образом при запуске
сценария ball.by на экране будет выведено
число . В тексте сценария имеются также и пустые строки, которые
пропускаются интерпретатором Python. Они добавлены для лучшей
читабельности кода.

Запуск сценариев Python

Сценарии Python обычно имеют расширение , но это не является
необходимым. Как мы уже говорили, рассмотренный выше сценарий сохранен
в файле ball.py. Запустить его можно
следующей командой:

python ball.py

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

Команда должна запускаться в консольном окне
(терминал в Unix, Командная строка (Command Prompt) в MS Windows).

В случае, когда файлу установлено разрешение на выполнение (команда
) в ОС Unix (Linux), сценарий можно запускать
командой, сценарий можно запускать командой

./ball.py

В этом случае первая строка сценария должна содержать описание
интерпретатора:

#!/usr/bin/env python

В ОС MS Windows можно писать просто

ball.py

вместо , если расширение ассоциировано с
интерпретатором Python.

Math Methods

Method Description
math.acos() Returns the arc cosine of a number
math.acosh() Returns the inverse hyperbolic cosine of a number
math.asin() Returns the arc sine of a number
math.asinh() Returns the inverse hyperbolic sine of a number
math.atan() Returns the arc tangent of a number in radians
math.atan2() Returns the arc tangent of y/x in radians
math.atanh() Returns the inverse hyperbolic tangent of a number
math.ceil() Rounds a number up to the nearest integer
math.comb() Returns the number of ways to choose k items from n items without repetition and order
math.copysign() Returns a float consisting of the value of the first parameter and the sign of the second parameter
math.cos() Returns the cosine of a number
math.cosh() Returns the hyperbolic cosine of a number
math.degrees() Converts an angle from radians to degrees
math.dist() Returns the Euclidean distance between two points (p and q), where p and
q are the coordinates of that point
math.erf() Returns the error function of a number
math.erfc() Returns the complementary error function of a number
math.exp() Returns E raised to the power of x
math.expm1() Returns Ex
— 1
math.fabs() Returns the absolute value of a number
math.factorial() Returns the factorial of a number
math.floor() Rounds a number down to the nearest integer
math.fmod() Returns the remainder of x/y
math.frexp() Returns the mantissa and the exponent, of a specified number
math.fsum() Returns the sum of all items in any iterable (tuples, arrays, lists, etc.)
math.gamma() Returns the gamma function at x
math.gcd() Returns the greatest common divisor of two integers
math.hypot() Returns the Euclidean norm
math.isclose() Checks whether two values are close to each other, or not
math.isfinite() Checks whether a number is finite or not
math.isinf() Checks whether a number is infinite or not
math.isnan() Checks whether a value is NaN (not a number) or not
math.isqrt() Rounds a square root number downwards to the nearest integer
math.ldexp() Returns the inverse of math.frexp()
which is x * (2**i) of the given numbers x and i
math.lgamma() Returns the log gamma value of x
math.log() Returns the natural logarithm of a number, or the logarithm of number to base
math.log10() Returns the base-10 logarithm of x
math.log1p() Returns the natural logarithm of 1+x
math.log2() Returns the base-2 logarithm of x
math.perm() Returns the number of ways to choose k items from n items with order and without repetition
math.pow() Returns the value of x to the power of y
math.prod() Returns the product of all the elements in an iterable
math.radians() Converts a degree value into radians
math.remainder() Returns the closest value that can make numerator completely divisible by the denominator
math.sin() Returns the sine of a number
math.sinh() Returns the hyperbolic sine of a number
math.sqrt() Returns the square root of a number
math.tan() Returns the tangent of a number
math.tanh() Returns the hyperbolic tangent of a number
math.trunc() Returns the truncated integer parts of a number

Программа на Python с векторизацией и построением графиков

Вернемся к задаче, описывающей вертикальное положение \( y \) мяча после
подбрасывания. Предположим, что нас интересуют значения \( y \) в
каждую миллисекунду первой секунды полета. Это требует повторения
вычисления \( y = v_0 t — 0.5 g t^2 \) тысячу раз.

Также построим график зависимости \( y \) от \( t \) на отрезке
\( \). Построение такого графика на компьютере подразумевает
рисование прямых отрезков между точками кривой, поэтому нам
понадобится много точек, чтобы создать визуальный эффект гладкой
кривой. Тысячи точек, которые мы вычислим, нам будет достаточно для
этого.

Реализацию таких вычислений и построения графика может быть
реализовано следующим сценарием (ball_plot.py):

# -*- coding: utf-8 -*-

from numpy import linspace
import matplotlib.pyplot as plt

v0 = 5
g = 9.81
t = linspace(, 1, 1001)

y = v0*t - 0.5*g*t**2

plt.plot(t, y)
plt.xlabel(u't (с)')
plt.ylabel(u'y (м)')
plt.show()

def height(t):
	h =  v0*t - 0.5*g*t**2
	return h

h = lambda t: v0*t - 0.5*g*t**2

Замечание

В нашем сценарии для символьных аргументов мы использовали префикс
(например, ), чтобы указать, что
символы содержатся в кодировке UTF8.

Данный сценарий строит график зависимости вертикального положения мяча
от времени (см. рис. :numref:`%s`). Отметим, что строки для
вычисления из сценария ball.py из раздела
мало изменены, но значение
вычисляется для тысячи точек.

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

from numpy import *
from matplotlib.pyplot import *

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

from numpy import linspace
from matplotlib.pyplot import plot, xlabel, ylabel

Другие предлагают способ импорта, когда используется префикс для
функций модуля

import numpy as np
import matplotlib.pyplot as plt

...

t = np.linspace(, 1, 1001)
   
...

plt.plot(x,y)

Мы будем использовать все три способа. В нашем сценарии мы
использовали два из них.

from numpy import linspace
import matplotlib.pyplot as plt


Рисунок 1: График, построенный с помощью нашего сценария.

Функция принимает три аргумента и, в общем случае,
вызывается следующим образом:

linspace(start, stop, n)

Функция генерирует равноотстоящих координат,
начинающихся со значения , и заканчивающихся
. Выражение создает 1001 координату
от 0 до 1 включительно. Математически это означает, что отрезок
\( \) разбивается на 1000 равных отрезков и значения координат
в этом случае вычисляются следующим образом: \( t_i = i/1000,\ i = 0, 1,
\ldots, 1000 \).

Функция возвращает объект класса ,
т.е. некоторый набор чисел (массив). При выполнении арифметических операций с
такими объектами, на самом деле эти операции осуществляются для каждого
элемента массива. В результате получается аналогичный массив из 1001
элемента, который сохраняется в переменную . Таким образом
также является массивом.

Такой подход вычисления нескольких чисел в одну строку называется
векторизацией. Этот способ очень удобен, так как сокращает не только
количество кода, но и время вычислений по сравнению с использованием
циклов или .

Команды для построения графиков достаточно просты:

1. означает построение графика зависимости от

2. помещает текст на оси .

3. помещает текст на оси .

Модуль random

Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности. Модуль собрал разные функции для
имитации случайных процессов: , , , , ,
и другие.

Задание 4.3 Камень, ножницы, бумага

Запрограммируйте игру с компьютером в «Камень, ножницы, бумага». Пример диалога:

Счет 0:0
Ваш ход (0-выход, 1-камень, 2-ножницы, 3-бумага): 1
Мой ход: 2
Вы выиграли!
Счет 0:1
Ваш ход (0-выход, 1-камень, 2-ножницы, 3-бумага): 3
Мой ход: 3
Ничья!
Счет 0:1
Ваш ход (0-выход, 1-камень, 2-ножницы, 3-бумага): 1
Мой ход: 3
Вы проиграли!
Счет 1:1
Ваш ход (0-выход, 1-камень, 2-ножницы, 3-бумага): 0
Игра окончена со счетом 1:1

Operators

An operator is a symbol or function that indicates an operation. For example, in math the plus sign or + is the operator that indicates addition.

In Python, we will see some familiar operators that are brought over from math, but other operators we will use are specific to computer programming.

Here is a quick reference table of math-related operators in Python. We’ll be covering all of the following operations in this tutorial.

Operation What it returns
Sum of and
Difference of and
Changed sign of
Identity of
Product of and
Quotient of x and y
Quotient from floor division of and
Remainder of
to the power

We’ll also be covering , including and , that combine an arithmetic operator with the operator.

What is Power pow() Function in Python?

One important basic arithmetic operator, in Python, is the exponent operator. It takes in two real numbers as input arguments and returns a single number. Pow can be used with 3 arguments to do modulo division.

Parameters

The pow() function in Python takes three parameters:

  • x – a number, the base
  • y – a number, the exponent
  • z (optional) – a number, used for modulus

Meaning / Usage of x,y,z in pow()

The x,y,z parameters in pow() function can be used like the following.

  •  is equal to 
  •  is equal to 
  1. X: X can either be a non-negative integer or a negative integer whenever it is being used. 
  2. Y: Y can also be a non-negative integer or a negative integer when used in the equation.
  3. Z: In most cases, z is an optional variable and may or may not be present.

Note: Here the third parameter in pow() is optional. So you can use the pow() function with only two parameters. And in place of x,y,z you can use any variable.

Examples to Calculate Python Power using pow() Function

In the following examples, we will calculate the Python Power of a number using pow() function.

Let’s Start.

Example 1: Basic Example to calculate the power of a number using pow() function

Output:

Example 2: Using a floating number to calculate power of a number:

Output:

Example 3: Using the third argument (modulo) in pow() function

It’s also possible to calculate  a^b mod m.

This is very helpful in computations where you have to print the resultant % mod.

Note: Here, a and b can be floats or negatives, but, if a third argument is present, b cannot be negative.

Python program that uses pow with 3 arguments

Output:

Explanation:

So in the above example, we have three parameters x,y and z. Here x is the base number. The y variable is the exponential or power of a number and z is the modulus.

The above example can be written in simple mathematics as

12^2%5 which is equal to 4

Example 4: Basic Example to calculate the power of a number using math.pow() function

Here in this example, we have to import the math module to calculate the power of a number.

Output:

25.0

Note: Python has a math module that has its own pow(). It takes two arguments and returns a floating-point number. Frankly speaking, we will never use math.pow().

Показатели и логарифмы

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

Функция exp()

Математическая библиотека в Python поставляется с функцией exp(), которую мы можем использовать для вычисления степени e. Например, e x , что означает экспоненту от x. Значение e составляет 2,718281828459045.

Метод можно использовать со следующим синтаксисом:

math.exp(x)

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

import math

# Initializing values
an_int = 6
a_neg_int = -8
a_float = 2.00

# Pass the values to exp() method and print
print(math.exp(an_int))
print(math.exp(a_neg_int))
print(math.exp(a_float))

Вывод:

403.4287934927351
0.00033546262790251185
7.38905609893065

Мы объявили три переменные и присвоили им значения с разными числовыми типами данных. Затем мы передали их методу exp() для вычисления их показателей.

Мы также можем применить этот метод к встроенным константам, как показано ниже:

import math

print(math.exp(math.e))
print(math.exp(math.pi))

Вывод:

15.154262241479262
23.140692632779267

Если вы передадите методу нечисловое значение, он выдаст ошибку, как показано здесь:

import math

print(math.exp("20"))

Вывод:

Traceback (most recent call last):
  File "C:/Users/admin/mathe.py", line 3, in <module>
    print (math.exp("20"))
TypeError: a float is required

Ошибка TypeError была сгенерирована, как показано в приведенных выше выходных данных.

Функция log()

Эта функция возвращает логарифм указанного числа. Натуральный логарифм вычисляется по основанию e. Следующий пример демонстрирует использование этой функции:

import math

print("math.log(10.43):", math.log(10.43))
print("math.log(20):", math.log(20))
print("math.log(math.pi):", math.log(math.pi))

В приведенном выше скрипте мы передали методу числовые значения с разными типами данных. Мы также вычислили натуральный логарифм константы пи. Результат выглядит так:

Вывод:

math.log(10.43): 2.344686269012681
math.log(20): 2.995732273553991
math.log(math.pi): 1.1447298858494002

Функция log10()

Этот метод возвращает десятичный логарифм указанного числа. Например:

import math

# Returns the log10 of 50
print("The log10 of 50 is:", math.log10(50))

Вывод:

The log10 of 50 is: 1.6989700043360187

Функция log2()

Эта функция вычисляет логарифм числа по основанию 2. Например:

import math

# Returns the log2 of 16
print("The log2 of 16 is:", math.log2(16))

Вывод:

The log2 of 16 is: 4.0

Функция log (x, y)

Эта функция возвращает логарифм x, где y является основанием. Например:

import math

# Returns the log of 3,4
print("The log 3 with base 4 is:", math.log(3, 4))

Вывод:

The log 3 with base 4 is: 0.6309297535714574

Функция log1p (x)

Эта функция вычисляет логарифм (1 + x), как показано здесь:

import math

print("Logarithm(1+x) value of 10 is:", math.log1p(10))

Вывод:

Logarithm(1+x) value of 10 is: 2.3978952727983707

Математические методы

Метод Описание
math.acos() Возвращает арккосинус числа.
math.acosh() Возвращает обратный гиперболический косинус числа.
math.asin() Возвращает арксинус числа.
math.asinh() Возвращает обратный гиперболический синус числа.
math.atan() Возвращает арктангенс числа в радианах.
math.atan2() Возвращает арктангенс y / x в радианах.
math.atanh() Возвращает обратный гиперболический тангенс числа.
math.ceil() Округляет число до ближайшего целого.
math.comb() Возвращает количество способов выбрать k элементов из n элементов без повторения и порядка.
math.copysign() Возвращает число с плавающей запятой, состоящее из значения первого параметра и знака второго параметра.
math.cos() Возвращает косинус числа.
math.cosh() Возвращает гиперболический косинус числа.
math.degrees() Преобразует угол из радиан в градусы.
math.dist() Возвращает евклидово расстояние между двумя точками (p и q), где p и q — координаты этой точки
math.erf() Возвращает функцию ошибки числа.
math.erfc() Возвращает дополнительную функцию ошибок числа.
math.exp() Возвращает E в степени x.
math.expm1() Возврат Ex — 1
math.fabs() Возвращает абсолютное значение числа.
math.factorial() Возвращает факториал числа.
math.floor() Округляет число до ближайшего целого.
math.fmod() Возвращает остаток от x / y.
math.frexp() Возвращает мантиссу и показатель степени указанного числа.
math.fsum() Возвращает сумму всех элементов в любой итерации (кортежи, массивы, списки и т. Д.)
math.gamma() Возвращает гамма-функцию в точке x.
math.gcd() Возвращает наибольший общий делитель двух целых чисел.
math.hypot() Возвращает евклидову норму.
math.isclose() Проверяет, близки ли два значения друг к другу или нет
math.isfinite() Проверяет, является ли число конечным или нет
math.isinf() Проверяет, бесконечно ли число
math.isnan() Проверяет, является ли значение NaN (не числом) или нет
math.isqrt() Округляет квадратный корень вниз до ближайшего целого числа.
math.ldexp() Возвращает значение, обратное math.frexp (). что является x * (2 ** i) заданных чисел x и i
math.lgamma() Возвращает логарифмическое значение гаммы x.
math.log() Возвращает натуральный логарифм числа или логарифм числа по основанию.
math.log10() Возвращает десятичный логарифм числа x.
math.log1p() Возвращает натуральный логарифм 1 + x.
math.log2() Возвращает логарифм x по основанию 2.
math.perm() Возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.
math.pow() Возвращает значение x в степени y.
math.prod() Возвращает произведение всех элементов в итерируемом объекте.
math.radians() Преобразует значение градуса в радианы
math.remainder() Возвращает ближайшее значение, при котором числитель полностью делится на знаменатель.
math.sin() Возвращает синус числа.
math.sinh() Возвращает гиперболический синус числа.
math.sqrt() Возвращает квадратный корень числа.
math.tan() Возвращает тангенс числа.
math.tanh() Возвращает гиперболический тангенс числа.
math.trunc() Возвращает усеченные целые части числа.

math module methods

Now, let’s go over the methods that the math module provides.

, , and

All of these functions are related to rounding. always
rounds upwards and rounds downwards no matter what. If you
just need ordinary rounding, use the global function which
takes a decimal number as a parameter and returns the rounded number as
a double data type in the way we learned in school (from
it rounds upwards, otherwise downwards). The
function is from the standard set of functions and isn’t
dependent on the module.

We’ll certainly use very often. I’ve used the other
functions for things such as determining the number of pages in a guestbook. If
we had comments and we only printed comments per
page, these comments would take up pages. The result must be
rounded up since we would actually need pages.

The output:

Console application
3
4
4
3

and

The method takes a decimal () number as
a parameter and returns its absolute value (which is always positive). We also
have the global function which works with integers.

The output:

Console application
2.2
2.2
2
2

, ,

These classic trigonometric functions all take an angle as a
, which has to be entered in radians (not degrees if your
country uses them). To convert degrees to radians we multiply them by
. The return value is also a .

, ,

These are inverse trigonometric (arcus, sometimes cyclometric) functions,
which return the original angle according to its trigonometric value. The
parameter is a and the returned angle is in radians (also as
a ). If we wanted the angle in degrees, we’d have to divide
the radians by .

and

takes two parameters. The first is the base of the power
and the second is the exponent. If we wanted to calculate 23, the
code for it would be as follows:

is an abbreviation for SQuare RooT, which returns the
square root of the number given as a . Both functions return a
as the result.

, , ,

returns Euler’s number raised to the given exponent.
returns the natural logarithm of the given number or the
logarithm of the base entered as the second parameter.
returns the decadic logarithm of the number and returns the
binary logarithm.

The output:

Console application
2.0
3.0
5.0

Hopefully, you noticed that the method list lacks any general root function.
We, however, can calculate it using the functions the module
provides.

We know that roots work like this: the 3rd root of .
Therefore, we can write the following bit of code:

Использование объектов из импортированного модуля или пакета

Существует четыре различных вида синтаксиса для записи операторов импорта.

Пусть любое имя после ключевого слова .

  • если — это имя модуля или пакета, то для использования объектов, определенных в , вам нужно написать .
  • если является именем переменной, его можно использовать непосредственно напрямую.
  • если является именем функции, то его можно вызвать с помощью инструкции .

Необязательно, но после любого оператора может быть добавлена инструкция вида , например, . Эта инструкция переименовывает в в пределах файла скрипта

Обратите внимание, что имя далее не действительно и его использовать не имеет смысла. Например

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

Рассмотрим следующий пример: в файле необходимо импортировать функцию из файла .

Решение №1:

from packA.subA.sa1 import helloWorld

затем мы можем вызывать функцию непосредственно по имени:

a = helloWorld()

Решение №2:

# следующие две строки кода эквивалентны
from packA.subA import sa1
import packA.subA.sa1 as sa1

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

x = sa1.helloWorld()

Иногда это решение предпочтительнее Решения №1 для того чтобы сделать явным вызов функции из модуля .

Решение №3:

import packA.subA.sa1

Далее необходимо использовать полный путь:

x = packA.subA.sa1.helloWorld()

Использование dir() для проверки содержимого импортированного модуля

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

>>> from packA.subA import sa1
>>> dir(sa1)

Импорт пакетов

Импорт пакета концептуально эквивалентен импорту файла из папки пакета в качестве модуля. И действительно это так. Вот как Python рассматривает импортируемый пакет:

>>> import packA
>>> packA
<module 'packA' from 'packA\__init__.py'>

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

Python exp() method

The method is a built-in Python method that calculates the power of a number, i.e the exponential of a number which is passed as an argument to the function. It returns a floating-point number after calculating the number raised to a specific power.

Syntax of method

Time for an example:

Output:

311763.4480807426
6.14421235332821e-06
2.5231561490262545e-06
23.140692632779267
15.154262241479262

If an argument other than a number is passed to the method, it throws a TypeError. Below is a demonstration of the same.

Output:

TypeError: must be real number, not str

Note This method is different in comparison to the method.

NumPy vs math

Several notable Python libraries can be used for mathematical calculations. One of the most prominent libraries is Numerical Python, or NumPy. It is mainly used in scientific computing and in data science fields. Unlike the module, which is part of the standard Python release, you have to install NumPy in order to work with it.

The heart of NumPy is the high-performance N-dimensional (multidimensional) array data structure. This array allows you to perform mathematical operations on an entire array without looping over the elements. All of the functions in the library are optimized to work with the N-dimensional array objects.

Both the module and the NumPy library can be used for mathematical calculations. NumPy has several similarities with the module. NumPy has a subset of functions, similar to module functions, that deal with mathematical calculations. Both NumPy and provide functions that deal with , , , and calculations.

There are also several fundamental differences between and NumPy. The Python module is geared more towards working with scalar values, whereas NumPy is better suited for working with arrays, vectors, and even matrices.

Assignment Operators

The most common assignment operator is one you have already used: the equals sign . The assignment operator assigns the value on the right to a variable on the left. For example, assigns the value of the integer to the variable .

When programming, it is common to use compound assignment operators that perform an operation on a variable’s value and then assign the resulting new value to that variable. These compound operators combine an arithmetic operator with the operator, so for addition we’ll combine with to get the compound operator . Let’s review what that looks like:

First, we set the variable equal to the value of , then we used the compound assignment operator to add the right number to the value of the left variable and then assign the result to .

Compound assignment operators are used frequently in the case of for loops, which you’ll use when you want to repeat a process several times:

With the for loop, we were able to automate the process of the operator that multiplied the variable by the number and then assigned the result in the variable for the next iteration of the for loop.

Python has a compound assignment operator for each of the arithmetic operators discussed in this tutorial:

Compound assignment operators can be useful when things need to be incrementally increased or decreased, or when you need to automate certain processes in your program.

What is Python Power Operator

In Python, power operator (**) and pow() function are equivalent. So we can use whichever one seems clearest. I feel pow is clearer, but I rarely need exponents in programs.

** operator used as a power(exponent) operator in python.

Raising a number to a power N multiplies the number by itself N times. For instance,  raised to the power of  is equal to  ×  ×  = .

How to Use Power Operator in Python

To use the power operator (**) in Python, We have to put (**) between two numbers to raise the former number to the latter.

a**b

Here a is Any expression evaluating to a numeric type. And b any expression evaluating to a numeric type.

Output:

15625

Программа на Python, использующая библиотечные функции

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

Вычислим рассматриваемый нами угол. Перед тем как написать программу,
мы должны сформулировать некий алгоритм, т.е. некий способ
выполнения необходимых вычислений. В нашем случае, пусть \( x \) —
расстояние от нас до точки подброса мяча, а \( y \) — высота, на
которой находится мяч. Таким образом, образуется угол \( \theta \) с
поверхностью земли, где \( \mathrm{tg\,} \theta = y/x \). Следовательно,
\( \theta=\mathrm{arctg\,}(y/x) \).

Напишем сценарий выполняющий эти вычисления. Введем переменные и
для координат положения \( x \) и \( y \), и переменную
для угла \( \theta \). Сценарий сохраним в файл
ball_angle.py

# -*- coding: utf-8 -*-

x = 10   # горизонтальное положение
y = 10   # вертикальное положение

angle = atan(yx)

print (anglepi)*180

В этом сценарии строка иллюстрирует
вызов функции , соответствующей математической функции
\( \mathrm{arctg} \), с выражением в качестве аргумента
или входного параметра. Отметим, что тригонометрические функции
(такие как ) возвращают значение угла в радианах, поэтому для
преобразования результата в градусы мы использовали выражение
.

Теперь, запустив на выполнение сценарий, мы получим ошибку

NameError: name 'atan' is not defined

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

from math import atan

Добавив данную строку в начало сценария и запустив его, мы приходим к
другой проблеме: переменная не определена. Переменная ,
соответствующая значению \( \pi \), также определена в модуле , и
тоже должна быть импортирована

from math import atan, pi

Очевидно, что достаточно сложно импортировать поименно все необходимые
нам функции и переменные из модуля , поэтому существует
быстрый способ импортировать все из модуля :

from math import *

Мы будем использовать такое выражение для импорта, чтобы иметь доступ
ко всем общим математическим функциям. Таким образом рабочий сценарий
ball_angle.py имеет вид:

# -*- coding: utf-8 -*-
from math import *

x = 10   # горизонтальное положение
y = 10   # вертикальное положение

angle = atan(yx)

print (anglepi)*180

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

Гость форума
От: admin

Эта тема закрыта для публикации ответов.