שינויים

קפיצה אל: ניווט, חיפוש

תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר

הוסרו 6,072 בתים, 11:05, 29 ביוני 2013
[[משתמש:גיא|חזרה לדף המשתמש]]
תאריך עדכון אחרון: 19 29 ביוני 2013
=='''תוכנה 1: 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|-| אינו שווה| =~|} && - וגם, || - או ===תנאים=== תנאי פשוט:  (תנאי) if <BR> הוראות לביצוע<BR> end  תנאי מורכב:<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: <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> 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"> ====תרגיל 3 - פירוק מספר שלם לגורמים ראשוניים==== פרקו מספר שלם <math>k\leq 1000</math> לגורמים ראשוניים (אפשר להשתמש בוקטור primes מהתרגיל הקודם). <div align="left"> ;k=252<BR> while k>1<BR> ;i=2<BR> while mod(k,primes(i))!~=0<BR> ;i=i+1<BR> end<BR> ;((disp(primes(i<BR> ;(k=k/primes(i<BR> 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>.