示例#1
0
def matrix():
    result = None
    if request.method == 'POST':
        try:
            op = request.form.get('submit', None)
            acalc = request.form.get('a-submit', None)
            bcalc = request.form.get('b-submit', None)
            if acalc:
                letter = 'A'
                calc = acalc
            elif bcalc:
                letter = 'B'
                calc = bcalc
            else:
                mata = []
                for x in range(3):  #TODO make a function def to get a matrix
                    mata.append([])  #def get_mat(letter,x,y):
                    for y in range(3):
                        string = 'A' + str(x) + str(y)
                        mata[x].append(Fraction(request.form[string]))
                matb = []
                for x in range(3):
                    matb.append([])
                    for y in range(3):
                        string = 'B' + str(x) + str(y)
                        matb[x].append(Fraction(request.form[string]))
                a = Matrix(mata)
                b = Matrix(matb)
                if op == 'X':
                    matresult = a * b
                if op == '-':
                    matresult = a - b
                if op == '+':
                    matresult = a + b
                result = matresult.tostr().rows
                return render_template('matrix.html',
                                       matrix_result=result,
                                       det_result=None,
                                       Error=None)

            mat = []
            for x in range(3):
                mat.append([])
                for y in range(3):
                    string = letter + str(x) + str(y)
                    mat[x].append(Fraction(request.form[string]))
            m = Matrix(mat)
            if 'Determinant' in calc:
                result = str(m.determinant())
                return render_template('matrix.html',
                                       matrix_result=None,
                                       det_result=result,
                                       Error=None)
            elif 'Inverse' in calc:
                result = m.inverse().tostr().rows
                return render_template('matrix.html',
                                       matrix_result=result,
                                       det_result=None,
                                       Error=None)
            elif 'Transpose' in calc:
                result = m.transpose().tostr().rows
                return render_template('matrix.html',
                                       matrix_result=result,
                                       det_result=None,
                                       Error=None)
            elif 'Triangle' in calc:
                result = m.triangle().tostr().rows
                return render_template('matrix.html',
                                       matrix_result=result,
                                       det_result=None,
                                       Error=None)

            else:
                return render_template('matrix.html',
                                       matrix_result=None,
                                       det_result=None,
                                       Error=None)
        except Exception as e:
            print(e)
            error = 'Invalid Matrix, Try again'
            return render_template('matrix.html',
                                   matrix_result=None,
                                   det_result=None,
                                   Error=error)

    return render_template('matrix.html', matrix_result=result)
示例#2
0
from __future__ import division

from csv_saver import save_rows_to_csv
from linear_networks import solve_linear_network, csv_to_network_branch_matrices
from choleski import choleski_solve
from matrices import Matrix

NETWORK_DIRECTORY = 'network_data'

L_2 = Matrix([[5, 0], [1, 3]])
L_3 = Matrix([[3, 0, 0], [1, 2, 0], [8, 5, 1]])
L_4 = Matrix([[1, 0, 0, 0], [2, 8, 0, 0], [5, 5, 4, 0], [7, 2, 8, 7]])
matrix_2 = L_2 * L_2.transpose()
matrix_3 = L_3 * L_3.transpose()
matrix_4 = L_4 * L_4.transpose()
positive_definite_matrices = [matrix_2, matrix_3, matrix_4]

x_2 = Matrix.column_vector([8, 3])
x_3 = Matrix.column_vector([9, 4, 3])
x_4 = Matrix.column_vector([5, 4, 1, 9])
xs = [x_2, x_3, x_4]


def q1():
    """
    Question 1
    """
    q1b()
    q1c()
    q1d()