Saltar al contenido principal
LibreTexts Español

25.2: Revisión de código

  • Page ID
    115561
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    En la siguiente tarea en clase, vamos a evitar algunas de las bibliotecas más avanzadas (es decir, no numpy o scipy o sympy) para tratar de obtener una mejor comprensión de lo que está sucediendo en las matemáticas. El siguiente código implementa algunas funciones comunes de álgebra lineal:

    #Standard Python Libraries only
    import math
    import copy
    def dot(u,v):
        '''Calculate the dot product between vectors u and v'''
        temp = 0;
        for i in range(len(u)):
            temp += u[i]*v[i]
        return temp
    Hacer esto

    Escriba una prueba rápida para comparar la salida de la función punto anterior con la función de punto numpy.

    # Put your test code here
    def multiply(m1,m2):
        '''Calculate the matrix multiplication between m1 and m2 represented as list-of-list.'''
        n = len(m1)
        d = len(m2)
        m = len(m2[0])
        
        if len(m1[0]) != d:
            print("ERROR - inner dimentions not equal")
        
        #make zero matrix
        result = [[0 for j in range(m)] for i in range(n)]
    #    print(result)
        for i in range(0,n):
            for j in range(0,m):
                for k in range(0,d):
                    #print(i,j,k)
                    #print('result', result[i][j])
                    #print('m1', m1[i][k])
                    #print('m2', m2[k][j])
                    result[i][j] = result[i][j] + m1[i][k] * m2[k][j]
        return result
    Hacer esto

    Escriba una prueba rápida para comparar la salida de la función multiplicar anterior con la función multiplicar numpy.

    # Put your test code here
    Pregunta

    ¿Cuál es la complejidad Big-O de la función multiplicar anterior?

    Pregunta

    La línea 11 en el código multiplicado proporcionado inicializa una matriz del tamaño de la matriz de salida como una lista de listas con ceros. ¿Cuál es la complejidad Big-O de la línea 11?

    def norm(u):
        '''Calculate the norm of vector u'''
        nm = 0
        for i in range(len(u)):
            nm += u[i]*u[i]
        return math.sqrt(nm)
    Hacer esto

    Escriba una prueba rápida para comparar las salidas de la función norm anterior con la función numpy norm.

    #Put your test code here
    def transpose(A):
        '''Calculate the transpose of matrix A represented as list of lists'''
        n = len(A)
        m = len(A[0])
        AT = list()
        for j in range(0,m):    
            temp = list()
            for i in range(0,n):
                temp.append(A[i][j])
            AT.append(temp)
        return AT
    Hacer esto

    Escriba una prueba rápida para comparar la salida de la función de transposición anterior con la función de transposición numpy.

    # Put your test code here
    Pregunta

    ¿Cuál es la complejidad Big-O de la función de transposición anterior?

    Pregunta

    Explicar las diferencias en los resultados entre las funciones proporcionadas y sus contrapartes numpy.


    This page titled 25.2: Revisión de código is shared under a CC BY-NC 4.0 license and was authored, remixed, and/or curated by Dirk Colbry via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.