вторник, 8 марта 2011 г.

Python Вычисление сложных математических функций # 6

То, что сейчас будет описано применяется не часто, но знать это нужно обязательно. Имеется ввиду такие действия как вычисление квадратного корня, синуса, косинуса и др. Первым шагом обязательно надо импортировать библиотеку math. В ней и содержатся математические функции. Чтобы выполнить какое нибудь вычисление надо написать math.функция(значение)

Функции в библиотеке math:

math.ceil(x)
Возвращает округленное x как ближайшее целое значение типа float, большее или равное x (округление "вверх").

math.copysign(x, y)
Возвращает число x со знаком числа y. На платформе, поддерживающей знак нуля copysign(1.0, -0.0) даст -1.0.

math.fabs(x)
Возвращает абсолютное значение (модуль) числа x. В Python есть встроенная функция abs, но она возвращает модуль числа с тем же типом, что число, здесь же всегда float abs (fabs).

math.factorial(x)
Возвращает факториал целого числа x, если x не целое возбуждается ошибка ValueError.

math.floor(x)
В противоположность ceil(x) возвращает округленное x как ближайшее целое значение типа float, меньшее или равное x (округление "вниз").

math.fmod(x, y)
Аналогична функции fmod(x, y) библиотеки C. Отметим, что это не то же самое, что выражение Python x%y. Желательно использовать при работе с объектами float, в то время как x % y больше подходит для int.

math.frexp(x)
Представляет число в экспоненциальной записи x = m * 2e и возвращает мантиссу m (действительное число, модуль которого лежит в интервале от 0.5 до 1) и порядок e (целое число) как пару чисел (m, e). Если x=0, то возвращает (0.0, 0)

math.fsum(iterable)
Возвращает float сумму от числовых элементов итерируемого объекта.

math.isinf(x)
Проверяет, является ли float объект x плюс или минус бесконечностью, результат соответственно True или False.

math.isnan(x)
Проверяет, является ли float объект x объектом NaN (not a number).

math.ldexp(x, i)
Возвращает значение x * 2i, то есть осуществляет действие, обратное функции math.frexp(x).

math.modf(x)
Возвращает часть, идущую после запятой и целую часть от float числа. Оба результата сохраняют знак исходного числа x и представлены типом float.

math.trunc(x)
Возвращает целую часть числа x в виде int объекта.

Степенные и логарифмические функции

math.exp(x)
Возвращает ex.

math.log(x[, base])
При передаче функции одного аргумента x, возвращает натуральный логарифм x. При передаче двух аргументов, второй берется как основание логарифма.

math.log1p(x)
Возвращает натуральный логарифм от x+1.

math.log10(x)
Возвращает десятичный логарифм x.

math.pow(x, y)
Возвращает x в степени y.

math.sqrt(x)
Квадратный корень (square root) из x.

Тригонометрические функции

math.acos(x)
Возвращает арккосинус x, в радианах.

math.asin(x)
Возвращает арксинус x, в радианах.

math.atan(x)
Возвращает арктангенс x, в радианах.

math.atan2(y, x)
Возвращает atan(y/x), в радианах. Результат лежит в интервале [-π, π]. Вектор, конец, которого задается точкой (x, y) образует угол с положительным направлением оси x. Поэтому эта функция имеет более общее назначение, чем предыдущая. Например и atan(1), и atan2(1, 1) дадут в результате pi/4, но atan2(-1, -1) это уже -3*pi/4.

math.cos(x)
Возвращает косинус x, где x выражен в радианах.

math.hyp(x, y)
Возвращает евклидову норму, то есть sqrt(x**2+y**2). Удобно для вычисления гипотенузы (hyp) и длины вектора.

math.sin(x)
Возвращает синус x, где x выражен в радианах.

math.tan(x)
Возвращает тангенс x, где x выражен в радианах.

Радианы в градусы и наоборот

math.degrees(x)
Конвертирует значение угла x из радиан в градусы.

math.radians(x)
Конвертирует значение угла x из градусов в радианы.

Пример программы:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import math     # Импортируем библиотеку math

def primer_6(): # Объявление функции primer_6()
    a=144
    b=16 
    math.sqrt(a) # Извлекаем корень квадратный
                 # из переменной а

    d=b ** 2  # Возводим b в квадрат
    print ('а равно '+str(a)) 
    print('d равно '+str(d))
     
def main():
    primer_6() # Вызов функции primer_6
    return 0
 
if __name__ == '__main__':
    main()

6 комментариев: