Professional Documents
Culture Documents
الجبر الخطي
الجبر الخطي
أهم ش يء في الرياض يات ه و اإلختص ارت باس تعمال الرم وز وخص ائص العملي ة وأيض ا من األش ياء الل تي تجع ل
الرياضيات وسيلة فعالة لحل المشكالت هي التحويالت كال من اإلختصارات والتحويالت تجعل العمليات سهلة وأس رع بحيث
بدال من التطرق للخاصية تصبح الخاصية باإلختصارات مجرد خطوة تكتب لذلك نح اول في دروس الرياض يات أن نس تعمل
هاتين الخاصيتان في كل العمليات اللتي لم توضع لها عمليات وإختصارات مثال على ذلك
اإلختصارات الموجودة
الضغط الرياضي
األشعة:
)a = numpy.array([1,2,5,6]).astype(float
][
1
2
= ⃗ bيكتب كمايلي : الشعاع العموديColunm Vector
5
6
)b = numpy.array([[1],[2],[5],[6]]).astype(float
) | |∑(
n 1
=‖⃗v‖2
i=1
vi
2 2
√ 2 2
|= |v 1| +|v 2| + …+|v n
2
الطويلة من الرتبة الثانية تعرف ب مسافة إقليدس يمكن نمدجتها بواسطة numpyكما يلي:
)]]la.norm([[5.0],[3.0
أشعة الوحدة وهي األشعة اللتي طويلتها تساوي الواحد وتحسب كمايلي:
][
xu
‖‖⃗u
= ⃗u
yu
‖‖⃗u
يمكن جمع شعاعين ⃗ aو ⃗ bإدا و فقط إدا كان لهما نفس ع دد األس طر ،الجم ع يتم ع بر جم ع ك ل عنص رين من ⃗ aو ⃗ bلنفس
السطر بمعنى :
] [] [
a 1 b1
a b
c⃗ = 2 + 2
a3 b 3
a4 b 4
] [
a1 + b1
a +b
c⃗ = 2 2
a 3 + b3
a4 + b4
)]a = np.array([10,15
)]b = np.array([8,2
c = a + b
خصائص الجمع:
الجداء السلمي عبارة عن جداء بين شعاعين يكون بين شعاعين إحداهما أفقي و اآلخر عمودي بشرط أن يك ون ع دد األعم دة
حاصل هدا الجداء ه و ث ابت ) أي أن الحاص ل ليس ش عاع و إنم ا،في الشعاع األفقي يساوي عدد الصفوف في الشعاع العمودي
(عدد
[]
y1
[ x1 x2 x3] y 2 = ( x 1 + y 1 ) + ( x 2+ y 2 ) + ( x 3+ y 3 )
y3
import numpy
x = numpy.array([1,2,5,6]).astype(float)
y = numpy.array([[1],[8],[15],[3]]).astype(float)
x_dot_y = numpy.dot(x, y)
print( x_dot_y)
أو مباش رةnumpy . transpose ( y ) إدا ك ان الش عاعين كالهم ا أفقي أو عم ودي يجب تحوي ل أح دهما بإس تعمال الدال ة
y .T بإستعمال
import numpy
x = numpy.array([1,2,5,6]).astype(float)
y = numpy.array([1,8,15,3]).astype(float)
yt = numpy.transpose(y)
x_dot_y = numpy.dot(x, yt)
print( x_dot_y)
import numpy
x = numpy.array([1,2,5,6]).astype(float)
y = numpy.array([1,8,15,3]).astype(float)
yt = y.T
x_dot_y = numpy.dot(x, yt)
print( x_dot_y)
x , ⃗y ) ⃗‖ و الزاوية بينهماx‖,‖⃗y‖ يمكن حساب الجداء السلمي بطريقة أخرى إدا كان لدينا طويلة الشعاعين
: نستعمل المعادلة التاليةangle ( ⃗
نحول الزاوية من الدرجات إلى الرادي ان بإس تعمال )( ، numpy . radiansبع د حس اب الج داء الس لمي نج د الت دوير إلى الوح دة
بإستعمال )( numpy . round
تطبيق آخر للمعادلة السابقة وهو إيجاد الزاوية بين الشعاعين بحيث:
⃗x . ⃗y
=) ) cos ( angle ( ⃗x , ⃗y
‖‖⃗x‖.‖⃗y
import numpy
import numpy.linalg as la
)x = numpy.array([1,2,5,6]).astype(float
)y = numpy.array([1,8,15,3]).astype(float
yt = y.T
)x_dot_y = numpy.dot(x, yt
))cos_of_angle = numpy.divide(x_dot_y, la.norm(x)*la.norm(yt
)angle = numpy.arccos(cos_of_angle
)angle = numpy.rad2deg(angle
)print(angle
الدالة )( numpy . arccosهي ) cos−1 ( .و نحول من الراديان إلى الدرجات بإستعمال )(numpy . rad 2 deg
نقول عن شعاعين xو yأنهما متعامدين ( )orthognalإدا كان الجداء السلمي بينهما معدوما ⃗x . ⃗y =0 :
اإلسقاط:
الشعاع ⃗x projctedهو المسقط العمودي للشعاع ⃗xعلى الشعاع ،⃗yكما يعرف أيضا على أنه ظل الش عاع ⃗xعلى الش عاع ⃗yإدا
ما تم تسليط أشعة ضوئية عمودية على الشعاع . ⃗y
أشعة الضوء
ظل على
: يمكن إيجاد طويلة شعاع اإلسقاط كما يلي
‖⃗x projected‖ x⃗ . ⃗y
cos (θ )= =
‖⃗x‖ ‖⃗x‖ .‖⃗y‖
⃗x . ⃗y
‖x⃗ projected‖= ‖⃗y‖
⃗x projected ⃗ وبتالي لهما نفس اإلتجاه ومختلفان فقط في الطويلة وبتالي ف إن عب ارة الش عاعy شعاع اإلسقاط مطابق على شعاع
⃗y هي طويلته مضروبة في شعاع الوحدة للشعاع
⃗y
⃗y unit =
‖⃗y‖
⃗x . ⃗y ⃗y
⃗x projected=
‖⃗y‖ ‖⃗y‖
⃗x . ⃗y
⃗x projected= 2
⃗y
‖⃗y‖
import numpy
import numpy.linalg as la
x = numpy.array([1,2,5,6]).astype(float)
y = numpy.array([1,8,15,3]).astype(float)
yt = y.T
x_dot_y = numpy.dot(x, yt)
norm_square_of_yt =numpy.square(la.norm(yt))
x_projected = numpy.divide(x_dot_y,norm_square_of_yt)*yt
print( x_projected)
import numpy
x = numpy.array([1,2,5]).astype(float)
y = numpy.array([1,8,15]).astype(float)
yt = y.T
))x_cross_y =print(numpy.cross(x, yt
اما المصفوفة فيمكن رأيتها على أنها مجموعة من األشعة األفقية Row Vectors
] [
1 6 1
[ 2 7و ] [ 1 8 3يمكن مث ال المص فوفة A= 2 7 4عب ارة عن ثالث أش عة أفقي ة هي ] [ 1 6 1و ] 4
1 8 3
نمدجتها كما يلي:
للوصول إلى أحد عناصر المصفوفة يستعمل عنوان العنصر ( ،)indexالعنوان هو رتبة العنصر في الصف والعمود ،ويكتب
كما يلي ] ، A [row , colأي مثال العنصر 7يمكن الحصول عليه بالتعليمة ] A [1 , 1حيث يبدأ العد من الصفر وليس من الواحد
[ ]
Row /col 0 1 2
0 1 6 1
=A
1 2 7 4
2 1 8 3
import numpy
A = numpy.array([[1, 6, 1],
[2, 7, 4],
)[1, 8, 3]]).astype(float
)]print(A[1,1
كما يمكن أيضا بهده الطريقة إختيار صف كامل ب ] A [row , :مثال الصف األول يكتب كما يلي:
import numpy
A = numpy.array([[1, 6, 1],
[2, 7, 4],
)[1, 8, 3]]).astype(float
)]print(A[0,:
إختيار عمود معين بالتعليمة ] A [:, colمثال العمود الثاني نحصل عليه ب :
import numpy
A = numpy.array([[1, 6, 1],
[2, 7, 4],
)[1, 8, 3]]).astype(float
)]print(A[:,1
إختيار جزء من المصفوفة ،مثال إختيار جزء من المصفوفة من الصف األول إلى الثاني و من العمود الثاني إلى العمود الثالث
ب ]A [0 :2 , 0 :2
import numpy
A = numpy.array([[1, 6, 1],
[2, 7, 4],
)[1, 8, 3]]).astype(float
)]print(A[0:2,0:2
T
Aij = A ji
] [
1 6 1
A= 2 7 4
1 8 3
] [
1 2 1
T
A =6 7 8
1 4 3
import numpy
A = numpy.array([[1, 6, 1],
[2, 7, 4],
)[1, 8, 3]]).astype(float
A_transpose = numpy.transpose(A) # or A_transpose = A.T
)print(A_transpose
إدا كانت المصفوفة Aمتناظرة Symmetricفإن ، A=A Tال تكون المصفوفة متناظر إال إدا كانت مربعة أي إال إدا كان
عدد األعمدة Columnsتساوي عدد األسطر . Rows
هي مصفوفة متناظرة في مجال معين أي أنها خارج هدا المجال قيم المصفوفة معدومة
المصفوفة األحادية:
المصفوفة األحادية I nهي مصفوفة مربعة دات األبعاد nXnو اللتي يكون فيها العناصر الموجودة في قطرها تساوي الواح د
و باقي العناصر تساوي الصفر:
مثال:
] [
1 0 0
I 3= 0 1 0
0 0 1
نستعمل الدالة ) numpy . eye (nإلنشاء دالة أحادية دات األبعاد nXnبإستعمال مكتبة numpy
import numpy
)I_n = numpy.eye(3
)print(I_n
المصفوفة القطرية : Diagonal Matrix
إدا كانت جميع عناصر المصفوفة قيمتها 0بإستثناء العناصر الموجودة حيث تتساوى رتبة السطر و العمود أي :
مثال:
[ ]
1 0 0
D= 0 12 0
0 0 5
نستعمل الدالة ) numpy . diag(nإلنشاء دالة قطرية دات األبعاد nXnبإستعمال مكتبة numpy
import numpy
)]D = numpy.array([1, 12, 5
)D = numpy.diag(D
)print(D
على هدا فإن المصفوفة األحادية عبارة عن مصفوفة قطرية :
] [
1 0 0
I 3= 0 1 0
0 0 1
تفيدنا هده الخصائص كثيرا خاصة في عملية التخزين و قراءة المصفوفات في الحاسوب الرقمي.
فمثال ال نحت اج إلى تخ زين األص فار باإلض افة إدا ك انت المص فوفة متن اظرة تحت اج إلى تخ زين الج زء العل وي فق ط ،في
حسابات FEMفإن المصفوفات أيضا محدودة أي متناظرة و محدودة .
يمكن جمع مصفوفتين Aو Bإدا و فق ط إدا ك ان لهم ا نفس ع دد األعم دة و نفس ع دد األس طر ،الجم ع يتم ع بر جم ع ك ل
عنصرين من Aو Bلنفس السطر و نفس العود بمعنى :
[ ]
c11 c12 c13
C= c21 c22 c23
c31 c32 c33
c ij =a ij +b ij
مثال :
=A
[ 0.52 1 1
3 0 ]
=B
[ 32 1 2
4 1 ]
أوال أبعاد Aهي 2 X 3و أبعاد Bأيضا 2 X 3وبالتالي يمكن جمع المصفوفتين :
=C
[0.52 1 1 3 1 2
+
3 0 2 4 1[] ]
=C
[0.5+
2+3
2
1+1 1+2
3+ 4 0+1 ]
C=
[2.55 2 3
7 1 ]
import numpy
A = numpy.array([[ 2, 1, 1],
[0.5, 3, 0]
]).astype(float)
B = numpy.array([[3, 1, 2],
[2, 4, 1]
]).astype(float)
C = A + B
print(C)
D= A−B لتكن، نفس مراحل عملية الجمع تستخدم في عملية الطرح
D=
[ 0.52 3 0
−
][
1 1 3 1 2
2 4 1 ]
D=
[ 0.5−2
2−3 1−1 1−2
3−4 0−1 ]
D=
[−1.5
−1 0 −1
−1 −1 ]
import numpy
A = numpy.array([[ 2, 1, 1],
[0.5, 3, 0]
]).astype(float)
B = numpy.array([[3, 1, 2],
[2, 4, 1]
]).astype(float)
D = A - B
print(D)
: جداء مصفوفة مع عدد ثابت
: جداء عدد ثابت مع مصفوفة هي مصفوفة قيمة كل عنصر منها هو حاصل جداء هدا الثابت مع كل عنصر من المصفوفة
S=k A
sij =k aij
S=4∗
[ 0.52 1 1
3 0 ]
S=
[ 4∗0.5
4∗2 4∗1 4∗1
4∗3 4∗0 ]
=S
[ 82 4 4
12 0 ]
import numpy
A = numpy.array([[ 2, 1, 1],
][0.5, 3, 0
)]).astype(float
k = 4
S = k * A
)print(S
جمع أو طرح مصفوفتين لديها األبعاد nXmيحتاج إلى n∗mعملية جمع أو طرح في حين جداء عدد ثابت في مصفوفة دات
األبعاد nXmيحتاج إلى n∗mعملية ضرب .وبالتالي إدا كانت المصفوفة متناظرة يمكن تقليص عدد العمليات الحسابية.
يمكن ضرب مصفوفتين Aو Bإدا و فقط إدا كانت عدد أعمدة المصفوفة Aتساوي عدد أسطر المصفوفة . B
A is pXm
B is mXq
C is pXq
m
c ij =∑ a ir b rj
r =1
مثال:
[ ] ] [
5 3 1 1 5
A= 4 6 2 , p=3 ,m=3 , B= 2 4 m=3 ,q=2
10 3 4 3 2
C is 3 X 2
[ ]
) ( 5∗1+3∗2+1∗3 ) ( 5∗5+3∗4 +1∗2
) C= ( 4∗1+6∗2+2∗3 ) ( 4∗5+ 6∗4+ 2∗2
) ( 10∗1+3∗2+4∗3 ) ( 10∗5+ 3∗4+ 4∗2
] [
14 39
C= 22 48
28 70
import numpy
A = numpy.array([[ 5, 3, 1],
[ 4, 6, 2],
)[10, 3, 4]]).astype(float
B = numpy.array([[1, 5],
[2, 4],
)[3, 2]]).astype(float
)C = numpy.dot(A, B
)print(C
عدد العمليات الحسابية لضرب مصفوفة دات pXmوأخرى دات mXqهي p∗q∗m
خصائص:
=A
[ 12 00] , B=[ 03 04 ] ,C= AB=[ (( 1∗0+ ) 0∗3
) 2∗0+0∗3
) ( 1∗0+0∗4
) ( 2∗0+0∗4 ] [ ]
=, C
0 0
0 0
مقلوب مصفوفة:
في عالم المصفوفات ال توجد هناك عملية القس مة ب دال من دل ك هن اك مقل وب مص فوفة .في المقل وب نتعام ل م ع المص فوفات
المربعة فقط أي اللتي عدد سطورها يساوي عدد أعمدتها.
مقلوب المصفوفة Aيرمز له ب A−1بفرض المقوب المصفوفة Aموجود يمكن كتابة A A−1 =Iأو . A−1 A=I
المصفوفة اللتي ل ديها مقل وب تس مى ب Nonsingularأي ليس ال تحت وي على قيم ممنوع ة ن أم ا المص فوفة الل تي له ا قيم
ممنوعة فتسمى Singularأي لها قيم ممنوعة.
هما عبارة عن دالتين تحوالن مصفوفة مربعة إلى عدد وبالتالي فإن Trace and Determinantمعرفتان من أجل مص فوفة
مربعة.
n
∑ aii
i=1
مثال :
[ ]
4 3 1 2
3 6 2 1
=A
1 2 8 6
2 1 6 12
Tr ( A )=30
import numpy
A = numpy.array([[4, 3, 1, 2],
[3, 6, 2, 1],
[1, 2, 8, 6],
[2, 1, 6, 12]])
T = numpy.trace(A)
print(T)
: و يحسب كمايليdet ( A ) يرمز له بA لمصفوفةDeterminant أما
n
det ( A )=∑ (−1 )
1+ j
a1 j det ( A1 j ) ; A1 j means we elimenate the 1st row∧the j th column ¿ A ¿
j=1
: مثال
A=
[ ]
a 11 a12
a 21 a22
1 +1 1+2
det ( A )=(−1 ) a 11 det ( A 11 ) + (−1 ) a12 det ( A 12)
:2مثال
[ ]
1 0 −3 5
2 2 4 −2
A=
3 1 1 0
4 −1 0 1
n
det ( A )=∑ (−1 )
1+ j
a1 j det ( A1 j )
j=1
1 +1 1+2 1+3 1 +4
det ( A )=(−1 ) a 11 det ( A 11 ) + (−1 ) a12 det ( A 12) + (−1 ) a13 de t ( A13 ) + (−1 ) a12 det ( A14 )
([ ]) ([ ]) ([ ]) ([ ])
2 4 −2 2 4 −2 2 2 −2 2 2 4
det ( A )=1 det 1 1 0 −0 det 3 1 0 −3 det 3 1 0 −5 det 3 1 1
−1 0 1 40 1 4 −1 1 4 −1 0
([ ]) ([ ]) ([ ])
2 4 −2 2 2 −2 2 2 4
det ( A )=det 1 1 0 −3 det 3 1 0 −5 det 3 1 1
−1 0 1 4 −1 1 4 −1 0
([ ])
2 4 −2
det 1 1 0 =2 ( ( 1∗1 )−( 0∗0 ) ) −4 ( ( 1∗1 )− ( 0∗−1 )) −2 ( ( 1∗0 )−( 1∗−1 ) )
−1 0 1
([ ])
2 4 −2
det 1 1 0 =2−4−2
−1 0 1
([ ])
2 4 −2
det 1 1 0 =−4
−1 0 1
([ ])
2 2 −2
det 3 1 0 =2 ( ( 1∗1 )−( 0∗−1 ) )−2 ( ( 3∗1 )− ( 0∗4 ) ) −2 ( ( 3∗−1 )−( 1∗4 ))
4 −1 1
([ ])
2 2 −2
det 3 1 0 =2−6+14
4 −1 1
([ ])
2 2 −2
det 3 1 0 =10
4 −1 1
([ ])
2 2 4
det 3 1 1 =2 ( ( 1∗0 )−( 1∗−1 ) )−2 ( ( 3∗0 ) −( 1∗4 ) ) + 4 ( ( 3∗−1 )−( 1∗4 ) )
4 −1 0
([ ])
2 2 4
det 3 1 1 =2+8−28
4 −1 0
([ ])
2 2 4
det 3 1 1 =−18
4 −1 0
det ( A )=−4−3∗10−5∗(−18)
det ( A )=−124
الخط وة الثاني ة يق ترح ح ل إبت دائي نس تعمل x 2=0و x 3=0من المعادل ة األولى نج د x 1=1.3ه ذه القيم ة اإلبتدائ ة
تستعمل في المعادلة 2إليجاد المجهول x 2=1.3−0.2∗1.3−0.1∗0=1.05وتستعمل هذه القيمة مع القيمة السابقة ل x 1
لحساب قيمة x 3
تكرر هذه العملية في كل مرة بالقيم المتحصل عليها في السابق ،بعد تكرار العملية kمرة نتحصل على القيم القريب ة ج دا
من الحل العملية تتوقف إذا وصل الفارق بين قيم المجهول في المرة k −1و الم رة kأق ل من ع دد ص غير يح دد من ط رف
المستعمل
def lin_solve(b,x,x0,a,c):
cR = 1.0/c
for k in range(0,ite):
for j in range(0,N-1):
for i in range(0,N-1):
x[IX(i,j)] = (x0[IX(i,j)] + a * ( x[IX(i+1,j)] + x[IX(i-
1,j)] + x[IX(i,j+1)] + x[IX(i,j-1)])) * cR