Professional Documents
Culture Documents
MatLab
פונקציות
5_6.2/45
– MatLabפונקציות
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
5_6.3/45
– MatLabפונקציות
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
5_6.4/45
בשביל מה פונקציות?
לתוכניות מחשב ישנה נטיה לגדול,
או ...לייתר דיוק – לתכנתים יש נטיה להגדיל תכניות.
ניהול או הבנה של תוכנית גדולה – קשים,
אנו עלולים לכתוב שוב קטעי קוד דומים או זהים לכאלו
שכבר כתבנו,
היינו שמחים לו יכולנו לקחת "קטעים" מתוכנית אחת
ולהשתמש בהם בתוכנית אחרת,
(אתם עושים זאת אגב – כל השימוש בפונקציות ספריה),
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
5_6.7/45
הגדרת פונקציה:
אחת או יותר שורות קוד ,אותן ניתן להפעיל כקבוצה,
עם ממשק הפעלה:
שם משותף,
אפשרות לקבלת נתונים,
אפשרות להחזרת נתונים,
נקודת כניסה ברורה ואחת או יותר נקודות סיום
פונקציה
פרמטר פורמאלי
(sqrt)x
פונקציה
פרמטר פורמאלי
(max)x
]V=[0,-1,-3
max)[V]( --> 0
מבוא לתכנות בעזרת MatLab אורט בראודה – הנדסת מכונות
))22100
פונקציות – דוגמא 3עם מספר ערכים
נכנסים וערך מוחזר אחד
פרמטרים פורמאליים
פונקציה
(rem)a,b
([m,n] = size)A
ערכים מוחזרים
]size)[1,2,3;2,3,4]( [2,3
ערכים מוחזרים
הערך העובר לפונקציה
פונקציה
פרמטר פורמאלי
(plot)x,y
X=1:2*pi,
(Y=cos)X
(plot)X,Y
הערכים העוברים
לפונקציה
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
פונקציות – דוגמא 6ללא ערכים נכנסים
פונקציה
אלגברה :פונקציה היא כלל שמקצה ערך חדש המבוסס על ארגומנטים של
הפונקציה
:MatLabפונקציה היא יחידת תכנה (מודול) המחשבת ערך מוחזר
המבוסס על ערכי הארגומנטים(פרמטרים) של הפונקציה
)» cylinder(1,10
= ans
31.4159
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
5_6.17/45 יצירת פונקציות בm-File Editor-
בתפריט בוחרים File/New/m-file
»
אורט בראודה – הנדסת מכונות
5_6.19/45
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
5_6.20/45 מרחב עבודה של m-function
כל פעם שפונקציה מתבצעת ,מרחב העבודה החדש נוצר רק בשביל
המקרה הזה
כל המשתנים ,פרט לארגומנטים (פרמטרים) ומשתנה מוחזר ,מוגדרים
במרחב העבודה של הפונקציה בלבד
;>> r=10 מרחב עבודה בסיסי
;>> h=5
(>> cylinder)r,h
function num=check_output)(;
[v,s]=cylinderAV)r,h(;
format short g
disp)'The volumes are:'(; disp)v(;
disp)'The areas are:'(; disp)s(;
%checks if primary
%checks if primary for I=2:fix)N/2(
for I=2:fix)N/2( if rem)N,I(==0
if rem)N,I(==0 break;
break; end
end end
end if I==fix)N/2(
if I==fix)N/2( disp)'The primary number'(;
disp)'The primary number'(; else
else disp)'Not primary number'(;
disp)'Not primary number'(; end
end
5_6.28/45
תת פונקציות
דוגמא 6
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
5_6.32/45
משתנים גלובליים
לפעמים מסוכן להעביר את כל המשתנים כארגומנטים
לפונקציה
הצהרה על משתנה כעל גלובלי ( ) globalבמרחב העבודה,
פירושו שהמשתנה יכול להיות נגיש במרחב העבודה השני אם
המשתנה מוצהר בתור globalגם במרחב העבודה השני.
= ans
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
פונקציות -ערך מוחזר
5_6.36/45
» [area, volume]=cylinderAV(1,10)
area =
69.1150
volume =
31.4159
» result=cylinderAV(1,10)
result =
69.1150
» whos
Name Size Bytes Class
ans 1x1 8 double array
area 1x1 8 double array
result 1x1 8 double array
volume 1x1 8 double array
אם משתמשים במשתנה יחיד
לקבלת ערך מוחזר מקבלים רק
ערך ראשון ממערך מוחזר
MatLab ) )22100 מבוא לתכנות בעזרת אורט בראודה – הנדסת מכונות
5_6.38/45
m-functionsהם ליבה של MatLab
function [S,H]=S_Per)a,b(;
%outputs the arrea and the perimeter if there are output arguments
if nargout==0
fprintf)'\nThe arrea is %g\nThe perimeter is %g',a*b,2*)a+b((; % !רק מדפיסה
else
S=a*b;
H=2*)a+b(;
end
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
5_6.43/45
דוגמא 8
x 2 x4 x6
cos( x ) = 1 − + − טור טיילור של פונקציה טריגונומטרית )cos)xמוגדר בצורה הבאה+ ... :
! 2! 4! 6
יש לכתוב תכנית המחשבת ומחזירה את ערך הפונקציה )cos)x
לפי טור טיילור .חישוב הטור יבוצע עד שהערך המוחלט של האיבר
האחרון בטור יהיה קטן מ0.0001-
;(function [sum]=cos1)x
;k=0;sum=0
;el=1 ניתן להריץ פונקציה ישר
while abs)el(>=0.0001 בCommand Window:-
;sum=sum+el
;k=k+1 (>> cos1)pi/3
;(el=)-1(^k*x^)2*k(/factorial)2*k
end = ans
end
0.5000
>>cos1_test
>>cos)3.14159(=-1
m-function
;(function x=sin1)alpha
;(x=sqrt)1-cos1)alpha(.^2
function v=Divs)n(;
%v - vector of the dividers of the integer n
>> Divs)12(
v=[];
for i=1:n/2 ans =
if rem)n,i(==0
v=[v,i]; 1 2 3 4 6
end
end
%the function returns the vector v
דיאגראמת פתרון
a
b
c
a2
insert a: 1
insert b: 6
insert c: 5
There are 2 real roots:
-1 -5
insert a: 1
insert b: 0
insert c: 4
There are 2 complex roots:
0 + 2.0000i 0 - 2.0000i
insert a: 1
insert b: -2
insert c: 1
There is only one root:
1
MatLab ) )22100 מבוא לתכנות בעזרת
דוגמא 12
5_6.51/45
ואז הוא:
בודק האם velocityהוא משתנה במרחב העבודה נוכחי?
האם velocityהוא פונקציה מוכללת של ? MatLab
האם velocityהוא תת פונקציה של הפונקציה הנוכחית?
האם ( velocity.pואז גם )velocity.mהיא private
?function
הנמצא (velocity.pואז גם )velocity.mבמרחב העבודה
הנוכחי?
?MatLab
הנוכחית בתיקייה
בעזרת הנמצא (velocity.pואז גם )velocity.m
מבוא לתכנות
))22100 אורט בראודה – הנדסת מכונות
5_6.55/45
בשביל מה פונקציות?
הגדרת פונקציה
איך לעצב פונקציות,
מרחב עבודה של פונקציה,
משתנים גלובליים,
שימוש בפונקציות,
דוגמאות,
סיכום.
מבוא לתכנות בעזרת MatLab
))22100 אורט בראודה – הנדסת מכונות
מבוא לתכנות בעזרת
MatLab
פונקציות