56
תתתת תתתתתת תתתתתMatLab תתתתתתתת

Functions - פונקציות

  • Upload
    michael

  • View
    646

  • Download
    5

Embed Size (px)

DESCRIPTION

מצגות מקורס מבוא לתכנות בעזרת MATLAB במכללת אורט בראודה

Citation preview

Page 1: Functions - פונקציות

מבוא לתכנות בעזרתMatLabפונקציות

Page 2: Functions - פונקציות

5_6.2/45 MatLabפונקציות – ?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 3: Functions - פונקציות

5_6.3/45

MatLabפונקציות – ?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 4: Functions - פונקציות

5_6.4/45 בשביל מה פונקציות?

,לתוכניות מחשב ישנה נטיה לגדולאו ... לייתר דיוק – לתכנתים יש נטיה להגדיל תכניות.

ניהול או הבנה של תוכנית גדולה – קשים,אנו עלולים לכתוב שוב קטעי קוד דומים או זהים

לכאלו שכבר כתבנו, היינו שמחים לו יכולנו לקחת "קטעים" מתוכנית אחת

ולהשתמש בהם בתוכנית אחרת,)אתם עושים זאת אגב – כל השימוש בפונקציות

ספריה(,

אורט בראודה – הנדסת מכונות

MatLabמבוא לתכנות בעזרת (22100)

Page 5: Functions - פונקציות

5_6.5/45

עבודה עם פונקציות נותנת לנו יכולת להתייחס אלהתוכנית כבנויה מחלקים מודולאריים.

עבודה עם פונקציות – נותנת לנו את היכולתלקחת בעיה מורכבת ולפרקה לחלקים עם תלות

מועטה בניהם.

אורט בראודה – הנדסת מכונות

MatLabמבוא לתכנות בעזרת (22100)

בשביל מה פונקציות? )המשך(

Page 6: Functions - פונקציות

5_6.6/45

?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 7: Functions - פונקציות

5_6.7/45

:הגדרת פונקציה

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

אחת או יותר שורות קוד, אותן ניתן להפעיל כקבוצה,

עם ממשק הפעלה:,שם משותף,אפשרות לקבלת נתונים,אפשרות להחזרת נתוניםנקודת כניסה ברורה ואחת או יותר נקודות סיום

Page 8: Functions - פונקציות

עם ערך נכנס אחד וערך 1דוגמא פונקציות – מוחזר אחד

sqrt(x)

sqrt(16) --> 4

sqrt(121) --> 11

פונקציהפרמטר פורמאלי

הערך העובר לפונקציהערך מוחזר

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 9: Functions - פונקציות

max(x)

max([1,2,-6]) --> 2

V=[0,-1,-3]max([V]) --> 0

פונקציהפרמטר פורמאלי

הערך העובר לפונקציהערך מוחזר

עם ערך נכנס אחד וערך 2דוגמא פונקציות – מוחזר אחד

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 10: Functions - פונקציות

rem(a,b)

rem(9,2) --> 1

פונקציהפרמטרים פורמאליים

הערכים העוברים לפונקציה

ערך מוחזר

עם מספר ערכים 3דוגמא פונקציות – נכנסים וערך מוחזר אחד

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 11: Functions - פונקציות

[m,n] = size(A)

size([1,2,3;2,3,4]) [2,3]

הערך העובר לפונקציה

ערכים מוחזרים

פונקציהפרמטר פורמאלי

ערכים מוחזרים

עם ערך 4דוגמא פונקציות – נכנס אחד ומספר ערכים

מוחזרים

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 12: Functions - פונקציות

plot(x,y)

X=1:2*pi, Y=cos(X)

plot(X,Y)

פונקציהפרמטר פורמאלי

הערכים העוברים לפונקציה

עם מספר ערכים 5דוגמא פונקציות – נכנסים

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 13: Functions - פונקציות

help

clear

clear a

ללא ערכים נכנסים6דוגמא פונקציות –

פונקציה

ערך מוחזרואין ערך נכנס אין

ערך מוחזרואין ערך נכנס אין

ערך מוחזרואין ערך נכנס יש

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 14: Functions - פונקציות

5_6.14/45-MatLab( mהגדרת פונקציות של

פונקציות(m-functions:הם כמו פונקציות באלגברה :פונקציה היא כלל שמקצה ערך חדש המבוסס על אלגברה

ארגומנטים של הפונקציהMatLab : פונקציה היא יחידת תכנה )מודול( המחשבת ערך

מוחזר המבוסס על ערכי הארגומנטים)פרמטרים( של הפונקציה

» cylinder(1,10)

ans =

31.4159

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 15: Functions - פונקציות

5_6.15/45 -פונקציהmמבנה של

function volume=cylinder(radius, length)

% CYLINDER computes volume of circular cylinder

% given radius and length

% Use:

% volume=cylinder (radius, length)

%

volume=pi.*radius^2.*length;

הערות עזרהערות עזר

לא נדרש)endמשפטים ( לא נדרש)endמשפטים (

ארגומנטים (פרמטרים)ארגומנטים (פרמטרים)מלת מפתח להגדרת פונקציהמלת מפתח להגדרת פונקציה

ערך מוחזרערך מוחזר

לאותיות קטנות/גדולותלא רגישים שמות של פונקציות : הערה

שם הפונקציהשם הפונקציה

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 16: Functions - פונקציות

5_6.16/45

?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 17: Functions - פונקציות

5_6.17/45 m-File Editorיצירת פונקציות ב- בתפריט בוחריםFile/New/m-file

חלון חדש שלeditor" יופיע תחת השם Untitled"הכנס קוד של הפונקציה החדשה שלךשם של הפונקציה זהה לשם הקובץבשמירה וודא ש

(MatLab משתמש בשם הקובץ לזיהוי m)פונקציות-

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 18: Functions - פונקציות

5_6.18/45

-mשימוש בהערות ב פונקציות

הערות שמופיעות אחרי משפטי הפונקציה יופיעו גם של הפונקציה:MatLab Helpב-הכנס הערות המגדירות מה הפונקציה מבצעתהוסף הערות המתארות את שימושי הפונקציהכלול גרסה, מחבר ותאריך

» help cylinder

CYLINDER computes volume of circular cylinder given radius and length

Use:

volume=cylinder ( radius, length)

אורט בראודה – הנדסת «מכונות

Page 19: Functions - פונקציות

5_6.19/45

?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 20: Functions - פונקציות

5_6.20/45 m-functionמרחב עבודה של כל פעם שפונקציה מתבצעת, מרחב העבודה החדש נוצר

רק בשביל המקרה הזה כל המשתנים ,פרט לארגומנטים )פרמטרים( ומשתנה

בלבדמרחב העבודה של הפונקציה מוחזר, מוגדרים ב

>> r=10;>> h=5;>> cylinder(r,h)

מרחב עבודה בסיסי

מרחב עבודה של הפונקציה

ניתן לדפדף בין מרחבי העבודה השונים בזמן

debbugingהרצה תוך

Page 21: Functions - פונקציות

5_6.21/45

-משתנים של פונקציה לא מוגדרים בBase workspace ומשתנים של Base workspace לא function workspaceמוגדרים ב-

בסיום ביצוע הפונקציה, מרחב העבודה שלה נמחק משתנים של פונקציה "מוסתרים" מעין אדם )וגם

משימוש שגוי או שינויים הרי אסון(

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

m-functionמרחב עבודה של )המשך(

Page 22: Functions - פונקציות

5_6.22/45

ניתן אפילו להגדירm פונקציות אחרות בתוך-m!פונקציה- "הפונקציות "הפנימיות" נקראות "תת פונקציות(sub-

functions) לכל אחת יהיה מרחב העבודה משלה, בלתי תלוי במרחב העבודה

של פונקציה אחרת מרחבי העבודה הללו נוצרים ונמחקים עם כל קריאה לפונקציה

)שום דבר לא נשאר בין הקריאות( תת הפונקציות זמינות רק בתוך הפונקציה הראשית. תת

הפונקציות האחרות שבתוך הפונקציה הראשית יכולות להשתמש אחת בשנייה.

-מוסכמה: שמות של תת פונקציות מתחילים מlocal_ local_myfun )…(

m-functionמרחב עבודה של )המשך(

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 23: Functions - פונקציות

5_6.23/45 - בדיקת קלט שלם וחיובי1דוגמא %inputs the number and continues to input until the number is positive and whole function num=check_output(); num=input('Enter the number ');while num~=fix(num) | num<=0 num=input('\nThe number is incorrect. Enter a new number ');end

MatLabמבוא לתכנות בעזרת (22100)

Page 24: Functions - פונקציות

5_6.24/45 - פונקציה המקבלת רדיוס 2דוגמא וגובה של גליל ומחזירה נפחו ושטחו

function [area,volume]=cylinderAV(radius, length)% CYLINDER computes area and volume of circular cylinder% given radius and length% Use: [area, vol]=cylinder (radius, length)%area=2*pi*radius.^2.*lengthvolume=pi*radius.^2.*length;

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 25: Functions - פונקציות

5_6.25/45 – שימוש בפונקציה בתוך תכנית 3דוגמא ראשית

לכתוב תכנית, הקולטת ממשתמש רדיוס וגובה של לחישוב נפחו. cylinderגליל וקוראת לפונקציה

clc;clear;r=input('Insert the radius:');h=input('Insert the height:'); v=cylinder(r,h); fprintf('\nvolume = %.2f',v);

function volume=cylinder(radius, length)% CYLINDER computes volume of circular cylinder% given radius and length%volume=pi*radius.^2.*length;

MatLab (22100)מבוא לתכנות בעזרת

אורט בראודה – הנדסת מכונות

Page 26: Functions - פונקציות

5_6.26/45 -שימוש בפונקציה בתוך תכנית 4דוגמא ראשית

לכתוב תכנית הקולטת רדיוס וגובה של גליל וקוראת לפונקציה cylinderAV .לחישוב שטחו ונפחו

הפלט יודפס בתכנית הראשיתclc;clear;r=input('Insert the radius as a vector:');h=input('Insert the height as a vector:'); [v,s]=cylinderAV(r,h); format short gdisp('The volumes are:'); disp(v);disp('The areas are:'); disp(s);

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 27: Functions - פונקציות

5_6.27/45– שימוש בפונקציה בתוך תכנית 5דוגמא ראשית

לקליטה ובדיקה של קלט ואחר check_outלכתוב תכנית, אשר קוראת לפונקציה כך בודקת האם הקלט הוא מספר ראשוני.

%inputs the numberN=input('enter a number ');while N~=fix(N) | N<=0 N=input('enter an other number ');end

%checks if primaryfor I=2:fix(N/2) if rem(N,I)==0 break; endendif I==fix(N/2) disp('The primary number');else disp('Not primary number');end

%inputs the numberN=check_output; %checks if primaryfor I=2:fix(N/2) if rem(N,I)==0 break; endendif I==fix(N/2) disp('The primary number');else disp('Not primary number');end

Page 28: Functions - פונקציות

5_6.28/45

6דוגמא

אשר מקבלת כפרמטר מספר Primeלכתוב פונקציה א. אם הוא 0 אם הוא ראשוני ו-1שלם חיובי ומחזירה

לא ראשוני.

אשר מקבלת כפרמטר מספר SumPלכתוב פונקציה ב. ומסכמת את כל המספרים הראשוניים Nשלם חיובי

Prime בעזרת הפונקציה N עד 1מ-

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

תת פונקציות

Page 29: Functions - פונקציות

5_6.29/45

אורט בראודה – הנדסת מכונות

6 - דוגמאתת פונקציה

)המשך(

% sum of all primary numbers from 1 to N (the input argument)function s=SumP(N);s=0;for i=1:N if Prime(i)==1 % if i is a primary number s=s+i; endend % checks if the input argument n is a primary numberfunction a=Prime(n)for i=2:fix(n/2) if rem(n,i)==0 % if n is divided by i a=0; % n isn't a primary and the function is finished return ; endenda=1; % n is a primary

MatLab (22100)מבוא לתכנות בעזרת

Page 30: Functions - פונקציות

5_6.30/45

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

בתכנית SumPשימוש בפונקציה 7 - דוגמאהראשית

%inputs the numberN=check_output; %summs all primary numbersx=SumP(N);

fprintf('\nThe sum of all primary numbers between 2 and %d is %d',N,x);

Page 31: Functions - פונקציות

5_6.31/45

?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 32: Functions - פונקציות

5_6.32/45 גלובליים משתנים לפעמים מסוכן להעביר את כל המשתנים כארגומנטים

לפונקציה( הצהרה על משתנה כעל גלובליglobal במרחב )

העבודה, פירושו שהמשתנה יכול להיות נגיש במרחב גם globalהעבודה השני אם המשתנה מוצהר בתור

במרחב העבודה השני.

נתבונן במשתנה חדשDENSITY בדוגמאות שלנו

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 33: Functions - פונקציות

5_6.33/45

גלובליים )המשך( משתנים

באותיות גדולות קיים הסכם המציע שימושבשמות של משתנים גלובליים

אל תשתמש במשתנים גלובליים כל עוד לא נכשלוכל שאר האפשרויות. משתנים גלובליים יכולים לגרום למיליארד בעיות והם נחשבים למסוכנים!

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 34: Functions - פונקציות

5_6.34/45 דוגמא של משתנה גלובליהמשתנהDENSITY משותף למרחב העבודה הבסיסי ומרחב

העבודה של הפונקציה

כל פונקציה שמכילהDENSITY כמשתנה גלובלי מאפשרת גישה אליו מבחוץ

» global DENSITY

» DENSITY=100;

» cylinderwt(1,10)

ans =

3.1416e+003 מבוא לתכנות בעזרתMatLab (22100)

אורט בראודה – הנדסת מכונות

Page 35: Functions - פונקציות

5_6.35/45

?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 36: Functions - פונקציות

5_6.36/45 פונקציות - ערך מוחזר

ערך מוחזר על ידי פונקציתMatLab יכול להיות סקלר או מערך )ואפילו מערך תאים(

m-functions ,משתמשות ב-][ להחזרת מערך המורכב מסקלרים

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 37: Functions - פונקציות

5_6.37/45

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

פונקציות - ערך מוחזר )המשך(

» [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

אם משתמשים במשתנה יחיד לקבלת ערך מוחזר מקבלים רק

ערך ראשון ממערך מוחזר

Page 38: Functions - פונקציות

5_6.38/45 m-functions הם ליבה של MatLab

סקריפטים שלMatLab מתבצעים שורה אחרי שורה והתהליך הוא איטי מאוד

m-functions עוברים קומפילציה לתוך “p-code ” בקריאה שלהם מתבצע: p-codeהראשונה אליהן ואחר כך

הביצוע הרבה יותר מהר מאשר ביצוע לפי שורה אחרי שורה עריכתm-function מעדכנת p-codeישן

אפשר לבצע קומפילציה שלm-function לתוך p-code :”p-file“ושלמור אותו כ-

pcode myfunction יוצרת קובץ myfunction.pp-code יכול להיות מסופק בדיוק כמו m-function-משתמשים לא יכולים לעדכן בקלות את הפונקציה ששמורה כp-

code MatLabמבוא לתכנות בעזרת

(22100)

אורט בראודה – הנדסת מכונות

Page 39: Functions - פונקציות

5_6.39/45 מספר ארגומנטים נכנסים ויוצאים

function volume=cylinder(radius, length)%The first agrument is required and the second have default value

if nargin==1 % if there is only one input argument

length=1;

end

v1=radius^2;

v2=pi.*v1;

volume=v2.*length;

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

מחזירה את מספר המשתנים בקלט של פונקציה. - nargin פונקצית

>> nargin('cylinder')

ans =

2 מאפשרת narginאבל הפונקציה להעביר מספר שונה של

ארגומנטים:

>> cylinder(10)

ans =

314.1593

Page 40: Functions - פונקציות

מספר ארגומנטים נכנסים ויוצאים )המשך(6.40/45_5

function [S,H]=S_Per(a,b);%outputs the area 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)

אורט בראודה – הנדסת מכונות

מחזירה את מספר המשתנים בפלט של פונקציה. nargout פונקצית

>> [x,y]=S_Per(10,2)

x = 20

y = 24

מאפשרת לשנות את צורת nargout אבל הפונקציה •התוצאה :

קריאה לתוך משתנים:

>> nargout(‘S_Per')

ans =

2

Page 41: Functions - פונקציות

5_6.41/45

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

>> S_Per(10,2)

The arrea is 20The perimeter is 24>>

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

קריאה ללא השמה:

מספר ארגומנטים נכנסים ויוצאים )המשך(

Page 42: Functions - פונקציות

5_6.42/45

?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 43: Functions - פונקציות

5_6.43/45 8דוגמא

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

function [sum]=cos1(x);k=0;sum=0;el=1;while abs(el)>=0.0001 sum=sum+el; k=k+1; el=(-1)^k*x^(2*k)/factorial(2*k);endend

ניתן להריץ פונקציה ישר Command Window:ב-

מוגדר בצורה cos(x)טור טיילור של פונקציה טריגונומטרית הבאה:

יש לכתוב תכנית המחשבת ומחזירה את ערך הפונקציה cos(x) לפי טור טיילור. חישוב הטור יבוצע עד שהערך המוחלט

0.0001של האיבר האחרון בטור יהיה קטן מ-

...!6

x

!4

x

!2

x1)xcos(

642

>> cos1(pi/3)

ans =

0.5000

Page 44: Functions - פונקציות

5_6.44/45

ניתן לקרוא לפונקציה מתוך תכנית ראשית:

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

8דוגמא )המשך(

תכנית ראשית

הרצת תכנית ראשית

>>cos1_test

Insert a single number : pi

cos(3.14159)=-1>>

m-function

Page 45: Functions - פונקציות

5_6.45/45

ניתן לשלב את הפונקציה בפונקציה אחרת

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

8דוגמא )המשך(

function x=sin1(alpha);

x=sqrt(1-cos1(alpha).^2);

Page 46: Functions - פונקציות

5_6.46/45 9דוגמא

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

function v=Divs(n);%v - vector of the dividers of the integer nv=[];for i=1:n/2 if rem(n,i)==0 v=[v,i]; endend%the function returns the vector v

>> Divs(12)

ans =

1 2 3 4 6

הפונקציה מקבלת מספר שלם כפרמטר נכנס

)n) ומחזירה את ווקטור המחלקים שלו (v (1כולל

Page 47: Functions - פונקציות

5_6.47/45 – הדפסת מחלקי כל המספרים 10דוגמא n עד 2מ-

MatLabמבוא לתכנות בעזרת (22100)

function Divs_test();n=input('Insert an integer number: ');for i=2:n fprintf('the dividers of %d are:',i); disp(Divs(i));end function v=Divs(n);%v - vector of the dividers of the integer nv=[];for i=1:n/2 if rem(n,i)==0 v=[v,i]; endend%the function returns the vector v

Insert an integer number: 12the dividers of 2 are: 1

the dividers of 3 are: 1

the dividers of 4 are: 1 2

the dividers of 5 are: 1

the dividers of 6 are: 1 2 3

the dividers of 7 are: 1

the dividers of 8 are: 1 2 4

the dividers of 9 are: 1 3

the dividers of 10 are: 1 2 5

the dividers of 11 are: 1

the dividers of 12 are: 1 2 3 4 6 אורט בראודה – הנדסתמכונות

Page 48: Functions - פונקציות

5_6.48/45

מציאת שורשים של משוואה ריבועית a x2 + b x + c = 0 של המשוואה: a, b, cנתונים המקדמים

למצוא שני ערכים שמרצים את המשוואה

dataWhat you could do with the data? answers

How you could find the answer?

Too many choices for this question to help

•Everyone knows the solution:

x = (-b ± (b2 – 4 a c)) / 2 a

What does this mean?

11דוגמא

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 49: Functions - פונקציות

5_6.49/45

דיאגראמת פתרון

c

b

a

-b

(b2 – 4 a c)

2 a

+

- X2

X1

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 50: Functions - פונקציות

5_6.50/45

insert a: 1insert b: 6insert c: 5There are 2 real roots: -1 -5

insert a: 1insert b: 0insert c: 4There are 2 complex roots: 0 + 2.0000i 0 - 2.0000i

insert a: 1insert b: -2insert c: 1There is only one root: 1

MatLab (22100)מבוא לתכנות בעזרת

Page 51: Functions - פונקציות

5_6.51/45

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

12דוגמא לכתוב תכנית שקולטת מספר שלם מהמשתמש ומדפיסה

משולש כוכביות בגודל המספר. (משולש ישר זווית).

(אותה צריך לכתוב), stars-lineהתכנית תשתמש בפונקציה המקבלת פרמטר אחד (מספר שלם וחיובי) ומדפיסה שורת כוכביות

באורך המספר.

Page 52: Functions - פונקציות

5_6.52/45

מספרים שלמים 2 לכתוב פונקציה אשר מקבלת כפרמטרים בה כל איבר שווה MXN ומחזירה מטריצה M,Nחיוביים

למכפלת מספר השורה שלו במספר העמודה שלו

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

13דוגמא

מה תהיה התוצאה?

Page 53: Functions - פונקציות

5_6.53/45

כמו בדוגמא הקודמת, אבל כל איבר הנמצא בשורה אי זוגית ועמודה אי זוגית )בו זמנית( יהיה שווה למכפלת מספר

שורה ועמודה שלו וכל איבר הנמצא בשורה זוגית ועמודה

זוגית )בו זמנית( יהיה שווה לסכום מספרי עמודה ושורה

שלו

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

14דוגמא

Page 54: Functions - פונקציות

5_6.54/45 m-functionאיך ממוקמים?

לפעמים חשוב לדעת איךMatLab רואה m-function ,במיוחד אם לשתיין יש אותו שם...

,נניחMatLab פוגש את השם velocity .

ואז הוא:

בודק האםvelocity ?הוא משתנה במרחב העבודה נוכחי האםvelocity הוא פונקציה מוכללת של MatLab ? האםvelocity ?הוא תת פונקציה של הפונקציה הנוכחית האםvelocity.p ואז גם(velocity.m) היאprivate

function? הנמצא velocity.p ואז גם(velocity.m) במרחב העבודה

הנוכחי? הנמצא velocity.p ואז גם(velocity.m) ?מבוא לתכנות בעזרת בתיקייה הנוכחיתMatLab

(22100)

אורט בראודה – הנדסת מכונות

Page 55: Functions - פונקציות

5_6.55/45

?בשביל מה פונקציותהגדרת פונקציה,איך לעצב פונקציות,מרחב עבודה של פונקציה,משתנים גלובליים,שימוש בפונקציות,דוגמאות.סיכום

MatLabמבוא לתכנות בעזרת (22100)

אורט בראודה – הנדסת מכונות

Page 56: Functions - פונקציות

מבוא לתכנות בעזרתMatLabפונקציות

אורט בראודה – הנדסת מכונות