Professional Documents
Culture Documents
Matlab DR Alsafadie Ch3
Matlab DR Alsafadie Ch3
/
.1 .1استخدام رقم الترتيب ( )Index Numberالستخالص عناصر شعاع _________________ 94
ie
.1 .2استخدام عامل النقطتين (94 _____________________________ )Colon Operator( ):
ad
.1 .3استخالص عنصر ما من مصفوفة _____________________________________ 11
.1 .3 .1الترتيب المفرد (11 _____________________________:)Single Index Number
af
.1 .3 .2الترتيب المزدوج____________________________________________ 11
ls
.2استخدام التابع 65 _________________________________________ meshgrid
r.a
.3مصفوفات خاصة ______________________________________________ 56
/d
.3 .1مالحظات هامة على تابع )11 _____________________________________ diag(A
om
.6حل جملة معادالت خطية (06 _____________ )Solution of System of Linear Equations
w
/
ie
ad
af
ls
r.a
/d
om
.c
ok
bo
ce
.fa
w
w
w
84
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
/
ie
في الشعاع .x
ad
;]>> A=[4.5 3 5.1
]>> B=[2.5 A
af
= B
2.5000 4.5000 3.0000 5.1000
ls
الستبدال العنصر الثاني في المصفوفة Bبالعدد -1.2نستخدم األمر:
r.a
>> B(2)=-1.2
= B
/d
2.5000 -1.2000 3.0000 5.1000
om
يمكن كذلك إضافة عناصر جديدة إلى المصفوفة Bباستخدام رقم الترتيب.
.c
>> B(6)=11
ok
= B
2.5000 -1.2000 3.0000 5.1000 0 11.0000
bo
نالحظ أنه تم إضافة عنصر سادس إلى الشعاع Bو تم وضع قيمة 0في العنصر الخامس من الشعاع الجديد Bنظراً لعدم
وجود عنصر خامس في الشعاع Bالسابق.
ce
.1انشاء مصفوفة سطرية بتباعدات متساوية بين عناصرها مساوية للواحد (تم شرح هذا المفهوم سابقا ً في الفقرة
w
>> c=2:6
= c
w
84
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
/
ie
والذي يقرأ :جميع األسطر في العمود الثالث.
ad
بشكل مشابه من أجل استخالص السطر الثاني نكتب:
af
)>> y=E(2,:
= y
ls
2 5 8 11 1
r.a
والذي يقرأ :السطر الثاني ،جميع األعمدة.
.8يمكن أن يعني عامل النقطتين كذلك "من السطر iإلى السطر "jأو "من العمود iإلى العمود ."jكمثال:
/d
)>> Z=E(2:3,:
om
= Z
2 5 8 11 1
3 6 9 12 2
.c
)>> R=E(1:2,4:5
= R
bo
10 3
11 1
ce
والذي يقرأ :من السطر األول إلى الثاني ،العمود الرابع إلى الخامس.
)>> q=R(:
= q
w
10
w
11
w
3
1
مالحظة هامة :الستخالص العناصر الموجودة عند تقاطعات السطر األول و الثالث مع العمود الثاني و الرابع و الخامس
مثالً من المصفوفة Eنكتب:
)]>> T=E([1 3],[2 4 5
= T
4 10 3
00
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
/
ie
21 44 17 7 62 10
ad
A 3 2 25 18 8 11
af
93 21 6 59 12
11
ls
>> A=[2 4 17 62
r.a
3 2 1 8
;]9 21 5 11
/d
)>> A(8
= ans
om
1
.1 .3 .2الترتيب المزدوج
.c
يعتمد هذا الترتيب على رقم السطر و العمود حيث نحدد أوالً رقم السطر الذي يوجد فيه العنصر و من ثم رقم العمود.
ok
)>> A(2,3
bo
= ans
1
مالحظة هامة :يمكن استخدام كلمة endلتعريف آخر سطر أو عمود في المصفوفة.
ce
)>> A(end,2
= ans
.fa
21
الستخالص العنصر األخير في المصفوفة ،أي العنصر الذي يوجد عند تقاطع آخر سطر و آخر عمود ،نستخدم:
w
)>> A(end
w
= ans
11
w
مسألة
أنشأ كالً من المصفوفات التالية:
01
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
أنشأ شعاع عمودي يدعى dمؤلف من من العناصر الموجودة ضمن العمود الثالث في المصفوفة .A )1
أنشأ مصفوفة تدعى Eبحيث يكون العمود األول فيها الشعاع bو الثاني الشعاع .d )2
أنشأ شعاع عمودي يدعى fبحيث تكون أول ثالثة عناصر فيه هي عناصر الشعاع bو آخر ثالثة عناصر فيه )4
هي عناصر الشعاع .d
أنشأ مصفوفة تدعى Gبأربعة أسطر و ثالثة أعمدة .مؤلفة من المصفوفة Aو آخر سطر فيها هو أول ثالث )8
عناصر في .c
أنشأ شعاع عمودي يدعى hحيث أن أول عنصر فيه هو ( A1,3أي العنصر الموجود في السطر األول و العمود )0
/
الثالث من المصفوفة )Aو الثاني هو c1,2و الثالث هو .b2,1
ie
أنشأ مصفوفة تدعى Kمؤلفة من العناصر الموجودة في المصفوفة Aعند تقاطعات السطر األول و الثالث مع )6
ad
العمود الثاني و الثالث.
الحل
af
clear, clc
ls
;]A=[13 2 6;32 4 81;57 6 9
;]b=[3;8;12
r.a
;]c=[23 6 91 7
)'disp('# 1
/d
)d=A(:,3
)'disp('# 2
om
]E=[b d
)'disp('# 3
]f=[b;d
.c
)'disp('# 4
ok
])G=[A;c(1:3
)'disp('# 5
bo
])h=[A(1,3);c(2);b(2
)'disp('# 6
)]K=A([1 3],[2 3
ce
النتائج
# 1
.fa
= d
6
w
81
w
9
# 2
w
= E
3 6
8 81
12 9
# 3
= f
3
02
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
8
12
6
81
9
# 4
= G
13 2 6
32 4 81
/
ie
57 6 9
23 6 91
ad
# 5
= h
af
6
6
ls
8
r.a
# 6
= K
/d
2 6
6 9
om
مسألة
ليكن لدينا المصفوفة التالية و التي تمثل نتائج الطالب في ثاللثة اختبارات لمادة تطبيقات الحاسوب الهندسية
.c
المطلوب:
w
)1استخلص رقم الطالب و النتائج للطالب رقم 4و ضعها في مصفوفة سطرية باسم .student_4
)2استخلص أرقام الطالب و نتائج االختبار رقم 1و ضعها فغي مصفوفة باسم .quiz_1
)4استخلص أرقام الطالب و نتائج االختبار رقم 3و ضعها فغي مصفوفة باسم .quiz_3
)8أوجد الوسطي و االنحراف المعياري لكل نتائج اختبار على حدى.
)0بفرض أن عالمة كل اختبار كان من ،10أوجد لكل طالب مجموع نتائجه في االختبارات الثالثة.
)6أنشأ جدول باسم ECA_total_scoresيحتوي فقط رقم كل طالب و مجموع نتائجه.
04
MATLAB استخدام المصفوفات بفعالية في :الفصل الثالث
بحيث تحافظ على نفس، ترتيب تنازلي بحسب العالمة اإلجمالية للطالبECA_total_scores ) رتب جدول7
.البيانات ظمن كل سطر
الحل
clear, clc
ECA_scores=[1 7 5 9
2 8 4 3
3 6 6 9
4 7 7 9
/
ie
5 8 6 10
6 5 6 8
ad
7 4 5 8
8 8 3 5];
af
disp('# 1')
student_4=ECA_scores(4,:)
ls
disp('# 2')
r.a
quiz_1=ECA_scores(:,1:2)
disp('# 3')
/d
quiz_3=ECA_scores(:,[1 4])
disp('# 4')
om
mean_quiz=mean(ECA_scores(:,2:4))
std_quiz=std(ECA_scores(:,2:4))
disp('# 5')
.c
total_scores=sum(ECA_scores(:,2:4)')'
ok
disp('# 6')
ECA_total_scores=[ECA_scores(:,1) total_scores]
bo
disp('# 7')
ECA_total_scores_descend=sortrows(ECA_total_scores,-2)
النتائج
ce
# 1
student_4 =
.fa
4 7 7 9
# 2
w
quiz_1 =
w
1 7
2 8
w
3 6
4 7
5 8
6 5
7 4
8 8
# 3
08
ربيع الصفدي. م.د للمهندسينMATLAB أساسيات البرمجة وفق لغة
quiz_3 =
1 9
2 3
3 9
4 9
5 10
6 8
7 8
8 5
/
ie
# 4
mean_quiz =
ad
6.6250 5.2500 7.6250
std_quiz =
af
1.5059 1.2817 2.3867
# 5
ls
total_scores =
r.a
21
15
/d
21
23
om
24
19
17
.c
16
ok
# 6
ECA_total_scores =
1 21
bo
2 15
3 21
ce
4 23
5 24
.fa
6 19
7 17
w
8 16
# 7
w
ECA_total_scores_descend =
w
5 24
4 23
1 21
3 21
6 19
7 17
8 16
00
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
2 15
والمطلوب إنشاء مصفوفة تحوي قيم التابع fحيث f=x×yمن أجل جميع التراكيب الممكنة لقيم xمع قيم .yوالمطلوب
/
إيجاد جدول على الشكل التالي:
ie
x
ad
2 4 6 8
af
1 2 4 6 8
3 6 12 18 24
ls
5 10 20 30 40
r.a
7 14 28 42 56
y
/d
جدول :1.4جدول يوضح جميع القيم الممكنة للتابع f
om
بحيث يحوي هذا الجدول جميع القيم الممكنة للتابع ،fأي من أجل جميع التراكيب الممكنة لقيم xمع قيم .y
استخدام العمليات النقطية هنا لن ينفع ألنه سيقوم بإيجاد قيم القطر الرئيسي فقط في الجدول السابق.
.c
للتغلب على هذه المشكلة يحوي برنامج MATLABتابع مدمج يدعى meshgridو ال يشترط في استخدامه أن تكون
األشعة xو yبنفس األبعاد.
ce
يقوم التابع meshgridبإنشاء نسخ جديدة ثنائية األبعاد (مصفوفات) من ك ٍل من األشعة xو ،yو سنقوم هنا بتسميتهم
Xو ،Yو لهذه المصفوفات Xو Yنفس األبعاد (أي نفس عدد األسطر و األعمدة).
.fa
w
w
w
06
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
)>> [X,Y]=meshgrid(x,y
= X قيم عناصر الشعاع x
2 4 6 8
2 4 6 يكرر السطر xبعدد 8
2 4 6 8 عناصر y
2 4 6 8
= Y
/
1 1 1 1
ie
3 3 3 3
ad
y 5 5 5 5
7 7 7 7
af
يكرر العمود yبعدد عناصر x
ls
r.a في الكود السابق
/d
:Xمصفوفة نحصل عليها بأخذ الشعاع xكسطر و نكرره بعدد عناصر .y
om
:Yمصفوفة نحصل عليها بأخذ الشعاع yكعمود و نكرره بعدد عناصر .x
اآلن أصبح باإلمكان إيجاد كافة القيم الممكنة للتابع fباستخدام العمليات النقطية ،كمايلي:
.c
>> f=X.*Y
ok
= f
2 4 6 8
bo
الحظ أن رقم عمود أي عنصر في المصفوفة الناتجة fيدل على القيمة الموافقة في xو رقم سطر أي عنصر في المصفوفة
.fa
الناتجة fيدل على القيمة الموافقة في .yأي أن قيم المصفوفة fتتغير أفقيا ً مع تغير قيم xبينما تتغير رأسيا ً مع تغير قيم .y
مسألة
w
h
1
V r2 h
3
2r
07
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
المطلوب إيجاد حجم المخروط من أجل أنصاف أقطار قاعدة بدءاً من 1mو حتى 4mو بزيادة 1mكل مرة و ارتفاعات
بدءاً من 2mو حتى 6mبزيادة 2mكل مرة.
رتب النتائج ضمن جدول يحوي جميع قيم Vمن أجل جميع التراكيب الممكنة لقيم rمع قيم .hبحيث يدل رقم العمود على
القيمة المقابلة في rو يدل رقم السطر على القيمة المقابلة في .h
الحل
clear, clc, format short g
;radii=1:4
/
;heights=2:2:6
ie
;)[R,H]=meshgrid(radii,heights
ad
;V=pi*R.^2.*H/3
)'disp('This table gives the volume of cone
af
)']disp('Note 1: 1st row represents the radius in [m
)']disp('Note 2: 1st column represents the height in [m
ls
table=[0 radii
;]heights' V
r.a
)disp(table
النتائج
/d
This table gives the volume of cone
]Note 1: 1st row represents the radius in [m
om
من أجل حساب المسافة إلى األفق على سطح األرض أو القمر نعتمد العالقة التالية المشتقة من نظرية فيثاغورث (أنظر
الشكل المرفق).
ce
d
.fa
h
R
w
حيث
:hارتفاع الجبل.
:Rنصف قطر الكوكب قيد الدراسة ( R=6378kmلألرض و R=1737kmللقمر).
:dالمسافة إلى األفق من قمة الجبل.
04
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
المطلوب إيجاد المسافة إلى األفق من على سطح األرض و القمر من أجل جبال ذات ارتفاعات بدءاً من 2000mو حتى
8000mبزيادة 2000mكل مرة.
الحل
clear, clc, format bank
;radii=[6378 1737]*1000
;heights=2000:2000:8000
/
;)[R,H]=meshgrid(radii,heights
ie
;)d=sqrt(H.^2+2*R.*H
ad
)'disp('Distance to the horizon
'(disp ]Height [m ]on Earth[km )']on Moon[km
af
;]table=[heights' d/1000
)disp(table
ls
النتائج
r.a
Distance to the horizon
]Height [m ]on Earth[km ]on Moon[km
2000.00 159.74 83.38
/d
4000.00 225.92 117.95
om
يعطي الكود السوري العالقة التالية التي تحسب بواسطتها الحمولة الحدية الضاغطة القصوى التي يمكن للعمود القصير ذو
ok
0.8
bo
حيث
:Ωمعامل تخفيض المقاومة ،و تؤخذ قيمته مساوية إلى 0.7في حالة الضغط البسيط.
.fa
:Keعامل التكافؤ و يؤخذ مساوي للواحد في حال األعمدة الوسطية الموجودة في جميع الطوابق عدا الطابق األخير.
:f'cالمقاومة المميزة للبيتون المستخدم ،و يؤخذ في هذه المسألة .f'c=18 MPa
w
:fyإجهاد الخضوع للتسليح الطولي المستخدم ،و يؤخذ في هذه المسألة .fy=240 MPa
w
المطلوب إيجاد جدول يبين قيم Nuمن أجل ثالثة مقاطع دائرية بأقطار 25 cmو حتى 35 cmبزيادة 5 cmكل مرة،
بحيث يسلح كل مقطع من هذه المقاطع بثمانية قضبان محيطية بأقطار متساوية .نعتمد فقط خمسة أقطار لقضبان التسليح:
.25 mm ،22 mm ،20 mm ،18 mm ،16 mm
الحل
04
MATLAB استخدام المصفوفات بفعالية في :الفصل الثالث
dc2
Ac : عندئ ٍذ، هو قطر المقطع البيتونيdc بفرض أن
4
d s2
As 8 : عندئ ٍذ، هو قطر التسليح المستخدمds و
4
MATLAB كود
clear, clc, format short g
Omega=0.7; Ke=1; fc=18; fy=240;
dc=250:50:350; % in [mm]
/
ds=[16:2:22 25]; % in [mm]
ie
[Dc,Ds]=meshgrid(dc,ds);
ad
Ac=(pi*Dc.^2)/4;
As=(8*pi*Ds.^2)/4;
af
Nu=0.8*Omega*(0.85*fc*Ac+fy*As)/Ke;
table=[NaN dc/10
ls
ds' Nu/1000];
r.a
disp('Ultimate Compressive Load for Circular Section in [KN]')
disp('Note 1: 1st row is Section Diameter in [cm]')
disp('Note 2: 1st column is Steel Reinforcement Diameter in
/d
[mm]')
disp(table)
om
النتائج
Ultimate Compressive Load for Circular Section in [KN]
.c
NaN 25 30 35
16 636.76 821.82 1040.5
bo
مصفوفات خاصة.3
w
: سنشرح بعض هذه التوابع في الجدول التالي. على مجموعة من التوابع التي تولد مصفوفات خاصةMATLAB يحتوي
w
>> D=zeros(3)
D =
0 0 0 .m×m يقوم بإنشاء مصفوفة صفرية أبعادهاzeros(m)
0 0 0
0 0 0
>> C=zeros(2,3) m حيثm×n يقوم بإنشاء مصفوفة صفرية أبعادها
C = zeros(m,n)
عدد األعمدةn عدد األسطر و
0 0 0
60
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
/
ie
>> A=[2 3 4 Aعبارة عن مصفوفة
4 5 6
ad
;]8 9 7
)>> diag(A عندئ ٍذ يستخلص التابع diagالقطر الرئيسي من
af
= ans
2 المصفوفة Aو يضعها ضمن شعاع عمودي.
ls
5
)diag(A
7
r.a
;]>> a=[4 8 6 Aعبارة عن شعاع
)>> W=diag(a
من أجل أي شعاع Aينشأ التابع diagمصفوفة
/d
= W
4 0 0 قطرية مربعة حيث عناصر قطرها الرئيسي هي
om
11 22 33
;]10 20 30 يقلب مصفوفة بشكل متناظر بالنسبة لمحور رأسي
ok
)>> fliplr(A (أي يغير مواضع األعمدة بشكل متناظر رأسيا ً من )fliplr(A
= ans
اليسار إلى اليمين)
bo
A .3 .1 .1عبارة عن مصفوفة
كما هو معلوم يستخدم تابع ) diag(Aالستخالص القطر الرئيسي من المصفوفة .Aيمكن كذلك استخالص أقطار غير
القطر الرئيسي بتعريف مدخل ثاني kللتابع بحيث يصبح التابع على الشكل ) .diag(A,kحيث أن القيم الموجبة
61
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
للمتغير kتحدد األقطار في الجهة اليمنى العليا من المصفوفة Aو القيم السالبة للمدخل kتحدد األقطار في الجهة اليسرى
السفلى من المصفوفة ،Aكما هو مبين بالشكل أدناه.
1 2 3 4
5 6 7 8
A
9 10 11 12
/
13 14 15 16
ie
ad
k =-2 k =-1
شكل :1.4شكل يبين كيفية اختيار المتغير kفي التابع diag
af
= A
1 2 3 4
ls
5 6 7 8
r.a
9 10 11 12
13 14 15 16
/d
)>> diag(A
= ans
om
1
6
11
.c
16
ok
)>> diag(A,1
= ans
2
bo
7
12
ce
)>> diag(A,-2
= ans
.fa
9
14
w
A .3 .1 .2عبارة عن شعاع
w
من المعلوم أنه عند استخدام شعاع aكمدخل للتابع ) diag(aفإن الناتج عبارة عن مصفوفة قطرية عناصر قطرها
w
الرئيسي هي نفسها عناصر الشعاع .aباستخدام مدخل آخر kللتابع بحيث يصبح على الشكل) diag(a,kنستطيع
تحريك القطر ألي مكان في المصفوفة.
;]>> a=[1 2 3 4
)>> diag(a
= ans
1 0 0 0
62
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
/
ie
0 0 0 4 0
)>> diag(a,-2
ad
= ans
0 0 0 0 0 0
af
0 0 0 0 0 0
1 0 0 0 0 0
ls
0 2 0 0 0 0
r.a
0 0 3 0 0 0
0 0 0 4 0 0
/d
.4العمليات على المصفوفات
om
.4 .1المنقول ()Transpose
للحصول على منقول مصفوفة نستخدم الرمز(') بعد كتابة اسم المصفوفة.
.c
'>> A
= ans
bo
1
2
ce
3
.fa
n
a b ai bi
w
i 1
w
64
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
أو )dot(a,b
)>> dot(a,b
= ans
32
مسألة
يحسب مركز ثقل جسم فراغي بتقسيمه إلى أجزاء صغيرة عددها .nفإذا كان وزن كل جزء من هذه األجزاء wiو
إحداثيات مركز ثقله ) ،(xi, yi, ziو كان الوزن الكلي للجسم المدروس Wفإن إحداثيات مركز ثقله ) ( x , y , zتعطى
بالعالقات التالية:
/
ie
n n n
ad
i i
x i 1
, y i 1
, z i 1
af
n
حيث . W wi
ls
i 1
r.a
المطلوب حساب إحداثيات مركز ثقل جسم فراغي تم تقسيمه إلى أربعة أجزاء حيث أن كتلة و إحداثيات مركز ثقل كل جزء
معطاة في الجدول التالي:
/d
]zi [m ]yi [m ]xi [m الكتلة ][kg الجزء
om
الحل
clear, clc
ce
;)m=sum(mi
w
xbar=dot(xi,mi)/m
ybar=dot(yi,mi)/m
w
zbar=dot(zi,mi)/m
النتائج
= xbar
0.8667
= ybar
1.6125
= zbar
68
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
2.5723
مالحظة هام ة بخصوص تابع :input
يسمح تابع inputللمستخدم بإدخال قيمة ما و تخصيصها لمتغير ما .كمثال:
)' >> x=input('Enter a value for x:
عند تنفيذ هذا السطر تظهر على شاشة األوامر العبارة:
Enter a value for x: 7
فإذا قام المستخدم بإدخال قيمة ما ،على سبيل المثال ،7فيقوم البرنامج بتخصيص هذه القيمة للمتغير xوإظهارها على
شاشة األوامر بسبب عدم وضع فاصلة منقوطة ; في آخر عبارة .input
/
ie
= x
7
ad
عند استخدام تابع inputمن أجل إدخال النصوص يجب اعتماد الصيغة التالية:
)'>> x=input('Enter your name: ','s
af
إضافة ' 'sإلى تابع inputيعني أن المتغير الذي سيتم إدخاله هو نص .عند تنفيذ األمر السابق تظهر رسالة على
ls
شاشة األوامر:
r.a
Enter your name: ALSAFADIE
فإذا قام المستخدم بإدخال نص ما ،على سبيل المثال ، ALSAFADIEفيقوم البرنامج بتخصيص هذا النص للمتغير x
/d
وإظهاره على شاشة األوامر بسبب عدم وضع فاصلة منقوطة ; في آخر عبارة .input
om
= x
ALSAFADIE
.c
مثال :1
ok
اكتب برنامج إلنشاء شعاع يبدأ بالقيمة aو ينتهي بالقيمة bو مقدار الزيادة .cاطلب من المستخدم إدخال جميع قيم
البرامترات السابقة.
bo
clear, clc
;)' a=input('Enter the starting value of the vector:
ce
vector=a:c:b
النتائج
w
= vector
2 5 8 11
مثال :2
اكتب برنامج لحساب حجم إسطوانة دائرية قائمة . V r h :اطلب من المستخدم إدخال قيم كالً من rو .h
2
clear, clc
;)' r=input('Enter the radius of cylinder:
60
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
مسألة
/
ie
من المعلوم في جبر األشعة أنه إذا كان لدينا الشعاعين Aو Bفي الفراغ فيمكن التعبير عنهما كمايلي:
ad
A Ax i Ay j Az k
af
B Bx i By j Bz k
ls
باإلضافة إلى العالقة التي تم شرحها سابقا ً لحساب الضرب السلمي لألشعة:
A B Ax Bx Ay By Az Bz
r.a
/d
يعطى كذلك الضرب السلمي للشعاعين الفراغيين Aو Bبالعالقة:
om
B
A Ax2 Ay2 Az2
المطلوب استخدام الضرب السلمي لألشعة إليجاد الزاوية بين الشعاعيين التاليين:
A 5i 6 j 3k
w
B 1i 3 j 2 k
w
w
الحل
clear, clc
;)' A=input('Enter vector A in matrix notation:
;)' B=input('Enter vector B in matrix notation:
;))A_mag=sqrt(sum(A.^2
;))B_mag=sqrt(sum(B.^2
;)cos_theta=dot(A,B)/(A_mag*B_mag
66
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
;)theta=acosd(cos_theta
fprintf('The angle between the vectors is %6.2f
)degrees\n',theta
النتائج
]Enter vector A in matrix notation: [5 6 3
]Enter vector B in matrix notation: [1 3 2
The angle between the vectors is 22.12 degrees
.4 .3ضرب المصفوفات
/
ie
من أجل أن يكون ضرب المصفوفات صحيحا ً يجب أن يكون عدد أعمدة المصفوفة األولى مساويا ً لعدد أسطر المصفوفة
الثانية .فعلى سبيل المثال ،ليكن لدينا المصفوفتان:
ad
10 20 30
af
1 2 3
A , B 40 50 60
4 5 6
ls
70 80 90
r.a
يمكن إجراء ضرب المصفوفة Aبالمصفوفة Bنظراً ألن عدد أعمدة Aيساوي إلى عدد أسطر ،Bو يكتب رياضياً
كمايلي. C A B :
/d
23 23 33
om
= C
300 360 420
bo
أعد حل مسألة حساب مركز الثقل باستخدام ضرب المصفوفات و باعتماد المصفوفات التالية:
.fa
: coorمصفوفة إحداثيات مراكز ثقل األجزاء المختلفة و بالترتيب حيث السطر األول في المصفوفة يمثل إحداثيات مركز
ثقل الجزء األول و السطر الثاني في المصفوفة يمثل إحداثيات مركز ثقل الجزء الثاني و هكذا.
w
67
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
clear, clc
coor=[0.1 2.0 3.0
1.0 1.0 1.0
1.5 0.2 0.5
;]2.0 2.0 4.0
;]mi=[3.5;1.5;0.79;1.75
)location=coor'*mi/sum(mi
النتائج
= location
/
ie
0.8667
1.6125
ad
2.5723
af
.4 .4رفع المصفوفة إلى قوة ()Matrix Powers
ال يمكن رفع المصفوفة إلى قوة إال إذا كان مصفوفة مربعة .بالتالي من أجل الحصول على A2للمصفوفة التالية:
ls
r.a
1 9 8
A 8 4 7
/d
2 5 3
om
نكتب:
;]>> A=[1 9 8;8 4 7;2 5 3
.c
>> B=A^2
= B
ok
:C=A^2هنا Aمصفوفة مربعة و نتيجة هذه العملية نحصل على مصفوفة Cهي حاصل ضرب المصفوفة Aبنفسها.
.fa
:C=A.^2بهذه العملية نحصل على مصفوفة Cكل عنصر فيها هو مربع العنصر المقابل في .Aو ال يشترط هنا أن
تكون المصفوفة Aمربعة.
w
w
بفرض لدينا المصفوفة Aفإن مقلوب هذه المصفوفة يرمز له بالرمز ،A-1و يحقق العالقة التالية:
يتم الحصول على مقلوب مصفوفة مربعة Aفي MATLABبإحدى الطريقتين A^-1 :أو ).inv(A
فعلى سبيل المثال للحصول على مقلوب المصفوفة السابقة Aيمكن أن نكتب:
64
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
>> B=A^-1
= B
-0.1608 0.0909 0.2168
-0.0699 -0.0909 0.3986
0.2238 0.0909 -0.4755
أو
)>> B=inv(A
/
ie
= B
-0.1608 0.0909 0.2168
ad
-0.0699 -0.0909 0.3986
0.2238 0.0909 -0.4755
af
.4 .6محدد مصفوفة ()Determinant
ls
من المعلوم أنه إذا كان محدد مصفوفة مساوي للصفر ،فالمصفوفة ليس لديها مقلوب و يقال عنها أنها مفردة (.)Singular
r.a
يتم الحصول على محدد المصفوفة Aفي MATLABباستخدام التابع .det(A) :فعلى سبيل المثال للحصول على
مقلوب المصفوفة السابقة Aيمكن أن نكتب:
/d
)>> det(A
om
= ans
143
.c
A Ax i Ay j Az k
ce
B Bx i By j Bz k
.fa
y
Az Bx Ax Bz j
w
x
يتم الحصول على الضرب الشعاعي C A Bفي MATLABبالتابع .cross(A,B) :فعلى سبيل المثال ليكن
لدينا شعاعان يقعان ضمن المستوي xyبالتالي للحصول على الضرب الشعاعي لهما يمكن أن نكتب:
;]>> A=[1 2 0
;]>> B=[3 4 0
64
MATLAB استخدام المصفوفات بفعالية في :الفصل الثالث
>> cross(A,B)
ans =
0 0 -2
.xy الحظ أن النتيجة عبارة عن شعاع متعامد مع المستوي
مسألة
: حيث، M r F :من المعلوم أن عزم قوة حول نقطة يعطى بالعالقة
/
. r rx i ry j rz k ، شعاع يحدد موقع القوة بالنسبة للنقطة المدروسة: r
ie
ad
. F Fx i Fy j Fz k ، شعاع القوة: F
af
: حيث طويلتهM M x i M y j M z k : كشعاعM تعطي العالقة السابقة العزم
ls
M M x2 M y2 M z2
r.a
و شعاعF 4 j المطلوب كتابة برنامج لحساب عزم قوة حول نقطة بحيث يطلب من المستخدم إدخال شعاع القوة
/d
. r 3i الموقع
om
الحل
clear, clc
.c
M=cross(F,r);
M_mag=sqrt(sum(M.^2));
bo
النتائج
Enter force vector F in matrix notation: [0 4 0]
.fa
3 x 2 y z 10
x 3 y 2 z 5
x y z 1
70
د .م .ربيع الصفدي أساسيات البرمجة وفق لغة MATLABللمهندسين
باستخدام ضرب المصفوفات ،يمكن عندئ ٍذ كتابة جملة المعادالت كمايلي A x b :و حل الجملة . x A 1 b :
/
يمكن كتابة الكود على الشكل التالي:
ie
;]>> A=[3 2 -1;-1 3 2;1 -1 -1
ad
;]>> b=[10; 5; -1
>> x=inv(A)*b
af
= x
-2.0000
ls
5.0000
r.a
-6.0000
أو بطريقة أخرى:
/d
;]>> A=[3 2 -1;-1 3 2;1 -1 -1
om
-2.0000
ok
5.0000
-6.0000
bo
هذه الطريقة ليس ذات كفاءة عالية و يمكن أن ينتج عنها أخطاء تقريب زائدة .لذا ينصح بتجنب استخدام هذه الطريقة.
)Division
.fa
تعتمد هذه الطريقة على حذف غوص ( )Gaussian Eliminationو هي أفضل بكثير من الطريقة السابقة .الرمز
المستخدم في MATLABلهذه الطريقة هو \ (.)backslash
w
71
MATLAB استخدام المصفوفات بفعالية في :الفصل الثالث
/
x
F3
ie
Output: F1 , F2 , F3 , X 2 , Y2 , Y3
ad
Y2 Y3
af
الحل
ls
:) إيجاد معادالت التوازن1
r.a
F x ,1 0 F1 cos 1 F2 cos 2 F cos 0
F 0 F1 sin 1 F2 sin 2 F sin 0
/d
y ,1
F 0 F1 cos 1 F3 X 2 0
om
x ,2
F y ,2 0 F1 sin 1 Y2 0
.c
F 0 F2 cos 2 F3 0
ok
x ,3
F y ,3 0 F2 sin 2 Y3 0
bo
sin sin F
F sin
1 2 0 0 0 0 2
cos 1 0 0 F3
.fa
0 1 1 0
A , b , x
sin 1 0 0 0 1 0 0 X2
w
0 cos 2 1 0 0 0 0 Y2
w
0 sin 2 0 0 0 1 0 Y3
w
MATLAB كود
clear,clc
F=input('Enter the value of F: ');
a=input('Enter the value of alpha in degrees: ');
t1=input('Enter the value of theta_1 in degrees: ');
t2=input('Enter the value of theta_2 in degrees: ');
A=[-cosd(t1) cosd(t2) 0 0 0 0;
72
ربيع الصفدي. م.د للمهندسينMATLAB أساسيات البرمجة وفق لغة
-sind(t1) -sind(t2) 0 0 0 0;
cosd(t1) 0 1 1 0 0;
sind(t1) 0 0 0 1 0;
0 -cosd(t2) -1 0 0 0;
0 sind(t2) 0 0 0 1];
b=[F*cosd(a); F*sind(a); 0; 0; 0; 0];
x=A\b;
fprintf(' F1 = %5.2f\n',x(1))
fprintf(' F2 = %5.2f\n',x(2))
/
ie
fprintf(' F3 = %5.2f\n',x(3))
fprintf(' X2 = %5.2f\n',x(4))
ad
fprintf(' Y2 = %5.2f\n',x(5))
fprintf(' Y3 = %5.2f\n',x(6))
af
F 50kN, 90, 1 30, 2 30 من أجل:النتائج
ls
Enter the value of F: 50
r.a
Enter the value of alpha in degrees: 90
Enter the value of theta_1 in degrees: 30
/d
Enter the value of theta_2 in degrees: 30
F1 = -50.00
om
F2 = -50.00
F3 = 43.30
X2 = 0.00
.c
Y2 = 25.00
ok
Y3 = 25.00
bo
ce
.fa
w
w
w
74
استخدام المصفوفات بفعالية في MATLAB الفصل الثالث:
/
ie
ad
af
ls
r.a
/d
om
.c
ok
bo
ce
.fa
w
w
w
78