рдХреНрд▓реЛрди Numpy

рдЫрд╡рд┐

рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдПрдХ NumPy рдХреНрд▓реЛрди, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдкрд╛рдпрдерди рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд╛рдпрдерди рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбреНрдпреВрд▓ред

рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рд╣реЛрдорд╡рд░реНрдХ рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдорд╛рдирджрдВрдбреЛрдВ рдФрд░ рдбрд┐рдХрдореНрдкреЛрдЬрд╝рд┐рд╢рди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЕрдЬрдЧрд░ рдХреЛ рдЪреБрдирд╛ (рдЬреЛ рдХрд┐ рдПрдХ рдЧрд▓рддреА рдереА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА / рд╕реА ++ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИ) рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдореИрдВ рдиреНрдпреВрдордкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд▓рд┐рдЦрдирд╛ рдерд╛, рдирд╛рдмрд╛рд▓рд┐рдЧреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп, рдирд┐рд░реНрдзрд╛рд░рдХ, рдЖрджрд┐ред рдкрд░рд┐рдгрд╛рдо рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рдиреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

рдореЗрд░рд╛ рд╢реБрджреНрдз рдЕрдЬрдЧрд░ рдХреЛрдб NumPy рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИ, рдЬреЛ C рдФрд░ рдлреЛрд░рдЯреНрд░рд╛рди рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ (рд╕рд╛рде рд╣реА рдореЗрд░рд╛ рдХреЛрдб рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рд╣реИ)ред

MatLOL рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

  • рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рдпреЛрдЧ, рдЕрдВрддрд░ рдФрд░ рдЙрддреНрдкрд╛рдж
  • рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЙрддреНрдкрд╛рдж
  • рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдВрдХреНрд░рдордг
  • рд▓рдШреБ рдореИрдЯреНрд░рд┐рдХреНрд╕
  • рдореИрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рд░реНрдзрд╛рд░рдХ
  • рдЙрд▓рдЯрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕
  • рд╕рдВрдШ рдореИрдЯреНрд░рд┐рдХреНрд╕
  • рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдВрдЦреНрдпрд╛
  • рдкрд╣рд▓рд╛, рджреВрд╕рд░рд╛ (рдЕрдВрддрд┐рдо рд░реВрдк рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛), рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рдФрд░ рдЕрдирдВрдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рдорд╛рдирджрдВрдб
  • рд╕рдореАрдХрд░рдг рдХрд╛ рд╣рд▓ AX = B
  • LU рдЕрдкрдШрдЯрди
  • рдЪреЛрд▓реНрд╕реНрдХреА рдЕрдкрдШрдЯрди
  • рд╕реАрдбреЗрд▓ рд╡рд┐рдзрд┐

рдореИрдереЙрд▓ рдЙрджрд╛рд╣рд░рдг


рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░реЗрдВ:

# from mathlol import * from mathlol import mathlol 

рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЖрд░рдВрднреАрдХрд░рдг

 matrix = mathlol() matrix.set([[1, 2, 3], [4, 5, 6], [7, -8, 9]]) matrix.get() #   

рдХреБрдЫ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдСрдкрд░реЗрд╢рди

 matrix * 2 #     2 A = [[0, 0, 0], [0, 1, 0], [0, 0, 0]] #  2  matrix.dot(A) matrix * A matrix.transposition() #   matrix.minor(i = 0, j = 0) #   matrix.determinant() #   matrix.inverse() #   L, U = matrix.lu() # LU  matrix.seidel(b = [[5.0], [9.0], [1.0]]) #   

рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рд░реНрдп рд╣реИрдВ

 vector = mathlol() vector.set([1, 2, 3, 4, 5]) vector.checkvector() # ,     vector.norm1_vector() vector.norm2_vector() vector.norm3_vector() 

рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг

рдореИрдереЙрд▓ рдкреНрд░рджрд░реНрд╢рди


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдПрдирдПрдХреНрд╕рдПрди рдЖрдХрд╛рд░ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдЧрддрд┐ред рдореИрдЯреНрд░рд┐рдХреНрд╕ -100 рд╕реЗ 100 рддрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВред

рдХреЛрдб
 from mathlol import mathlol import time import random import matplotlib.pyplot as plt #    data = {} for i in range(10, 110, 10): array = [] for i_ in range(i): temp = [] for j_ in range(i): temp.append(random.randint(-100, 100)) array.append(temp) data[i] = array #      mlol_dot = {} for key in data.keys(): matrix = mathlol() matrix.set(matrix = data[key]) start = time.process_time() result = matrix * matrix end = time.process_time() - start mlol_dot[key] = end #   plt.plot(mlol_dot.keys(), mlol_dot.values()) plt.title("MathLOL \n ") plt.xlabel("  (NxN)") plt.ylabel(" ()") 


рдЫрд╡рд┐

100x100 рд╕реЗ 1000x1000 рддрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЙрддреНрдкрд╛рдж рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛

рдЫрд╡рд┐

рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдФрд░ рдореИрдереЛрд▓ рдХреА рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдерд▓реЛрд▓ рдХреА рдЧрддрд┐ рдмрд╣реБрдд рдзреАрдореА рдереА рдФрд░ рдореИрдВрдиреЗ рдореИрдереНрд╕ рдХреЛ 100x100 рд╕реЗ 1000x1000 рддрдХ рдХреЗ рдЕрдВрдХ рдХреЗ рд▓рд┐рдП рдФрд░ 10x10 рд╕реЗ 100x100 рддрдХ рдореИрдереЙрд▓ рдХреЗ рд▓рд┐рдП рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЫрд╡рд┐

MathLOL рдиреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░реЛрдбрдХреНрдЯ 100x100 рдХреА рдЧрдгрдирд╛ 0.16 рд╕реЗрдХрдВрдб рдореЗрдВ рд╣реА рдХреА, рдФрд░ NumPy рдиреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдкреНрд░реЛрдбрдХреНрдЯ 1000x1000 рдХреА рдЧрдгрдирд╛ 0.002 (!!!) рд╕реЗрдХрдВрдб рдореЗрдВ рд╣реА рдХреАред рдЕрдВрддрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред

рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдмрд╕ рдореИрдЯреНрд░рд┐рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рд╣рдордиреЗ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рдореИрдЯреНрд░рд┐рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдЙрддрдиреА рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрд┐рддрдирд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рдХреБрдЫ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛрдбрд╝реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЙрдб рдирдВрдмрд░ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди), рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ рдпрджрд┐ рдЖрдк рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╢рд╛рдпрдж рдХреЛрдб рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдм, рдХреЛрдб рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЧрд┐рдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред

PS рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ C / C ++ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдФрд░ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреВрдВрдЧрд╛ рдФрд░ рдпрд╣ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ NumPy рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдХрд┐рддрдирд╛ рдХрд░реАрдм рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/hi477308/


All Articles