В этой таблице в качестве обозначения типа type можно указывать рассмотренные выше константы: Int, Float и т.п.

Модуль Numeric также определяет константы e (число e) и pi (число пи).

<p>Модуль LinearAlgebra</p>

Модуль LinearAlgebra содержит алгоритмы линейной алгебры, в частности нахождение определителя матрицы, решений системы линейных уравнений, обращение матрицы, нахождение собственных чисел и собственных векторов матрицы, разложение матрицы на множители: Холецкого, сингулярное, метод наименьших квадратов.

Функция LinearAlgebra.determinant() находит определитель матрицы:

>>> import Numeric, LinearAlgebra

>>> print LinearAlgebra.determinant(

... Numeric.array([[1, -2],

...                [1,  5]]))

7

Функция LinearAlgebra.solve_linear_equations() решает линейные уравнения вида ax=b по заданным аргументам a и b:

>>> import Numeric, LinearAlgebra

>>> a = Numeric.array([[1.0, 2.0], [0.0, 1.0]])

>>> b = Numeric.array([1.2, 1.5])

>>> x = LinearAlgebra.solve_linear_equations(a, b)

>>> print "x =", x

x = [-1.8 1.5]

>>> print "Проверка:", Numeric.dot(a, x) - b

Проверка: [ 0. 0.]

Когда матрица a имеет нулевой определитель, система имеет не единственное решение и возбуждается исключение LinearAlgebraError:

>>> a = Numeric.array([[1.0, 2.0], [0.5, 1.0]])

>>> x = LinearAlgebra.solve_linear_equations(a, b)

Traceback (most recent call last):

 File "", line 1, in ?

 File "/usr/local/lib/python2.3/site–packages/Numeric/LinearAlgebra.py", line 98,

  in solve_linear_equations raise LinAlgError, 'Singular matrix'

LinearAlgebra.LinAlgError: Singular matrix

Функция LinearAlgebra.inverse() находит обратную матрицу. Однако не следует решать линейные уравнения с помощью LinearAlgebra.inverse() умножением на обратную матрицу, так как она определена через LinearAlgebra.solve_linear_equations():

def inverse(a):

 return solve_linear_equations(a, Numeric.identity(a.shape[0]))

Функция LinearAlgebra.eigenvalues() находит собственные значения матрицы, а LinearAlgebra.eigenvectors() — пару: собственные значения, собственные вектора:

>>> from Numeric import array, dot

>>> from LinearAlgebra import eigenvalues, eigenvectors

>>> a = array([[-5, 2], [2, — 7]])

>>> lmd = eigenvalues(a)

>>> print "Собственные значения:", lmd

Собственные значения: [-3.76393202–8.23606798]

>>> (lmd, v) = eigenvectors(a)

>>> print "Собственные вектора:"

Собственные вектора:

>>> print v

[[ 0.85065081 0.52573111]

 [-0.52573111 0.85065081]]

>>> print "Проверка:", dot(a, v[0]) - v[0] * lmd[0]

Проверка: [ -4.44089210e–16 2.22044605e–16]

Проверка показывает, что тождество выполняется с достаточно большой точностью (числа совсем маленькие, практически нули): собственные числа и векторы найдены верно.

<p>Модуль RandomArray</p>

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

Функция RandomArray.random() создает массивы из псевдослучайных чисел, равномерно распределенных в интервале (0, 1):

>>> import RandomArray

>>> print RandomArray.random(10) # массив из 10 псевдослучайных чисел

[ 0.28374212 0.19260929 0.07045474 0.30547682 0.10842083 0.14049676

  0.01347435 0.37043894 0.47362471 0.37673479]

Перейти на страницу:

Похожие книги