סדנת יסודות מטלב ממדיים - מערכים חד 2: שיעור מס` - אוניברסיטת בר-אילן

Transcription

סדנת יסודות מטלב ממדיים - מערכים חד 2: שיעור מס` - אוניברסיטת בר-אילן
‫סדנת יסודות מטלב‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫סדנת יסודות מטלב‬
‫שיעור מס' ‪ :2‬מערכים חד‪-‬ממדיים‬
‫יצירת מערכי שורה‬
‫שרשור‬
‫יצירת מערך שורה ע"י ציון האיברים‪:‬‬
‫]‪[a1 a2 a3 a4 ...‬‬
‫רשימת איברים מופרדים ברווחים או בפסיקים‪.‬‬
‫]‪or: [a1,a2,a3,a4...‬‬
‫]‪V5 = [3 7 -1 3 0‬‬
‫= ‪V5‬‬
‫‪3‬‬
‫‪7‬‬
‫‪-1‬‬
‫דוגמא‪:‬‬
‫‪3‬‬
‫‪0‬‬
‫] [ = ‪V0‬‬
‫מקרה פרטי‪ :‬מערך ריק (ללא איברים)‬
‫שרשור ‪ :‬אופרטור בינרי בין שני מערכים‪ .‬התוצאה היא מערך שלישי‪ ,‬הכולל את המערך הראשון ובהמשכו את‬
‫המערך השני (כאשר סדר האיברים בכל מערך נשמר)‪.‬‬
‫אופרטור השרשור במטלב‪( ] [ :‬סוגריים מלבניים המקיפים את האופרנדים)‪ .‬ניתן לשרשר בפקודה אחת יותר משני‬
‫מערכים‪.‬‬
‫דוגמאות‪:‬‬
‫;]‪u3 = [4 3 2]; v3 = [9 8 7‬‬
‫]‪w6 = [u3 v3‬‬
‫= ‪w6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪2‬‬
‫‪0‬‬
‫‪3‬‬
‫‪-1‬‬
‫‪7‬‬
‫‪3‬‬
‫‪4‬‬
‫]‪V7 = [9 V5 9‬‬
‫= ‪V7‬‬
‫‪9‬‬
‫‪3‬‬
‫‪9‬‬
‫מידע על המערך‬
‫אורך מערך חד ‪-‬ממדי (שורה או עמודה) מוחזר מפקודת ‪.length‬‬
‫‪V7‬‬
‫= ‪V7‬‬
‫‪0‬‬
‫‪9‬‬
‫‪-1‬‬
‫‪3‬‬
‫‪7‬‬
‫‪3‬‬
‫‪9‬‬
‫)‪length(V7‬‬
‫= ‪ans‬‬
‫‪7‬‬
‫)][(‪length‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫יצירת סדרות‬
‫האופרטור ‪ :‬יוצר מערך שורה שאיבריו סדרה חשבונית‪.‬‬
‫‪16‬‬
‫‪3.0000‬‬
‫‪start : step : stop‬‬
‫‪14‬‬
‫‪2.5000‬‬
‫‪12‬‬
‫‪2.0000‬‬
‫‪10‬‬
‫‪8‬‬
‫‪1.5000‬‬
‫‪6‬‬
‫‪1.0000‬‬
‫‪2:2:16‬‬
‫= ‪ans‬‬
‫‪2‬‬
‫‪4‬‬
‫‪0.5:0.5:3‬‬
‫= ‪ans‬‬
‫‪0.5000‬‬
‫אם ‪ step‬חסר‪ ,‬ברירת המחדל היא ‪.1‬‬
‫‪11‬‬
‫עמ' ‪ 1‬מתוך ‪9‬‬
‫‪10‬‬
‫‪start : stop‬‬
‫‪9‬‬
‫‪8‬‬
‫‪7‬‬
‫שיעור ‪2‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2:11‬‬
‫= ‪ans‬‬
‫‪2‬‬
‫אוגוסט ‪15‬‬
‫סדנת יסודות מטלב‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫אם ‪ stop‬איננו חלק מן הסדרה החשבונית המוגדרת ע"י ‪ start‬ו‪ ,step-‬הפעולה עוצרת באיבר האחרון לפני ‪.stop‬‬
‫‪0.5:10‬‬
‫= ‪ans‬‬
‫‪Columns 1 through 7‬‬
‫‪6.5000‬‬
‫‪5.5000‬‬
‫‪4.5000‬‬
‫‪3.5000‬‬
‫‪1.5000‬‬
‫‪2.5000‬‬
‫‪0.5000‬‬
‫‪Columns 8 through 10‬‬
‫‪8.5000‬‬
‫‪9.5000‬‬
‫ליצירת סדרה יורדת יש לקחת ‪ step‬בערך שלילי‪.‬‬
‫‪start:-step:stop‬‬
‫‪5‬‬
‫‪0.5000‬‬
‫‪2.5000‬‬
‫‪7‬‬
‫‪6‬‬
‫‪4.5000‬‬
‫‪8‬‬
‫‪6.5000‬‬
‫פקודת ‪ linspace‬ליצירת סדרה ליניארית עם ‪ n‬אברים‬
‫‪10:-1:5‬‬
‫= ‪ans‬‬
‫‪10‬‬
‫‪9‬‬
‫‪8.5:-2:0‬‬
‫= ‪ans‬‬
‫‪8.5000‬‬
‫)‪linspace(start,stop,n‬‬
‫אם ‪ n‬חסר‪ ,‬ברירת המחדל‬
‫היא ‪ 100‬מספרים‪.‬‬
‫‪7.5000‬‬
‫‪10‬‬
‫‪6‬‬
‫‪8‬‬
‫פקודת ‪ logspace‬ליצירת סדרה לוגריתמית עם ‪ n‬איברים בין ‪ 10a‬ל‪.10b-‬‬
‫)‪linspace(0,10,6‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫‪2‬‬
‫‪4‬‬
‫)‪v=logspace(a,b,n‬‬
‫כלומר‪ ,‬המרווחים בין איברי )‪ log10(v‬קבועים‪ .‬אם ‪ n‬חסר‪ ,‬ברירת המחדל היא ‪.50‬‬
‫)‪v = logspace(1,2,6‬‬
‫= ‪v‬‬
‫‪100.0000‬‬
‫‪63.0957‬‬
‫‪39.8107‬‬
‫‪25.1189‬‬
‫‪15.8489‬‬
‫‪10.0000‬‬
‫‪2.0000‬‬
‫‪1.8000‬‬
‫‪1.6000‬‬
‫‪1.4000‬‬
‫‪1.2000‬‬
‫)‪log10(v‬‬
‫= ‪ans‬‬
‫‪1.0000‬‬
‫מערכים מיוחדים‬
‫קיימות במטלב פקודות לייצור מערכים מסוגים שונים‪ .‬כמה דוגמאות‪:‬‬
‫קבועים‬
‫מטריצה ‪ nxm‬שכולה ‪1‬‬
‫)‪ones(n,m‬‬
‫מטריצה ‪ nxm‬שכולה ‪0‬‬
‫)‪zeros(n,m‬‬
‫)‪nan(n,m‬‬
‫מטריצה ‪ nxm‬שכולה ‪NaN‬‬
‫דוגמאות‪:‬‬
‫)‪ones(1,4‬‬
‫=‪ans‬‬
‫‪1 1 1 1‬‬
‫מערך שורה שכולו ‪1‬‬
‫מערך שורה שכולו ‪NaN‬‬
‫‪NaN‬‬
‫‪NaN‬‬
‫‪NaN‬‬
‫‪NaN‬‬
‫)]‪nan([1 6‬‬
‫= ‪ans‬‬
‫‪NaN‬‬
‫‪NaN‬‬
‫מספרים אקראיים‬
‫)‪rand(n,m‬‬
‫התפלגות אחידה בין ‪ 0‬ל‪1-‬‬
‫)‪randn(n,m‬‬
‫התפלגות גאוסיאנית סביב ‪ 0‬ברוחב ‪1‬‬
‫)‪randi(K,n,m‬‬
‫מספרים שלמים בהתפלגות אחידה בין ‪ 1‬ל‪K-‬‬
‫ממדים בפקודות שלמעלה‪:‬‬
‫אם מציינים רק מימד אחד‪ ,‬נוצרת מטריצה ריבועית‪ .‬לכן‪ ,‬ליצירת מערך שורה באורך ‪ n‬יש לציין במימדים ‪. 1,n‬‬
‫עמ' ‪ 2‬מתוך ‪9‬‬
‫שיעור ‪2‬‬
‫אוגוסט ‪15‬‬
‫סדנת יסודות מטלב‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫)‪rand(1,4‬‬
‫דוגמאות‪:‬‬
‫‪-0.4336‬‬
‫‪0.3426‬‬
‫‪3.5784‬‬
‫‪0.8622‬‬
‫‪0.3188‬‬
‫‪-1.3077‬‬
‫=‪ans‬‬
‫‪0.9134 0.1270 0.9058 0.8147‬‬
‫)‪randi(9,1,5‬‬
‫)‪randn(3‬‬
‫= ‪ans‬‬
‫‪0.5377‬‬
‫‪1.8339‬‬
‫‪-2.2588‬‬
‫‪9‬‬
‫‪6‬‬
‫‪8‬‬
‫=‪ans‬‬
‫‪7 9‬‬
‫◄תרגיל ‪ :1‬ליצור סדרה של ‪ n‬מספרים אקראיים בהתפלגות אחידה בין ‪ a‬ל‪.b-‬‬
‫פעולות מתמטיות על מערכים חד ממדיים‬
‫פעולות לפי הגדרות אלגברה ליניארית‬
‫פעולת האופרטורים המתמטיים חיבור‪ ,‬חיסור‪ ,‬כפל‪ ,‬חילוק וחזקה מוגדרת במטלב בהתאם לכללים של אלגברה‬
‫ליניארית (וקטורי שורה ועמודה ומטריצות)‪ .‬כאן מוצג רק מה שרלוונטי לוקטורים חד‪-‬ממדיים‪.‬‬
‫סדר הקדימויות בין האופרטורים השונים הוא כמקובל במתמטיקה‪.‬‬
‫פעולה‬
‫דוגמא‬
‫הגדרה‬
‫;]‪R = [5 2 3]; S = [4 6 0‬‬
‫חיבור‬
‫‪C=A+B‬‬
‫‪Ck  Ak  Bk‬‬
‫‪RpS = R+S‬‬
‫= ‪RpS‬‬
‫חיסור‬
‫‪C = A-B‬‬
‫כפל בסקלר‬
‫‪C=s*A‬‬
‫חילוק בסקלר‬
‫‪C=A/s‬‬
‫‪Ck  Ak  Bk‬‬
‫‪3‬‬
‫‪9‬‬
‫‪8‬‬
‫‪R2=R*2‬‬
‫‪A‬‬
‫‪Ck  k‬‬
‫‪s‬‬
‫‪A‬‬
‫‪Ck  k‬‬
‫‪s‬‬
‫= ‪R2‬‬
‫‪6‬‬
‫‪10‬‬
‫‪4‬‬
‫הרחבה סקלרית‬
‫כפל וחילוק מערך בסקלר מוגדר ככפל וחילוק כל אחד מן האיברים‪ ,‬לפי כללי אלגברה ליניארית‪.‬‬
‫במטלב‪ ,‬גם חיבור וחיסור סקלר ממערך מוגדרים כפעולה על כל אחד מן האיברים‪.‬‬
‫‪C=s±A‬‬
‫‪R+3‬‬
‫‪Ck  s  Ak‬‬
‫= ‪ans‬‬
‫‪6‬‬
‫◄דוגמא ‪ :1‬סיגנל עם רעש‪.‬‬
‫נתון סיגנל‪.‬‬
‫להוסיף לסיגנל רעש בהתפלגות אחידה בין ‪ -3‬ל‪.3-‬‬
‫‪8‬‬
‫‪5‬‬
‫‪load LDGW‬‬
‫)'‪plot(T,deer,'k‬‬
‫‪hold on‬‬
‫)'‪plot(T,deer+6*rand(1,length(deer))-3,'c‬‬
‫‪45‬‬
‫רוחב התחום הוא ‪ ,6‬לכן כופלים ב‪.6-‬‬
‫אמצע התחום הוא ‪ ,0‬לכן מזיזים ב ‪.3-‬‬
‫‪40‬‬
‫מערך הרעש צריך להיות מאותם ממדים כמו הסיגנל‬
‫‪35‬‬
‫המקורי‪ .‬בפקודת ‪ rand‬יש לציין את שני הממדים (למרות‬
‫‪30‬‬
‫שהמערך חד ממדי)‪ .‬ציון מימד אחד בלבד ייתן מערך דו‪-‬‬
‫‪25‬‬
‫ממדי‪.‬‬
‫‪20‬‬
‫‪100‬‬
‫עמ' ‪ 3‬מתוך ‪9‬‬
‫שיעור ‪2‬‬
‫‪90‬‬
‫‪80‬‬
‫‪70‬‬
‫‪60‬‬
‫‪50‬‬
‫‪40‬‬
‫‪30‬‬
‫‪20‬‬
‫‪10‬‬
‫‪0‬‬
‫‪15‬‬
‫אוגוסט ‪15‬‬
‫סדנת יסודות מטלב‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫פעולות בין אברי מערכים‬
‫חיבור וחיסור מערכים מוגדר כחיבור וחיסור כל אחד מן האיברים משני המערכים בהתאמה‪ ,‬לפי כללי אלגברה‬
‫ליניארית‪.‬‬
‫במטלב ניתן לבצע גם כפל‪ ,‬חילוק והעלאה בחזקה על כל אחד מן האיברים משני המערכים בהתאמה‪ ,‬ע"י הוספה של‬
‫נקודה ‪ .‬לפני סימן האופרטור‪.‬‬
‫הגדרה‬
‫דוגמא‬
‫כתיב‬
‫פעולה‬
‫כפל איברים בהתאמה‬
‫‪C=A.*B‬‬
‫‪Ck  Ak Bk‬‬
‫‪R.*S‬‬
‫חלוקת איברים בהתאמה‬
‫‪C=A./B‬‬
‫‪Ak‬‬
‫‪Bk‬‬
‫‪Ck ‬‬
‫חלוקה של סקלר במערך‬
‫‪C=s./A‬‬
‫‪s‬‬
‫‪Ak‬‬
‫‪Ck ‬‬
‫העלאה בחזקה בהתאמה‬
‫‪C=A.^B‬‬
‫‪Ck  AkBk‬‬
‫העלאת מערך בחזקה סקלרית‬
‫‪C=A.^s‬‬
‫‪Ck  Aks‬‬
‫העלאת סקלר בחזקת מערך‬
‫‪C=s.^A‬‬
‫‪Ck  s Ak‬‬
‫‪12‬‬
‫‪0‬‬
‫= ‪ans‬‬
‫‪20‬‬
‫)‪S./(R+1‬‬
‫‪0‬‬
‫= ‪ans‬‬
‫‪0.6667‬‬
‫‪2.0000‬‬
‫‪1./S‬‬
‫‪Inf‬‬
‫= ‪ans‬‬
‫‪0.2500‬‬
‫‪0.1667‬‬
‫‪R.^S‬‬
‫‪1‬‬
‫‪64‬‬
‫= ‪ans‬‬
‫‪625‬‬
‫‪R.^2‬‬
‫‪9‬‬
‫‪4‬‬
‫= ‪ans‬‬
‫‪25‬‬
‫‪2.^R‬‬
‫‪8‬‬
‫‪4‬‬
‫= ‪ans‬‬
‫‪32‬‬
‫◄ תרגיל ‪ :2‬לחשב סדרה של ‪ 10‬החזקות הראשונות של ‪.2‬‬
‫◄דוגמא ‪ :2‬שרטוט ביטוי מתמטי בתחום רחב‬
‫ובתחום מצומצם‪.‬‬
‫;)‪x = linspace(0,10,100‬‬
‫;)‪y=sin(pi*x).*exp(-x‬‬
‫)‪subplot(1,2,1‬‬
‫‪plot(x,y,'b'), axis tight‬‬
‫)‪subplot(1,2,2‬‬
‫)'‪plot(x,y,'b‬‬
‫)]‪axis([6 10 -0.001 0.002‬‬
‫הפעלת פונקציות מתמטיות על מערך‬
‫במטלב כל הפונקציות המתמטיות המופעלות על מערך‪ ,‬מחזירות מערך של ערכי הפונקציה עבור כל אחד מן‬
‫האיברים בנפרד‪.‬‬
‫)‪C=f(A‬‬
‫‪Ck  f  Ak ‬‬
‫)‪exp(-R‬‬
‫= ‪ans‬‬
‫‪0.0003‬‬
‫עמ' ‪ 4‬מתוך ‪9‬‬
‫‪0.0025‬‬
‫שיעור ‪2‬‬
‫‪0.0498‬‬
‫אוגוסט ‪15‬‬
‫סדנת יסודות מטלב‬
‫ד"ר סמדר שץ‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫◄ דוגמא ‪ :3‬הסקריפט ‪ d2tanh.m‬מחשב ומציג על פני‬
‫;‪T = 0.5; H=0.3‬‬
‫התחום ‪ -6T<m<6T‬את הביטוי ‪. f m   tanh m  H‬‬
‫‪d2tanh‬‬
‫‪T‬‬
‫הפעלת הסקריפט‪:‬‬
‫הפעלת אופרטור בין איברי מערך‬
‫נניח שיש מערך חד ‪-‬ממדי ‪ Y‬באורך ‪ . N‬הפקודות הבאות מבצעות פעולה בין כל האיברים‪:‬‬
‫‪N‬‬
‫‪sum‬‬
‫סקלר = סכום איברי המערך‬
‫)‪S = sum(Y‬‬
‫‪prod‬‬
‫סקלר = מכפלת איברי המערך‬
‫)‪P = prod(Y‬‬
‫‪mean‬‬
‫סקלר = ממוצע האיברים‬
‫‪S   Yk‬‬
‫‪k 1‬‬
‫‪N‬‬
‫‪P   Yk‬‬
‫‪k 1‬‬
‫‪Std‬‬
‫)‪M = mean(Y‬‬
‫‪1 N‬‬
‫‪ Yk‬‬
‫‪N k 1‬‬
‫‪S Y ‬‬
‫‪1 N‬‬
‫‪S‬‬
‫)‪ Yk  Y  S = std(Y‬‬
‫‪N  1 k 1‬‬
‫סקלר = סטיית תקן (כיול סטנדרטי)‬
‫סקלר = סטיית תקן (כיול לפי ‪)N‬‬
‫)‪S = std(Y,1‬‬
‫‪1 N‬‬
‫‪ Yk  Y ‬‬
‫‪N k 1‬‬
‫‪S‬‬
‫‪median‬‬
‫סקלר = חציון‬
‫)‪M = median(Y‬‬
‫‪cumsum‬‬
‫מערך באורך ‪ = N‬סכום מצטבר‬
‫)‪s = cumsum(Y‬‬
‫‪cumprod‬‬
‫מערך באורך ‪ = N‬מכפלה מצטברת‬
‫)‪p = cumprod(Y‬‬
‫‪pn   Yk‬‬
‫)‪d = diff(Y‬‬
‫‪d n  Yn1  Yn‬‬
‫‪n‬‬
‫‪sn   Yk‬‬
‫‪k 1‬‬
‫‪n‬‬
‫‪k 1‬‬
‫‪diff‬‬
‫מערך באורך ‪ = N-1‬הפרש בין איברים סמוכים‬
‫מערך באורך ‪ = N-k‬הפעלת ‪ k diff‬פעמים‬
‫)‪diff(Y,k‬‬
‫כמו‪-‬כן הפקודה )‪ min(Y‬מחזירה את הערך המינימלי מבין איברי המערך והפקודה )‪max(Y‬‬
‫מחזירה את הערך‬
‫המקסימלי‪.‬‬
‫◄ תרגיל ‪ :3‬הגרילו סדרה של ‪ 50‬מספרים שלמים בין ‪ 1‬ל ‪ . 9-‬בדקו שאכן אין בסדרה ערכים שחורגים מגבולות אלה‪,‬‬
‫ושהממוצע בסביבות ‪.5‬‬
‫עמ' ‪ 5‬מתוך ‪9‬‬
‫שיעור ‪2‬‬
‫אוגוסט ‪15‬‬
‫סדנת יסודות מטלב‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫פעולות על חלק ממערך‬
‫קריאת איברים‬
‫הפנייה לאיבר במערך נעשית ע"י המקום שלו במערך (אינדקס)‪ .‬המקום הראשון מסומן ‪ ,1‬השני ‪ 2‬וכו'‪.‬‬
‫;]‪R = [5 2 3‬‬
‫)‪r2 = R(2‬‬
‫= ‪r2‬‬
‫‪2‬‬
‫ציון המקום נעשה בסוגריים עגולים‪ ,‬ליד שמו של המשתנה ‪.x(index) .x‬‬
‫ציון מקום שאינו קיים במערך הוא שגיאה‪.‬‬
‫פנייה לאיבר השני‪:‬‬
‫)‪R(end‬‬
‫= ‪ans‬‬
‫‪3‬‬
‫פנייה לאיבר האחרון‪ :‬ציון מקום ‪.end‬‬
‫למילה ‪ end‬יש משמעות רק אם היא מופיעה בסוגריים ליד שם משתנה‪.‬‬
‫)‪R(1:2‬‬
‫= ‪ans‬‬
‫‪5 2‬‬
‫)]‪R([2 3 1 2‬‬
‫= ‪ans‬‬
‫‪2‬‬
‫‪3‬‬
‫ניתן לפנות לכמה איברים‪ ,‬כאשר בין הסוגריים מופיע מערך של אינדקסים‪.‬‬
‫‪2‬‬
‫‪5‬‬
‫◄ תרגיל ‪ :4‬הצגת מערך בסדר איברים הפוך‪.‬‬
‫ביצוע פעולות בין שני איברים סמוכים בכל המערך ‪:A‬‬
‫)‪A(end‬‬
‫)‪A(end-1‬‬
‫)‪A(end‬‬
‫)‪A(3‬‬
‫)‪A(2‬‬
‫)‪A(1‬‬
‫)‪A(3‬‬
‫)‪A(2‬‬
‫)‪A(1:end-1‬‬
‫)‪A(1‬‬
‫)‪A(2:end‬‬
‫]‪c = [1 2 1‬‬
‫= ‪c‬‬
‫]‪[1 2 1‬‬
‫◄ דוגמא ‪ :4‬יצירת מקדמי בינום (משולש פסקל)‪.‬‬
‫המקדמים של ‪ (a+b)2 = c1a2+c2ab+c3b2‬הם‪:‬‬
‫]‪c = [1 c(1:end-1)+c(2:end) 1‬‬
‫כדי ליצור את מקדמי החזקה הבאה‪ ,‬יש לבצע את‬
‫הפעולות הבאות‪:‬‬
‫א‪ .‬לחבר כל שני מקדמים סמוכים ולרשום את התוצאה‪.‬‬
‫ב‪ .‬להוסיף את המספר ‪ 1‬לפני ואחרי המערך שנוצר‪.‬‬
‫= ‪c‬‬
‫]‪[1 3 3 1‬‬
‫]‪c = [1 c(1:end-1)+c(2:end) 1‬‬
‫לחזור על הפעולה כדי לקבל את מקדמי החזקה הבאה‪.‬‬
‫= ‪c‬‬
‫]‪[1 4 6 4 1‬‬
‫שינוי‪ ,‬מחיקה והוספה של איברים‬
‫שינוי ערכים של חלק מאברי המערך נעשה ע"י השמת ערכים לאיברים אלה‬
‫( ציון האינדקסים שלהם)‪.‬‬
‫;]‪v = [5 2 3 9 6 1‬‬
‫‪R(2) = 0‬‬
‫= ‪R‬‬
‫‪5 0 3 9 6 1‬‬
‫שינוי האיבר השני‪:‬‬
‫‪R(end) = 4‬‬
‫= ‪R‬‬
‫‪5 0 3 9 6 4‬‬
‫שינוי המקום האחרון‪.‬‬
‫ניתן לשנות כמה איברים‪ ,‬אם מספר האיברים של הביטוי בצד ימין של‬
‫הפקודה זהה למספר האינדקסים בצד שמאל‪.‬‬
‫עמ' ‪ 6‬מתוך ‪9‬‬
‫שיעור ‪2‬‬
‫]‪R(1:2) = [8 7‬‬
‫= ‪R‬‬
‫‪8 7 3 9 6 4‬‬
‫אוגוסט ‪15‬‬
‫סדנת יסודות מטלב‬
‫ד"ר סמדר שץ‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫הרחבה סקלרית‪ :‬השמת ערך אחיד בכמה מקומות במערך (כאשר בצד ימין‬
‫יש סקלר ובצד שמאל כמה אינדקסים)‪.‬‬
‫‪R(3:5) = 1‬‬
‫= ‪R‬‬
‫‪8 7 1 1 1 4‬‬
‫מחיקה של חלק מאברי המערך נעשית ע"י השמת מערך ריק לאיברים אלה‬
‫(ציון האינדקסים שלהם)‪ .‬האיברים שאחרי אלה שנמחקו מוזזים ומוצמדים‬
‫לאיברים הקודמים‪.‬‬
‫מחיקת האיבר השלישי‪:‬‬
‫מחיקת כל איבר שני‪:‬‬
‫הוספת איברים‪ :‬כתיבה לאינדקס שלא קיים במערך‪ .‬אם אין רציפות בין‬
‫המקום האחרון במערך לאינדקס החדש‪ ,‬מטלב ממלא את המקו מות ביניהם‬
‫][ = )‪R(3‬‬
‫= ‪R‬‬
‫‪8 7 1 1 4‬‬
‫][ = )‪R(1:2:end‬‬
‫= ‪R‬‬
‫‪7 1‬‬
‫‪R(5) = 8‬‬
‫= ‪R‬‬
‫‪7 1 0 0 8‬‬
‫באפסים‪.‬‬
‫פולינומים במטלב‬
‫ייצוג פולינומים במטלב‬
‫פולינומים במטלב מיוצגים ע"י מערך חד‪-‬ממדי של המקדמים‪ ,‬כאשר האיבר הראשון במערך הוא המקדם של מעלת‬
‫הפולינום (החזקה הגבוהה) והאיבר האחרון הוא האיבר החופשי‪.‬‬
‫לדוגמא הפולינום ‪ 5x4+2x2+x+1‬מיוצג ע"י המערך‪.[5 0 2 1 1] :‬‬
‫גם שיטת הספירה העשרונית משתמשת בכתיב דומה של מקדמים‪ :‬הספרה הראשונה (השמאלית) היא המקדם של‬
‫החזקה העשרונית הגבוהה ביותר במספר‪ ,‬והספרות העוקבות הן המקדמים של החזקות העשרוניות בסדר הולך‬
‫ויורד‪ ,‬עד ספרת האחדות שהיא האיבר החופשי‪ .‬חזקות עשרוניות שאינן קיימות במספר מיוצגות ע"י ‪ .0‬למשל‪,‬‬
‫המספר ‪ 50211‬מייצג ‪.5·104+2·102+10+1‬‬
‫בסיסי ספירה‬
‫בבסיס‪-‬הספירה העשרוני ניתן לייצג עד ‪ 9‬אחדות‪ .‬המספר הבא אחרי ‪" 9‬יאגד" את האחדות לעשרת‪ .‬בדומה‪ ,‬המספר‬
‫הבא אחרי ‪ 19‬יכלול שתי עשרות וכו'‪ .‬ניתן לייצג עד ‪ 9‬עשרות‪ .‬המספר הבא אחרי ‪ ,99‬כלומר עשר עשרות‪" ,‬מאגד"‬
‫את העשרות למאה‪ .‬בדומה‪ ,‬ניתן לייצג עד ‪ 9‬מאות‪ ,‬והמספר הבא אחרי ‪" 999‬מאגד" עשר מאות לאלף‪ .‬ניתן "לאגד"‬
‫אחדות לעשרות‪ ,‬עשרות למאות וכו' לאו דווקא אחרי ‪ 9‬אלא אחרי כל מספר שהוא‪ .‬המספר שבו "מאגדים" נקרא‬
‫בסיס הספירה‪ .‬לדוגמא‪ ,‬בסיס ‪ 5‬כולל את הספרות ‪ ,0-4‬והמספר הבא אחרי ‪ 4‬יהיה עשר‪ ,‬המספר הבא אחרי ‪44‬‬
‫יהיה מאה וכו'‪ .‬ניתן גם להגדיר בסיס גדול מעשר‪ ,‬אלא שאז יש לצרף סימנים נוספים לספרות ‪ .0-9‬למשל‪ ,‬בבסיס ‪16‬‬
‫(בסיס הקסדצימלי) את הספרות הבאות אחרי ‪ 0-9‬מקובל לרשום באמצעות האותיות ‪.a-f‬‬
‫מספר בשיטה העשרונית הפו זיציונית (כתיבה עפ"י מיקום) מיוצג ע"י ספרות‪ ,‬שהסדר שלהן משמעותי‪ :‬הספרה‬
‫הימנית ביותר מייצגת אחדות‪ ,‬זו שלשמאלה מייצגת עשרות‪ ,‬וכו'‪ .‬לכן ערכו של מספר ‪ d6d5d 4 d3d 2d1‬הוא‪:‬‬
‫‪ d6 B5  d5 B 4  d 4 B3  d3 B 2  d 2 B  d1‬כאשר ‪ B‬הוא ערך העשרת בבסיס הספירה הנתון‪ ,‬והספרה הגדולה‬
‫ביותר בבסיס הספירה היא ‪( B-1‬במקרה של בסיס ‪ 10‬הספרה הגדולה ביותר היא ‪.)9‬‬
‫בשיטת ‪ -‬ספירה בינארית‪ B=2 ,‬ולכן הספרה הגדולה ביותר היא ‪ ,1‬וכל ספרה במספר יכולה להיות ‪ 0‬או ‪ ,1‬כלומר כל‬
‫ספרה מיוצגת ע"י ביט‪.‬‬
‫עמ' ‪ 7‬מתוך ‪9‬‬
‫שיעור ‪2‬‬
‫אוגוסט ‪15‬‬
‫סדנת יסודות מטלב‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫פעולות על פולינומים‬
‫)‪polyval(p,x‬‬
‫הצבת המשתנה ‪ x‬בפולינום ‪.p‬‬
‫)‪polyval([5 0 2 1 1],7‬‬
‫דוגמא‪ :‬להציב ‪ x=7‬בפולינום ‪5 0 2 1 1‬‬
‫= ‪ans‬‬
‫‪12111‬‬
‫)‪polyval([1 0 0 1 1],2‬‬
‫◄דוגמא ‪ :5‬מהו הערך העשרוני של המספר הבינארי ‪?10011‬‬
‫= ‪ans‬‬
‫‪19‬‬
‫)‪polyval([1 -2 1],1:10‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫‪1‬‬
‫‪4‬‬
‫‪9‬‬
‫‪49‬‬
‫‪64‬‬
‫‪81‬‬
‫)‪polyder(p‬‬
‫‪ x‬יכול להיות מערך‪.‬‬
‫לדוגמא‪ ,‬נציב את הערכים מ ‪ 1-‬עד ‪ 10‬בפרבולה‪.‬‬
‫‪36‬‬
‫‪16‬‬
‫‪25‬‬
‫גזירת פולינום ‪ p‬וקבלת מקדמי פולינום הנגזרת‪.‬‬
‫)]‪polyder([1 1 1 0‬‬
‫= ‪ans‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫)‪poly(r‬‬
‫לדוגמא‪:‬‬
‫מציאת מקדמי פולינום שהשורשים שלו נתונים במערך חד‪-‬ממדי ‪.r‬‬
‫)]‪p4 = poly([1 -1 2 2‬‬
‫= ‪p4‬‬
‫‪1‬‬
‫‪-4‬‬
‫‪3‬‬
‫)‪roots(p‬‬
‫לדוגמא‪:‬‬
‫‪4‬‬
‫‪-4‬‬
‫מציאת כל השורשים של הפולינום (כולל מרוכבים)‬
‫)]‪roots([1 0 0 0 -1‬‬
‫לדוגמא‪ ,‬השורשים של ‪1-x4‬‬
‫‪0.0000i‬‬
‫‪1.0000i‬‬
‫‪1.0000i‬‬
‫‪0.0000i‬‬
‫‪+‬‬
‫‪+‬‬
‫‬‫‪+‬‬
‫‪0.0000i‬‬
‫‪0.0000i‬‬
‫‪0.0000i‬‬
‫‪0.0000i‬‬
‫‪+‬‬
‫‪+‬‬
‫‬‫‪+‬‬
‫= ‪ans‬‬
‫‪-1.0000‬‬
‫‪0.0000‬‬
‫‪0.0000‬‬
‫‪1.0000‬‬
‫)‪roots(p4‬‬
‫= ‪ans‬‬
‫‪-1.0000‬‬
‫‪2.0000‬‬
‫‪2.0000‬‬
‫‪1.0000‬‬
‫)'‪plot(roots([1 0 0 0 0 1]),'o:b‬‬
‫נציג במישור המרוכב את שורשי הפולינום‪. x5+1 :‬‬
‫אם פקודת ‪ plot‬כוללת רק מערך מספרי אחד‪ ,‬ובמערך‬
‫‪1‬‬
‫‪0.8‬‬
‫זה יש מספרים מרוכבים‪ ,‬אז הפקודה מציגה את‬
‫‪0.6‬‬
‫הערכים במישור המרוכב‪ ,‬כאשר החלקים הממשיים‬
‫‪0.4‬‬
‫‪0.2‬‬
‫נלקחים כקואורדינטות ‪ x‬והחלקים הדמיוניים נלקחים‬
‫‪0‬‬
‫כקואורדינטות ‪.y‬‬
‫‪-0.2‬‬
‫‪-0.4‬‬
‫‪-0.6‬‬
‫‪-0.8‬‬
‫‪1‬‬
‫‪0.8‬‬
‫‪0.6‬‬
‫‪0.4‬‬
‫‪0.2‬‬
‫‪0‬‬
‫‪-0.2‬‬
‫‪-0.4‬‬
‫‪-0.8‬‬
‫‪-0.6‬‬
‫‪-1‬‬
‫‪-1‬‬
‫◄ דוגמא ‪ :6‬חישוב טור טיילור לפונקציה )‪ , sin(x‬גזירה ומציאת המקומות בהם הנגזרת מתאפסת‪ .‬טור טיילור של‬
‫‪x3‬‬
‫‪x5‬‬
‫‪x7‬‬
‫‪‬‬
‫‪‬‬
‫)‪ sin(x‬נתון ע"י‪... :‬‬
‫!‪3‬‬
‫!‪5‬‬
‫!‪7‬‬
‫‪ 2n+1‬הוא‪:‬‬
‫עמ' ‪ 8‬מתוך ‪9‬‬
‫‪ sin x  x ‬כלומר יש רק חזקות אי‪-‬זוגיות‪ ,‬והמקדם של חזקה איזוגית‬
‫‪n‬‬
‫‪. T2 n 1   1‬‬
‫!)‪(2n  1‬‬
‫שיעור ‪2‬‬
‫אוגוסט ‪15‬‬
‫ אוניברסיטת בר אילן‬,‫© אגף התקשוב‬
‫סדנת יסודות מטלב‬
‫ד"ר סמדר שץ‬
% d2taylor
% MATLAB basics summer workshop - class 2
% Class demonstration
% Calculate taylor coefficients for sin(x)
% T2n+1 = (-1)^n/(2n+1)!
% find zeros
% find polynomial derivative and compare to cos(x)
N = 8; % calculate to order 17
n = 0:N;
T = (-1).^n./factorial(2*n+1);
‫ מחשב את‬d2taylor ‫הסקריפט‬
‫ בונה מהן פולינום‬,‫מקדמי החזקות‬
‫בפורמט של מטלב ומוצא את‬
.‫השורשים של פולינום הנגזרת‬
.‫חישוב המקדמים שלא מתאפסים‬
‫במערך קיימים רק הערכים שאינם‬
.‫ ובסדר מנמוך לגבוה‬,‫מתאפסים‬
p = 1:2*(N+1); % prepare array of all powers + free term
p(2:2:end) = 0; % zero even orders
p(1:2:end) = T(end:-1:1); % store coefficients according to polynomial
conventions
pd = polyder(p); % find derivative
x = linspace(-2.5*pi,2.5*pi,100);
plot(x,polyval(pd,x)) % plot derivative
hold on
% compare with analytic derivative
plot(x,cos(x),'k')
‫ שרטוט פולינום הנגזרת על‬.‫מציאת פולינום הנגזרת‬
‫ ושרטוט הנגזרת‬2.5π ‫ עד‬-2.5π ‫פני תחום‬
.‫האנליטית בתחום זה‬
roots(p)
sin ‫מציאת נקודות ההתאפסות של‬
roots(pd)
.cos ‫ונקודות ההתאפסות של‬
2
1.5
1
0.5
0
-0.5
-1
-8
15 ‫אוגוסט‬
‫הכנת מערך באורך הפולינום‬
‫ מילוי חזקות זוגיות‬.‫המלא‬
‫זוגיות‬-‫ ומילוי חזקות אי‬,‫באפסים‬
.‫בסדר יורד‬
-6
-4
-2
0
2
4
6
8
ans =
0.0000
-8.3754
-8.3754
8.3754
8.3754
-8.6468
-8.6468
-8.1652
-8.1652
-6.2725
8.6468
8.6468
-3.1416
8.1652
8.1652
6.2725
3.1416
2 ‫שיעור‬
+
+
+
+
+
+
+
+
+
+
+
0.0000i
8.9428i
8.9428i
8.9428i
8.9428i
4.3150i
4.3150i
1.2642i
1.2642i
0.0000i
4.3150i
4.3150i
0.0000i
1.2642i
1.2642i
0.0000i
0.0000i
ans =
-8.0400
-8.0400
8.0400
8.0400
-8.2021
-8.2021
-7.5638
-7.5638
8.2021
8.2021
7.5638
7.5638
-4.7122
4.7122
-1.5708
1.5708
+
+
+
+
+
+
+
+
+
+
8.1827i
8.1827i
8.1827i
8.1827i
3.7130i
3.7130i
0.8481i
0.8481i
3.7130i
3.7130i
0.8481i
0.8481i
0.0000i
0.0000i
0.0000i
0.0000i
9 ‫ מתוך‬9 '‫עמ‬