הבדלים בין גרסאות בדף "תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר"
(←משתנים) |
(←עבודה בסיסית ב־MATLAB) |
||
שורה 169: | שורה 169: | ||
תנאי פשוט: | תנאי פשוט: | ||
− | (תנאי) if <BR> | + | (תנאי) if <BR> |
− | הוראות לביצוע<BR> | + | הוראות לביצוע<BR> |
− | end | + | end |
תנאי מורכב: | תנאי מורכב: | ||
− | + | <div align="left"> | |
− | (תנאי) if<BR> | + | (תנאי) if<BR> |
− | (הוראות לביצוע)<BR> | + | (הוראות לביצוע)<BR> |
− | else<BR> | + | else<BR> |
− | (הוראות לביצוע)<BR> | + | (הוראות לביצוע)<BR> |
− | end | + | end |
+ | <div align="right"> | ||
תנאי יותר מורכב: | תנאי יותר מורכב: | ||
+ | <div align="left"> | ||
+ | (תנאי) if<BR> | ||
+ | (הוראות לביצוע)<BR> | ||
+ | elseif<BR> | ||
+ | (הוראות לביצוע)<BR> | ||
+ | else<BR> | ||
+ | (הוראות לביצוע)<BR> | ||
+ | end | ||
+ | <div align="right"> | ||
+ | |||
+ | ===לולאת for=== | ||
+ | |||
+ | לולאת for - ביצוע אותו רצף הוראות מספר ידוע מראש של פעמים. | ||
+ | |||
+ | תכנות: <BR> | ||
+ | <div align="left"> | ||
+ | (וקטור המכיל את ערכי i הדרושים)=for i<BR> | ||
+ | (הוראות לביצוע)<BR> | ||
+ | end | ||
+ | <div align="right"> | ||
+ | |||
+ | הערה: אמנם i הוא קבוע, אך ניתן להציב בו ערך. על מנת להחזירו להיות ה־i המרוכב, נכתוב את ההוראה clear i. | ||
+ | |||
+ | ===לולאת while=== | ||
+ | |||
+ | לולאת while - ביצוע אותו רצף הוראות מספר שאינו ידוע מראש של פעמים אך עם תנאי לעצירה. | ||
+ | |||
+ | תכנות:<BR> | ||
+ | <div align="left"> | ||
+ | (תנאי לעצירה, תנאי בוליאני) while<BR> | ||
+ | (הוראות לביצוע)<BR> | ||
+ | end | ||
+ | <div align="right"> | ||
+ | |||
+ | ===תרגילים=== | ||
+ | |||
+ | ====תרגיל 1 - עצרת==== | ||
+ | |||
+ | חשבו את <math>1000!</math>. | ||
+ | |||
+ | פתרון 1 - לולאת for: <BR> | ||
+ | <div align="left"> | ||
+ | ;n=1<BR> | ||
+ | for i=2:1000<BR> | ||
+ | ;n=n*i<BR> | ||
+ | end<BR> | ||
+ | ;(disp(n | ||
+ | <div align="right"> | ||
+ | |||
+ | פתרון 2 - לולאת while: <BR> | ||
+ | <div align="left"> | ||
+ | ;n=1<BR> | ||
+ | ;i=1<BR> | ||
+ | while i<=1000<BR> | ||
+ | ;n=n*i<BR> | ||
+ | ;i=i+1<BR> | ||
+ | end<BR> | ||
+ | ;(disp(n | ||
+ | <div align="right"> | ||
+ | |||
+ | ====תרגיל 2 - מספרים ראשוניים==== | ||
+ | |||
+ | צרו וקטור המכיל את כל המספרים הראשוניים מ־1 עד 1000 | ||
− | ( | + | <div align="left"> |
− | ( | + | ;כמה ראשוניים מצאנו % found=0<BR> |
− | + | ;וקטור עם המספרים הראשוניים % []=primes<BR> | |
− | + | for p=1:1000<BR> | |
− | + | ;yesno=1<BR> | |
− | ( | + | ;k=2<BR> |
− | end | + | while k<=sqrt(p) && yesno==1<BR> |
+ | if mod(p,k)==0<BR> | ||
+ | ;yesno=0<BR> | ||
+ | end<BR> | ||
+ | ;k=k+1<BR> | ||
+ | end<BR> | ||
+ | if yesno==1<BR> | ||
+ | ;found=found+1<BR> | ||
+ | ;primes(found)=p<BR> | ||
+ | end <BR> | ||
+ | end | ||
+ | <div align="right"> |
גרסה מ־09:05, 19 ביוני 2013
תאריך עדכון אחרון: 19 ביוני 2013
תוכן עניינים
תוכנה 1: MATLAB
הערה: ב־MATLAB בסוף כך שורת הוראה יש להוסיף ; על מנת שלא תתבצע הדפסה, אך אם רוצים הדפסה אין להוסיף ; בסוף השורה.
עבודה בסיסית ב־MATLAB
משתנים
משתנה הוא סמל המסמן כמות, איבר של קבוצה, או ערך לוגי, העשויים להשתנות (מתוך ויקיפדיה).
השמה למשתנה - הכנסת ערך אליו. ב־MATLAB (דוגמות):
x=3
z=pi
w=4+5*i
פעולות בסיסיות עם משתנים (a,b מציינים מספרים):
הפעולה | הסימן ב־MATLAB |
---|---|
חיבור | a+b |
חיסור | a-b |
כפל | a*b |
חילוק | / |
חזקה | a^b |
לוגריתם טבעי (ln) | (log(a |
שורש ריבועי | (sqrt(a |
ערך שלם / רצפה | (floor(a |
שארית חלוקה (רק עבור שלמים) | (mod(a,b |
להוספת הערה בסוף שורה כותבים את הסימן % ולאחריו את ההערה.
בחילוק שני מספרים שלמים, המנה היא (floor(x,y והשארית היא (mod(x,y.
משתנים קבועים: i,j - ה־i המרוכב, , pi - פאי.
הדפסת ערך משתנה:
(disp(value
מטריצות
פעולות בסיסיות עם משתנים (A,B מציינים מטריצות):
הפעולה | ההוראה ב־MATLAB |
---|---|
הגדרת מטריצת אפסים בגודל | (A=zeros(m,n |
איבר בשורה x ובעמודה y | (A(x,y |
חיבור מטריצות | A+B |
חיסור מטריצות | A-B |
כפל במובן מטריצות | A*B |
כפל איבר־איבר | A.*B |
חילוק (כפל בהופכית) | A/B |
חילוק איבר־איבר | A./B |
מימדי מטריצה (וקטור) | (size(A |
שחלוף (transpose) | 'A |
ועוד...
הערה 1: האינדקסים במטריצה מתחילים מ־1.
הערה 2: אם נעשתה פנייה לאיבר שאינו במערך והושם בו ערך, MATLAB ירחיב באופן אוטומטי את המערך, ובמקומות שנוספו יושמו אפסים.
מערכים: מטריצה מגודל nx1
פעולות בסיסיות עם מערכים (v מייצג וקטור, m,n,p מייצגים מספר כלשהו):
הפעולה | ההוראה ב־MATLAB |
---|---|
אתחול (הצבת אפסים) | (v=zeros(n,1 |
האיבר ה־n-י | (v(n |
אורך הוקטור | (length(v |
וקטור המכיל את המספרים הטבעיים עד n | v=1:n |
וקטור המכיל את כל המספרים מ־m עד n בקפיצות p | v=m:p:n |
דוגמה: בכתיבה 1:5 יווצר הווקטור [5 4 3 2 1]. בכתיבה 1:2:5 יווצר הוקטור [5 3 1].
ניתן להגדיר וקטור גם באופן הבא: [w=[3 9 10 11 4 (במקום רווחים ניתן להשתמש בפסיקים). על מנת להגדיר מטריצה באופן דומה מוסיפים ; כדי לרדת שורה.
ניתן לקבל וקטור מאינדקסים מסוימים. למשל, עבור w שהוגדר,
[w(1:2:5)=w([1 3 5])=[3 10 4
פעולות בוליאניות
פעולות בוליאניות מחזירות 0 (שקר) או 1 (אמת). דוגמות (a,b מספרים):
הפעולה | הסימון ב־MATLAB |
---|---|
האם שני ערכים שווים | a==b |
קטן | ab |
קטן שווה | a<=b |
גדול שווה | a>=b |
אינו שווה | =~ |
&& - וגם, || - או
תנאים
תנאי פשוט:
(תנאי) if
הוראות לביצוע
end
תנאי מורכב:
(תנאי) if
(הוראות לביצוע)
else
(הוראות לביצוע)
end
תנאי יותר מורכב:
(תנאי) if
(הוראות לביצוע)
elseif
(הוראות לביצוע)
else
(הוראות לביצוע)
end
לולאת for
לולאת for - ביצוע אותו רצף הוראות מספר ידוע מראש של פעמים.
תכנות:
(וקטור המכיל את ערכי i הדרושים)=for i
(הוראות לביצוע)
end
הערה: אמנם i הוא קבוע, אך ניתן להציב בו ערך. על מנת להחזירו להיות ה־i המרוכב, נכתוב את ההוראה clear i.
לולאת while
לולאת while - ביצוע אותו רצף הוראות מספר שאינו ידוע מראש של פעמים אך עם תנאי לעצירה.
תכנות:
(תנאי לעצירה, תנאי בוליאני) while
(הוראות לביצוע)
end
תרגילים
תרגיל 1 - עצרת
חשבו את .
פתרון 1 - לולאת for:
;n=1
for i=2:1000
;n=n*i
end
;(disp(n
פתרון 2 - לולאת while:
;n=1
;i=1
while i<=1000
;n=n*i
;i=i+1
end
;(disp(n
תרגיל 2 - מספרים ראשוניים
צרו וקטור המכיל את כל המספרים הראשוניים מ־1 עד 1000
;כמה ראשוניים מצאנו % found=0
;וקטור עם המספרים הראשוניים % []=primes
for p=1:1000
;yesno=1
;k=2
while k<=sqrt(p) && yesno==1
if mod(p,k)==0
;yesno=0
end
;k=k+1
end
if yesno==1
;found=found+1
;primes(found)=p
end
end