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

מתוך Math-Wiki
קפיצה אל: ניווט, חיפוש
(קבלת מינימום)
 
(11 גרסאות ביניים של אותו משתמש אינן מוצגות)
שורה 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>m,n</math>.
+
 
+
דרך ראשונה - ([min([m,n
+
 
+
דרך שנייה - תנאי
+
 
+
דרך שלישית - <math>min=\frac{m+n}{2}-\frac{m-n}{2}</math>
+
 
+
====אלגוריתם אוקלידס====
+
 
+
====פתרון מערכת משוואות - ניוטון-רפסון====
+
 
+
תהי <math>f(x)</math> פונקציה, צריך למצוא <math>x</math> כך ש־<math>f(x)=0</math>.
+

גרסה אחרונה מ־11:05, 29 ביוני 2013

חזרה לדף המשתמש

תאריך עדכון אחרון: 29 ביוני 2013

תוכנה 1: MATLAB

הערה: ב־MATLAB בסוף כך שורת הוראה יש להוסיף ; על מנת שלא תתבצע הדפסה, אך אם רוצים הדפסה אין להוסיף ; בסוף השורה.


עבודה בסיסית ב־MATLAB

פונקציות

מבני נתונים

יעילות

רקורסיה

משוואות לינאריות וריבועים מינימליים