|
|
(13 גרסאות ביניים של אותו משתמש אינן מוצגות) |
שורה 1: |
שורה 1: |
| [[משתמש:גיא|חזרה לדף המשתמש]] | | [[משתמש:גיא|חזרה לדף המשתמש]] |
| | | |
− | תאריך עדכון אחרון: 19 ביוני 2013 | + | תאריך עדכון אחרון: 29 ביוני 2013 |
| | | |
− | ='''תוכנה 1: MATLAB'''= | + | =='''תוכנה 1: MATLAB'''== |
| | | |
| ''הערה: ב־MATLAB בסוף כך שורת הוראה יש להוסיף ; על מנת שלא תתבצע הדפסה, אך אם רוצים הדפסה אין להוסיף ; בסוף השורה.'' | | ''הערה: ב־MATLAB בסוף כך שורת הוראה יש להוסיף ; על מנת שלא תתבצע הדפסה, אך אם רוצים הדפסה אין להוסיף ; בסוף השורה.'' |
| | | |
− | ==עבודה בסיסית ב־MATLAB==
| |
| | | |
− | ===משתנים===
| + | [[תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר, עבודה בסיסית ב־MATLAB|עבודה בסיסית ב־MATLAB]] |
| | | |
− | משתנה הוא סמל המסמן כמות, איבר של קבוצה, או ערך לוגי, העשויים להשתנות (מתוך ויקיפדיה).
| + | [[תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר, פונקציות|פונקציות]] |
| | | |
− | השמה למשתנה - הכנסת ערך אליו. ב־MATLAB (דוגמות): <BR>
| + | [[תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר, מבני נתונים|מבני נתונים]] |
− | x=3 <BR>
| + | |
− | z=pi <BR>
| + | |
− | w=4+5*i <BR>
| + | |
| | | |
− | פעולות בסיסיות עם משתנים (a,b מציינים מספרים):
| + | [[תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר, יעילות|יעילות]] |
− | {| border="1" align="center"
| + | |
− | |-
| + | |
− | ! הפעולה
| + | |
− | ! הסימן ב־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 המרוכב, <math>\sqrt{-1}</math>, pi - פאי.
| + | |
− | | + | |
− | הדפסת ערך משתנה: <BR>
| + | |
− | (disp(value
| + | |
− | | + | |
− | ===מטריצות===
| + | |
− | | + | |
− | פעולות בסיסיות עם משתנים (A,B מציינים מטריצות):
| + | |
− | {| border="1" align="center"
| + | |
− | |-
| + | |
− | ! הפעולה
| + | |
− | ! ההוראה ב־MATLAB
| + | |
− | |-
| + | |
− | | הגדרת מטריצת אפסים בגודל <math>m\times n</math>
| + | |
− | | (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 מייצגים מספר כלשהו):
| + | |
− | {| border="1" align="center"
| + | |
− | |-
| + | |
− | ! הפעולה
| + | |
− | ! ההוראה ב־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 שהוגדר, <BR>
| + | |
− | [w(1:2:5)=w([1 3 5])=[3 10 4
| + | |
− | | + | |
− | ===פעולות בוליאניות===
| + | |
− | | + | |
− | פעולות בוליאניות מחזירות 0 (שקר) או 1 (אמת). דוגמות (a,b מספרים):
| + | |
− | {|
| + | |
− | ! הפעולה
| + | |
− | ! הסימון ב־MATLAB
| + | |
− | |-
| + | |
− | | האם שני ערכים שווים
| + | |
− | | a==b
| + | |
− | |-
| + | |
− | | קטן
| + | |
− | | a<b
| + | |
− | |-
| + | |
− | | גדול
| + | |
− | | a>b
| + | |
− | |-
| + | |
− | | קטן שווה
| + | |
− | | a<=b
| + | |
− | |-
| + | |
− | | גדול שווה
| + | |
− | | a>=b
| + | |
− | |-
| + | |
− | | אינו שווה
| + | |
− | | =~
| + | |
− | |}
| + | |
− | | + | |
− | && - וגם, || - או
| + | |
− | | + | |
− | ===תנאים===
| + | |
− | | + | |
− | תנאי פשוט:
| + | |
− | <div align="left">
| + | |
− | (תנאי) if <BR>
| + | |
− | הוראות לביצוע<BR>
| + | |
− | end
| + | |
− | <div align="right">
| + | |
− | | + | |
− | | + | |
− | תנאי מורכב:
| + | |
− | <div align="left">
| + | |
− | (תנאי) if<BR>
| + | |
− | (הוראות לביצוע)<BR>
| + | |
− | else<BR>
| + | |
− | (הוראות לביצוע)<BR>
| + | |
− | 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:
| + | |
− | <div align="left">
| + | |
− | ;n=1
| + | |
− | for i=2:1000
| + | |
− | ;n=n*i
| + | |
− | end
| + | |
− | ;(disp(n
| + | |
− | <div align="right">
| + | |
− | | + | |
− | פתרון 2 - לולאת while: <BR>
| + | |
− | <div align="left">
| + | |
− | ;n=1
| + | |
− | ;i=1
| + | |
− | while i<=1000
| + | |
− | ;n=n*i
| + | |
− | ;i=i+1
| + | |
− | end
| + | |
− | ;(disp(n
| + | |
− | <div align="right">
| + | |
− | | + | |
− | ====תרגיל 2 - מספרים ראשוניים====
| + | |
− | | + | |
− | צרו וקטור המכיל את כל המספרים הראשוניים מ־1 עד 1000
| + | |
− | | + | |
− | <div align="left">
| + | |
− | ;כמה ראשוניים מצאנו % 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
| + | |
− | <div align="right">
| + | |
− | | + | |
− | ====תרגיל 3 - פירוק מספר שלם לגורמים ראשוניים====
| + | |
− | | + | |
− | פרקו מספר שלם <math>k\leq 1000</math> לגורמים ראשוניים (אפשר להשתמש בוקטור primes מהתרגיל הקודם).
| + | |
− | | + | |
− | <div align="left">
| + | |
− | ;k=252
| + | |
− | while k>1
| + | |
− | ;i=2
| + | |
− | while mod(k,primes(i))!~=0
| + | |
− | ;i=i+1
| + | |
− | end
| + | |
− | ;((disp(primes(i
| + | |
− | ;(k=k/primes(i
| + | |
− | end
| + | |
− | <div align="right">
| + | |
− | | + | |
− | ===יישומים מתמטיים===
| + | |
− | | + | |
− | ====מחלק משותף גדול ביותר gcd====
| + | |
− | | + | |
− | עבור <math>m,n</math> שלמים, המספר השלם הגדול ביותר המחלק גם את <math>m</math> וגם את <math>n</math> ייקרא המחלק המשותף הגדול ביותר ויסומן <math>gcd(m,n)</math>.
| + | |
− | | + | |
− | <div align="left">
| + | |
− | ;m=12
| + | |
− | ;n=30
| + | |
− | if n<m
| + | |
− | ;t=m
| + | |
− | ;m=n
| + | |
− | ;n=t
| + | |
− | end
| + | |
− | for i=1:m
| + | |
− | if mod(m,i)==0 && mod(n,i)=0
| + | |
− | ;gcd=i
| + | |
− | end
| + | |
− | end
| + | |
− | ;(disp(gcd
| + | |
− | <div align="right">
| + | |
− | | + | |
− | ====קבלת מינימום====
| + | |
− | | + | |
− | ====אלגוריתם אוקלידס====
| + | |
− | | + | |
− | ====פתרון מערכת משוואות - ניוטון-רפסון====
| + | |
− | | + | |
− | תהי <math>f(x)</math> פונקציה, צריך למצוא <math>x</math> כך ש־<math>f(x)=0</math>.
| + | |