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

מתוך Math-Wiki
קפיצה אל: ניווט, חיפוש
(משתנים)
(עבודה בסיסית ב־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
  
(תנאי) if<BR>
+
<div align="left">
(הוראות לביצוע)<BR>
+
;כמה ראשוניים מצאנו % found=0<BR>
elseif<BR>
+
;וקטור עם המספרים הראשוניים % []=primes<BR>
(הוראות לביצוע)<BR>
+
for p=1:1000<BR>
else<BR>
+
    ;yesno=1<BR>
(הוראות לביצוע)<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 המרוכב, \sqrt{-1}, pi - פאי.

הדפסת ערך משתנה:
(disp(value

מטריצות

פעולות בסיסיות עם משתנים (A,B מציינים מטריצות):

הפעולה ההוראה ב־MATLAB
הגדרת מטריצת אפסים בגודל m\times n (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 - עצרת

חשבו את 1000!.

פתרון 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