X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=matrices.py;fp=matrices.py;h=0000000000000000000000000000000000000000;hb=56ea961887d507114174af5f92b8c3c77b0b7a50;hp=a33259e6f3e71f7a4b5f2d47234464d80a9a3199;hpb=23a78f1c16aa4654b74a1908a091661fc6d551a2;p=dunshire.git diff --git a/matrices.py b/matrices.py deleted file mode 100644 index a33259e..0000000 --- a/matrices.py +++ /dev/null @@ -1,84 +0,0 @@ -""" -Utility functions for working with CVXOPT matrices (instances of the -``cvxopt.base.matrix`` class). -""" - -from math import sqrt -from cvxopt import matrix - -def append_col(left, right): - """ - Append the matrix ``right`` to the right side of the matrix ``left``. - - EXAMPLES: - - >>> A = matrix([1,2,3,4], (2,2)) - >>> B = matrix([5,6,7,8,9,10], (2,3)) - >>> print(append_col(A,B)) - [ 1 3 5 7 9] - [ 2 4 6 8 10] - - - """ - return matrix([left.trans(), right.trans()]).trans() - -def append_row(top, bottom): - """ - Append the matrix ``bottom`` to the bottom of the matrix ``top``. - - EXAMPLES: - - >>> A = matrix([1,2,3,4], (2,2)) - >>> B = matrix([5,6,7,8,9,10], (3,2)) - >>> print(append_row(A,B)) - [ 1 3] - [ 2 4] - [ 5 8] - [ 6 9] - [ 7 10] - - - """ - return matrix([top, bottom]) - -def identity(domain_dim): - """ - Return a ``domain_dim``-by-``domain_dim`` dense integer identity - matrix. - - EXAMPLES: - - >>> print(identity(3)) - [ 1 0 0] - [ 0 1 0] - [ 0 0 1] - - - """ - if domain_dim <= 0: - raise ValueError('domain dimension must be positive') - - entries = [int(i == j) - for i in range(domain_dim) - for j in range(domain_dim)] - return matrix(entries, (domain_dim, domain_dim)) - - -def norm(matrix_or_vector): - """ - Return the Frobenius norm of ``matrix_or_vector``, which is the same - thing as its Euclidean norm when it's a vector (when one of its - dimensions is unity). - - EXAMPLES: - - >>> v = matrix([1,1]) - >>> print('{:.5f}'.format(norm(v))) - 1.41421 - - >>> A = matrix([1,1,1,1], (2,2)) - >>> norm(A) - 2.0 - - """ - return sqrt(sum([x**2 for x in matrix_or_vector]))