תשובות לתרגיל 1

‫תשובות לעבודה מס' ‪ 1‬להגשה‪:‬‬
‫‪ .1‬בכל אחת מהשאלות הבאות ‪,‬נא להעריך את הקוד‪ MATLAB .‬יש להשתמש ב ‪ MATLAB‬כדי‬
‫לבדוק את התשובות שלכם‪.‬‬
‫א‪ .‬נימוק‪ :‬סדר פעולות במטלב תמיד משמאל לימין ולא תמיד מתלכד עם סדר פעולות במתמטיקה!‬
‫הביטוי ‪ 10<x<20‬הוא תמיד נכון! כי ‪ ((10<x)<20) =10<x<20‬והביטוי ‪ 10<x‬שווה או ל‪ 0‬או ‪1‬ל ואז ז‪.‬א‪ .‬ש‬
‫‪ {0,1}<20‬תמיד נכון! ואז התשובה היא ‪ :‬במקום משהיה כתוב בשאלה ‪1‬א‪ .‬מספיק לכתוב כי‪:‬‬
‫‪if x < 10000‬‬
‫‪y = 2‬‬
‫‪else‬‬
‫)‪y = 2 + 0.1*(x - 10‬‬
‫‪end‬‬
‫ב‪.‬‬
‫‪a. 2<4<3‬‬
‫‪b. 3 ^ 2 ^ 3‬‬
‫‪c. 2 + round(6 / 9 + 3 * 2) / 2 - 3‬‬
‫‪2<4<3‬‬
‫)‪((2<4)=1)< 3 = 1 (1=true‬‬
‫‪3 ^ 2) ^ 3=729‬‬
‫‪3 ^ (2 ^ 3)= 6561‬‬
‫‪=2.5000,(6 / 9 + 3 * 2)=6.6667, round(6.6667)=7‬‬
‫‪rounds to the nearest integers‬‬
‫‪=2,(6 / 9 + 3 * 2)=6.6667, floor(6.6667)=6‬‬
‫‪rounds to the nearest integers towards minus‬‬
‫‪infinity‬‬
‫‪rounds to the nearest integers towards infinity‬‬
‫;)‪(round(-6.667)=-7; ceil(-6.667)=-6‬‬
‫)‪3.9917e+292, (eps*realmin= 4.9407e-324‬‬
‫)אבל‪:‬‬
‫‪e. 2 + ceil(6 / 9 + 3 * 2) / 2 – 3‬‬
‫‪f. eps*realmax‬‬
‫‪g. 1/0‬‬
‫)‪h. dec2bin(3^2/4‬‬
‫‪Inf (1/0*0=NaN‬‬
‫( ‪10‬‬
‫)תשובה נכונה ‪:‬‬
‫מצה התאמה של הביטוי‬
‫הבאים‪:‬‬
‫;]‪0.2890‬‬
‫‪d. 2 + floor(6 / 9 + 3 * 2) / 2 - 3‬‬
‫‪0.8711,‬‬
‫בעזרת פקודת ‪ MATLAB nlinfit‬לנתונים‬
‫;]‪>> x= [-1, -0.5, 0, 0.5, 1, 2‬‬
‫‪y=[12.8201, 6.0157, 3.0, 1.5809,‬‬
‫;)‪>> f=@(b,x)b(1)*exp(b(2)*x)+b(3)*exp(b(4)*x‬‬
‫)]‪>> b=nlinfit(x,y,f,[1 1 1 1‬‬
‫= ‪b‬‬
‫‪1.9904‬‬
‫‪-0.9981‬‬
‫‪1.0098‬‬
‫‪-1.9945‬‬
‫;)‪>> g=b(1)*exp(b(2)*x)+b(3)*exp(b(4)*x‬‬
‫)'‪>> plot(x,y,'ro',x,g,'b‬‬
‫‪15‬‬
‫‪10‬‬
‫‪5‬‬
‫‪2‬‬
‫באופן ויזואלי רואים שקירוב מספיק טוב!‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪-1‬‬
‫‪ .3‬נתון ש ]‪- x = [1 4 8], y = [2 5 3‬ו ‪ A=[7 2 5;1 2 6;4 1 3] ,‬נא לקבוע איזה מבין הפעולות‬
‫הבאות נכונות ואם כן נכונות ‪,‬נא לבצע אותה ולקבל את התוצאה ב‪MATLAB .‬‬
‫אם הפקודה לא תפעל ‪,‬נא להסביר למה שזה יקרה‪.‬‬
‫חילוק מצד שמול‪[2.000, 1.25, 0.375] :‬‬
‫‪Error using ==> plus‬‬
‫‪Error using ==> plus‬‬
‫‪Error using ==> minus‬‬
‫‪]1‬‬
‫‪4‬‬
‫‪8‬‬
‫‪2‬‬
‫‪5‬‬
‫[‪3‬‬
‫‪]1‬‬
‫‪4‬‬
‫;‪8‬‬
‫‪2‬‬
‫‪5‬‬
‫]‪3‬‬
‫‪3‬‬
‫‪0‬‬
‫‪5‬‬
‫‪-1‬‬
‫‪0‬‬
‫מינוס ‪ 2‬בכל המקומות ‪4‬‬
‫‪2‬‬
‫‪-1‬‬
‫‪1‬‬
‫‪4‬‬
‫‪1‬‬
‫‪3‬‬
‫שורה אחרונה‬
‫‪A‬‬
‫אותה מטריצה‬
‫מערכים לשרשר אופקי‬
‫מערכים לשרשר אנכי‬
‫סכום עבור עמודות‬
‫סכום עבור שורות‬
‫‪0‬‬
‫‪0‬‬
‫‪-0.4200‬‬
‫הסבר‬
‫‪:n.‬‬
‫‪ x/A‬קיים‬
‫‪5‬‬
‫‪6‬‬
‫‪3‬‬
‫‪5‬‬
‫‪6‬‬
‫‪2‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪2‬‬
‫‪7‬‬
‫‪1‬‬
‫‪4‬‬
‫‪7‬‬
‫‪1‬‬
‫‪x .\ y‬‬
‫‪x + A‬‬
‫‪x' + y‬‬
‫]'‪A - [x' y‬‬
‫]‪[x , y‬‬
‫]‪[x ; y‬‬
‫‪A – 2‬‬
‫‪a.‬‬
‫‪b.‬‬
‫‪c.‬‬
‫‪d.‬‬
‫‪e.‬‬
‫‪f.‬‬
‫‪g.‬‬
‫)‪h. A(end,:‬‬
‫)‪i. A(1:3,:‬‬
‫])‪j. [A ; A(1:2,:‬‬
‫‪7‬‬
‫‪2‬‬
‫‪5‬‬
‫‪7‬‬
‫‪1‬‬
‫‪2‬‬
‫‪6‬‬
‫‪1‬‬
‫‪4‬‬
‫‪1‬‬
‫‪3‬‬
‫‪4‬‬
‫‪12‬‬
‫‪5‬‬
‫‪14‬‬
‫‪[14‬‬
‫‪9‬‬
‫’]‪8‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪-0.2800‬‬
‫‪-0.7000‬‬
‫(דורשת תשומת לב!)‬
‫אך ‪ A\y‬לא קיים‪ .‬על‪-‬פי כלל במטלב‪(x/A)\y=x/A\y :‬‬
‫])‪k. [A,A(:,1‬‬
‫)‪l. sum(A‬‬
‫)‪m. sum(A,2‬‬
‫‪n. x/A\y‬‬
‫וגם‪:‬‬
‫‪A is an M-by-N tall matrix where M > N, A \ B is the same as (A'*A) \ (A'*B).‬‬
‫‪If‬‬
‫)‪A is an M-by-N wide matrix where M < N, A \ B is the same as A' * ((A*A') \ B‬‬
‫‪If‬‬
‫‪ .4‬צייר ב‪:MATLAB‬‬
‫א ‪.‬משתך בתלת ממד כפתרון של משוואה ‪exp(3 * (x -1)^2 + (y + 2)^2) - z^2 =0 :‬‬
‫תשובה‪:‬‬
‫בציור חשוב מאוד לבחור נכון זום‪ ,‬זווית‪ ,‬נקודת המבט וכן הלאה‬
‫לא לבצע זום ונקודת המבט קרוב מדי‪ :‬במצב כזה האובייקט "יברח" מהמסך‪.‬‬
‫•‬
‫לא לבצע זום ונקודת המבט רחוק מדי‪ :‬במצב כזה האובייקט "יזניח" מהמסך‪.‬‬
‫•‬
‫כאן אפשר להשתמש לדוגמה תחום ‪ 0<x<2, -3<y<-1,‬כי ‪ EXP‬לא גבוה מדי ‪:‬‬
‫)]‪>> ezsurf('-exp(3/2 * (x -1)^2 + (y + 2)^2/2)',[0,2,-3,-1‬‬
‫;‪>> hold on‬‬
‫)]‪>> ezsurf('exp(3/2 * (x -1)^2 + (y + 2)^2/2)',[0,2,-3,-1‬‬
‫)‪exp(3/2 (x -1)2 + (y + 2)2/2‬‬
‫‪6‬‬
‫‪4‬‬
‫‪2‬‬
‫‪0‬‬
‫‪-2‬‬
‫‪-4‬‬
‫‪-6‬‬
‫‪-1‬‬
‫‪2‬‬
‫‪-1.5‬‬
‫‪-2‬‬
‫‪1.5‬‬
‫‪1‬‬
‫‪-2.5‬‬
‫‪0.5‬‬
‫‪0‬‬
‫‪-3‬‬
‫‪y‬‬
‫‪x‬‬
‫אם בחרת\ה זום לא נכון אז תרשים גם לא יהיה נכון או אפילו יהיה שגוי‪ .‬לדוגמה‪:‬‬
‫)]‪<ezsurf('exp(3/2 * (x -1)^2 + (y + 2)^2/2)',[0,10,0,10‬‬
‫‪<Warning: Axis limits outside float precision, use ZBuffer or Painters instead. Not rendering.‬‬
‫פונקציות )‪ sin(x‬ו)‪arcsin(x‬‬
‫ב ‪.‬גרף של שתי‬
‫‪ . 1‬בשני תרשימים זה על יד זה‪,‬‬
‫תשובה‪ :‬חשוב מאוד לקחת בחשבון תחום הגדרה של פונקציות‪ .‬כאן אפשר להשתמש לדוגמה ב‪:‬‬
‫‪asin‬‬
‫;)'‪ezplot('sin‬‬
‫‪sin‬‬
‫‪1.5‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0.5‬‬
‫‪0.5‬‬
‫‪0‬‬
‫‪0‬‬
‫‪-0.5‬‬
‫‪-0.5‬‬
‫‪-1‬‬
‫‪-1‬‬
‫‪-1.5‬‬
‫‪1‬‬
‫‪0‬‬
‫‪x‬‬
‫‪-1‬‬
‫‪5‬‬
‫‪0‬‬
‫‪x‬‬
‫‪-5‬‬
‫;)‪>> subplot(1,2,1‬‬
‫;)‪>> subplot(1,2,2‬‬
‫;)'‪ezplot('asin‬‬
‫‪ .2‬בתרשים אחת) גרף אחד מעל השני(‬
‫תשובה‪ :‬חשוב לקחת בחשבון תחום הגדרה של כל פונקציות‪,‬‬
‫ואז‪ ,‬אפשר להשתמש לדוגמה גם בפקודה‪:‬‬
‫)]‪ezplot('(sin(t)-x)*(asin(t)-x)',[-1,1‬‬
‫‪(sin(t)-x) (asin(t)-x) = 0‬‬
‫‪1‬‬
‫‪0.8‬‬
‫‪0.6‬‬
‫‪0.4‬‬
‫‪0.2‬‬
‫‪x‬‬
‫‪0‬‬
‫‪-0.2‬‬
‫‪-0.4‬‬
‫‪-0.6‬‬
‫‪-0.8‬‬
‫‪1‬‬
‫‪0.8‬‬
‫‪0.6‬‬
‫‪0.2‬‬
‫‪0.4‬‬
‫ג ‪.‬גרף של אליפסה בקואורדינטות פולריות )‪ (r, t‬באמצעות נוסחה‬
‫תשובה‪:‬‬
‫‪0‬‬
‫‪t‬‬
‫‪-0.2‬‬
‫‪-0.4‬‬
‫‪-0.6‬‬
‫‪-0.8‬‬
‫‪-1‬‬
‫‪-1‬‬
‫))‪r (t) =a (1 – e^2) / (1 – e* cos(t‬‬
‫בקואורדינטות פולריות משוואת אליפסה‪ ,‬פרבולה והיפרבולה בעלת מוקד אחד בראשית הצירים היא ‪r (t) =a (1 – e^2) / (1 – e* cos(t)) :‬‬
‫לאליפסה‪:‬‬
‫‪ -a‬מחצית מהציר הראשי של האליפסה‪.‬‬
‫‪ - e‬האקסצנטריות של האליפסה (מספר בין ‪ 0‬ל ‪ ,1‬ככל שקרוב יותר ל‪ 0-‬האליפסה יותר מעגלית וככל שקרוב ל‪ 1-‬האליפסה יותר צרה)‬
‫שימו לב! רדיוס בקואורדינטות פולריות ובתוכנות מטלאב תמיד חיובי!‬
‫כאן אפשר להשתמש לדוגמה בתוכנת מטלאב‪:‬‬
‫)'))‪ezpolar('1/(1-0.4*cos(t‬‬
‫‪90‬‬
‫‪2‬‬
‫‪120‬‬
‫‪60‬‬
‫‪1.5‬‬
‫‪30‬‬
‫‪150‬‬
‫‪1‬‬
‫‪0.5‬‬
‫‪180‬‬
‫‪0‬‬
‫‪210‬‬
‫‪330‬‬
‫‪300‬‬
‫))‪r = 1/(1-0.4 cos(t‬‬
‫‪270‬‬
‫‪240‬‬