English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الرياضيات الخطية في NumPy

    مثال على NumPy رياضيات خطية

وظيفةوصف
dotناتج المصفوفة الداخلية،أي ضرب العناصر المترابطة.
vdotناتج نقاط المصفوفة
ناتج المصفوفة الداخليةناتج المصفوفة الداخلية
matmulناتج مصفوفة المصفوفة
determinantدeterminant مصفوفة
solveحل معادلة المصفوفة الخطية
invحساب معكوس المصفوفة

numpy.dot()

numpy.dot() لعددين مصفوفات أحادية الأبعاد،يحسب هو مجموع منتجات العناصر المتطابقة بينهما (مما يُدعى بجبري الداخلية);للمصفوفات ثنائية الأبعاد،يحسب هو произвед مصفوفة المصفوفة؛للمصفوفات متعددة الأبعاد،واحدة من معادلات الحساب العامة لها كالتالي،وكل عنصر في مصفوفة النتيجة هو: مجموع منتجات جميع العناصر في الأ维س الأخير من المصفوفة a مع جميع العناصر في الأ维س الثاني الأخير من المصفوفة b: dot(a, ب)[i,j,k,m] = مجموع (a[i,j,:] * b[k,:,m])

   numpy.dot(a, ب،out=None)

شرح المعاملات:

a : ndarray مصفوفة b : ndarray مصفوفة out : ndarray, اختياري،للحفاظ على نتائج حساب dot()

 import numpy.matlib
 import numpy as np
 a = np.array([[1,2],[3,4]])
 b = np.array([[11,12],[13,14]])
 print(np.dot(a,b))

النتيجة الصادرة هي:

 [[37 40]] 
 [85 92]]

معادلة حسابها:

[[1*11+2*13, 1*12+2*14],[3*11+4*13, 3*12+4*14]]

numpy.vdot()

�数ونية numpy.vdot() هي نقطة التقاء بين نقطتين. إذا كان الأول معقد، فإنه يتم استخدام مركب مضاد للاحتمال. إذا كان المعامل مصفوفة متعددة الأبعاد، يتم تقليلها.

 import numpy.matlib
 import numpy as np
 a = np.array([[1,2],[3,4]]) 
 b = np.array([[11,12],[13,14]]) 
  
 # vdot يتم حساب الإنتفاع بعدة طرق
 print(np.vdot(a,b))

النتيجة الصادرة هي:

 130

معادلة حسابها:

1*11 + 2*12 + 3*13 + 4*14 = 130

numpy.inner()

�数ونية numpy.inner() تعود بمتوسط النقاط بين مصفوفة واحدة. بالنسبة للأبعاد الأعلى، تعود بمضروب مجموعات النقاط في المحور الأخير.

 import numpy.matlib
 print(np.inner(np.array([1,2,3]),np.array([0,1,0])))
 # تساوي 1*0+2*1+3*0

النتيجة الصادرة هي:

   2
 import numpy as np 
 a = np.array([[1,2], [3,4]]) 
  
 print('مصفوفة a: ')
 print(a)
 b = np.array([[11, 12], [13, 14]]) 
  
 print('مصفوفة b:')
 print(b)
  
 print('الإنتفاع:')
 print(np.inner(a,b))

النتيجة الصادرة هي:

 مصفوفة a:
 [[1 2]]
  [3 4]]
 مصفوفة b:
 [[11 12]
  [13 14]]
 الإنتفاع:
 [[35 41]
  [81 95]]
 مصفوفة a:
 [[1 2]]
  [3 4]]
 مصفوفة b:
 [[11 12]
  [13 14]]
 الإنتفاع:
 [[35 41]
  [81 95]]

معادلة حساب الإنتفاع:

 1*11+2*12, 1*13+2*14 
 3*11+4*12, 3*13+4*14

numpy.matmul

�数ونية numpy.matmul تعود بمضروب المصفوفتين. على الرغم من أن الديناميكيات العادية هي ضرب مصفوفتين دائريتين، ولكن إذا كان أي من المعلمات أبعاد أكبر من 2، فإنه يتم اعتباره كوجود مصفوفة في آخرين، ويتم تنفيذ الإذاعة المناسبة.

من جهة أخرى، إذا كان أي من المعلمات مصفوفة أحادية الأبعاد، فإنها يتم رفعها إلى مستوى المصفوفة عن طريق إضافة 1 في مستوى الأبعاد، ويتم إزالتها بعد عملية الضرب.

بالنسبة للصفين، فهي عملية ضرب المصفوفات:

 import numpy.matlib 
 import numpy as np 
  
 a = [[1,0],[0,1]] 
 b = [[4,1],[2,2]] 
 print (np.matmul(a,b))

النتيجة الصادرة هي:

   [[4 1] 
  [2 2]]

العمليات الثنائية للثلاثي الأبعاد:

 import numpy.matlib 
 import numpy as np 
  
 a = [[1,0],[0,1]] 
 b = [1,2] 
 print (np.matmul(a,b))
 print(np.matmul(b,a))

النتيجة الصادرة هي:

 [1 2] 
 [1 2]

مستوى الأبعاد أكبر من 2 :

 import numpy.matlib 
 import numpy as np 
  
 a = np.arange(8).reshape(2,2,2) 
 ب = np.arange(4).reshape(2,2) 
 print (np.matmul(a,b))

النتيجة الصادرة هي:

   [[[ 2 3]]
   [ 6 11]]
  [[10 19]]
   [14 27]]]

numpy.linalg.det()

�数مة numpy.linalg.det() تقوم بحساب determinant للمصفوفة المدخلة.

الـ determinant هو قيمة مفيدة جدًا في الجبر الخطي. يتم حسابه من خلال عناصر الـ diagonal من المصفوفة. بالنسبة للمصفوفة 2×2، هو مجموع ضرب العناصر اليسرى العلوية واليمنى السفلية ناقص ضرب العناصر اليسرى السفلية واليمنى العلوية.

بعبارة أخرى، لمصفوفة [[a،b],[c،d]]، يتم حساب determinant ك ad-bc. يُعتبر المثلث الأكبر هو تجمع لمصفوفات 2×2.

import numpy as np
a = np.array([[1,2], [3,4]]) 
  
print (np.linalg.det(a))

النتيجة الصادرة هي:

-2.0
 import numpy as np
  
 b = np.array([[6,1,1], [4, -2, 5], [2,8,7]]) 
 print(b)
 print (np.linalg.det(b))
 print (6*(-2*7 - 5*8) - 1*(4*7 - 5*2) + 1*(4*8 - -2*2))

النتيجة الصادرة هي:

   [[ 6 1 1]]
  [ 4 -2 5]
  [ 2 8 7]]
 -306.0
 -306

numpy.linalg.solve()

�数مة numpy.linalg.solve() تقوم بحل المعادلة الخطية المصفوفية.

تأمل في المعادلة الخطية التالية:

 x + y + z = 6
 2y + 5z = -4
 2x + 5y - z = 27

يمكن تمثيلها بشكل مصفوفي كالتالي:

إذا أصبحت المصفوفة A، X، B، يصبح المعادلة كالتالي:

 AX = B
 أو
 X = A^(-1)B

numpy.linalg.inv()

�数مة numpy.linalg.inv() تقوم بحساب مصفوفة العكس من الجمع.

مصفوفة العكس (inverse matrix)تعريف: إذا كان A هو مصفوفة أرقام من الدرجة n في المجال A، فإنه يوجد مصفوفة أخرى من الدرجة n في نفس المجال B، بحيث: AB=BA=E، فيُقال أن B هي مصفوفة العكس للنسبة A، بينما يُقال أن A هي مصفوفة قابلة للعكس. ملاحظة: E هي مصفوفة الوحدة.

 import numpy as np 
  
 x = np.array([[1,2],[3,4]]) 
 y = np.linalg.inv(x) 
 print(x)
 print (y)
 print (np.dot(x,y))

النتيجة الصادرة هي:

 [[1 2]]
  [3 4]]
 [[-2. 1. ]]
  [ 1.5 -0.5]]
 [[1.0000000e+00 0.0000000e+00]]
  [8.8817842e-16 1.0000000e+00]]

الآن قم بإنشاء نقيض مصفوفة A:

 import numpy as np 
  
 a = np.array([[1,1,1],[0,2,5],[2,5,-1]]) 
  
 print('مصفوفة a: ')
 print(a)
 ainv = np.linalg.inv(a) 
  
 print('النقيض a: ')
 print(ainv)
  
 print('مصفوفة b: ')
 b = np.array([[6],[-4],[27]]) 
 print(b)
  
 print('حساب: A^(-1)B: ')
 x = np.linalg.solve(a, b) 
 print(x)
 # هذا هو الحل للاتجاه الخطي x = 5, y = 3, z = -2

النتيجة الصادرة هي:

 مصفوفة a:
 [[ 1 1 1]
  [ 0 2 5]
  [ 2 5 -1]
 النقيض a:
 [[ 1.28571429 -0.28571429 -0.14285714]
  [-0.47619048 0.14285714 0.23809524]
  [ 0.19047619 0.14285714 -0.0952381 ]
 مصفوفة b:
 [[ 6]
  [-4]
  [27]]
 حساب: A^(-1)B:
 [[ 5.]
  [ 3.]
  [-2.]]
   x = np.dot(ainv, b)