English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مثال على NumPy رياضيات خطية
وظيفة | وصف |
dot | ناتج المصفوفة الداخلية،أي ضرب العناصر المترابطة. |
vdot | ناتج نقاط المصفوفة |
ناتج المصفوفة الداخلية | ناتج المصفوفة الداخلية |
matmul | ناتج مصفوفة المصفوفة |
determinant | دeterminant مصفوفة |
solve | حل معادلة المصفوفة الخطية |
inv | حساب معكوس المصفوفة |
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() هي نقطة التقاء بين نقطتين. إذا كان الأول معقد، فإنه يتم استخدام مركب مضاد للاحتمال. إذا كان المعامل مصفوفة متعددة الأبعاد، يتم تقليلها.
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() تعود بمتوسط النقاط بين مصفوفة واحدة. بالنسبة للأبعاد الأعلى، تعود بمضروب مجموعات النقاط في المحور الأخير.
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 تعود بمضروب المصفوفتين. على الرغم من أن الديناميكيات العادية هي ضرب مصفوفتين دائريتين، ولكن إذا كان أي من المعلمات أبعاد أكبر من 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() تقوم بحساب 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() تقوم بحل المعادلة الخطية المصفوفية.
تأمل في المعادلة الخطية التالية:
x + y + z = 6 2y + 5z = -4 2x + 5y - z = 27
يمكن تمثيلها بشكل مصفوفي كالتالي:
إذا أصبحت المصفوفة A، X، B، يصبح المعادلة كالتالي:
AX = B أو X = A^(-1)B
�数مة 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)