שיחה:88-151 שימושי מחשב תשעב סמסטר אביב/שאלות ותשובות: הבדלים בין גרסאות בדף

מתוך Math-Wiki
(←‏תרגיל 5 שאלה 2: פסקה חדשה)
שורה 252: שורה 252:


: לא הבנתי ממה אתה רוצה להימנע ומה בדיוק הבעיה. תשלח לי את הקוד או תיאור יותר מפורט של המצב ואשתדל לעזור. --[[משתמש:Grisha|Grisha]] 16:57, 4 במאי 2012 (IDT)
: לא הבנתי ממה אתה רוצה להימנע ומה בדיוק הבעיה. תשלח לי את הקוד או תיאור יותר מפורט של המצב ואשתדל לעזור. --[[משתמש:Grisha|Grisha]] 16:57, 4 במאי 2012 (IDT)
== תרגיל 5 שאלה 2 ==
האם מותר להשתמש בפונקציה פנימית של מטלאב על מנת לחשב את שטח המצולע או שצריך לכתוב בעצמנו אלגוריתם שמחשב את שטח המצולע?

גרסה מ־18:36, 5 במאי 2012

חזרה לדף הקורס


גלול לתחתית העמוד


הוספת שאלה חדשה

הוסף שאלה חדשה (רשום כותרת לשאלה, רשום את תוכן השאלה ולחץ על שמירה למטה מימין לסיום).

-עזרה על עיצוב הטקסט וכתיב מתמטי תוכלו למצוא כאן

אם אתם רוצים לשאול שאלה עליכם ליצור חשבון משתמש באתר.

ארכיון

ארכיון 1 - תרגילים 1-2.

ארכיון 2 - תרגיל 3.

שאלות

בתרגיל 4, בשאלה ראשונה 2 שאלות:

  • -אפשר להניח שהמשתמש מכניס את הוקטור של הטווח באופן שמתאים ל-mesh/surf, כלומר הוקטור יהיה מהצורה [minx,maxx,miny,maxy]?
  • -איך אני יכול להכניס בתוך תנאי את העניין שנניח והמשתמש לא הכניס פרמטר מסוים?
שאלה ראשונה - בניסוח השאלה כתוב שיש להעביר לפונקציה את התחום שבו רוצים להעביר אותה. כלומר, לא צריך להניח שמתמש עושה את זה, אלא יש לממש את הדבר.
שאלה שנייה - אתה יכול למצוא את זה או ב- help של Matlab או במצגת של תרגול 3, איפה שמדברים על פונקציות. --Grisha 22:44, 24 באפריל 2012 (IDT)


תרגיל 4 שאלה 1

האם אפשר להעמיס שיטות? אחרת איך אפשר לא להעביר וקטור לפונקציה?

על איזה שיטות מדובר? מה הכוונה - להעמיס? אין שום בעיה להעביר וקטור לפונקציה - לדוגמא - sin(x), כאשר x הוא וקטור. --Grisha 22:38, 24 באפריל 2012 (IDT)
הבעיה היא שבשאלה דורשים לטפל במצבים שבו הקלט הוא חלקי, ואי אפשר סתם להתעלם מזה שהפונקציה צריכה לקלוט וקטור (מתקבלת שגיאה). לכן עולה השאלה, אם ניתן להעמיס את פונקציה שצריך לבנות? וזאת על מנת שנוכל לטפל גם במקרה כזה.
אנחנו לא כותבים ב C++ אלא במטלב. ראה את ההסבר איך עושים את זה במצגת של תרגול 3, בפרק שמדבר על פונקציות. --Grisha 08:57, 25 באפריל 2012 (IDT)
הסתדרתי, אבל צצה שאלה אחרת. באחת התשובות אמרת שאנחנו מקבלים וקטור שמייצג את התחום ואז לממש אותו לוקטור שמתאים לפונקציה, אבל בעצם אנחנו צריכים גם תחום בציר הx וגם בתחום בציר הy. איך העניין הזה מסתדר בעצם? האם הוקטור שאנחנו מקבלים הוא שירשור של שני התחומים? או שאנחנו מקבלים וקטור כפי שאנחנו צריכים לשלוח לezmesh\ezsurf?
ezmesh/ezsurf מקבל בתחום כל פורמט הגיוני...
תממש מה שיותר נוח והגיוני בשלבילך. עדיף שתעשה דומה להגיון שממומש ב- matlab. --Grisha 21:13, 25 באפריל 2012 (IDT)

לא קשור לשיעורי בית

איך אני משנה את השדה שאני רוצה לעבוד אתו?

איזה שדה? שדה של מה? על מה בדיוק אתה מדבר? קצת הכוונה או דוגמא מאוד תעזור. --Grisha 22:44, 24 באפריל 2012 (IDT)

הכוונה לשדה אלגברי. לדוגמה אם אני רוצה שהחישובים שנעשים יעשו ב[math]\displaystyle{ \mathbb {Z}_5 }[/math]?

באופן כללי אין אפשרות כזאת (או שאני לא יודע איך עושים דבר כזה). ספציפית, במקרה של [math]\displaystyle{ \Z_5 }[/math], אפשר לעשות כל הפעולות mod 5. --Grisha 09:01, 25 באפריל 2012 (IDT)

מה הבעיה לעשות mod בסוף כל חישוב?

כיוון שאין לי מושג מה אתה רוצה לעשות, לא יכול לענות האם יש איזושהי בעיה. תסביר מה אתה עושה ומה אתה רוצה לקבל ואשתדל לעזור. --Grisha 23:15, 26 באפריל 2012 (IDT)

תרגיל 3 שאלה 4 בכלליות

למה נועדו הערכים אלפה וביתא?

תשחק עם הפרמטרים, תצייר גרפים עבור [math]\displaystyle{ \alpha, \beta }[/math] שונים. --Grisha 09:03, 25 באפריל 2012 (IDT)

תרגיל 4 שאלה 2

איפה אפשר למצוא את הדוגמה שמסבירה על movie? או שהיא עדיין לא הועלתה?

תתחיל מ- help של matlab. כמו כן אפשר לראות את הדוגמא שנתתי בתרגול (היא הועלה לאתר שלי). --Grisha 21:02, 25 באפריל 2012 (IDT)
הדוגמה שנתת לא כוללת את הפקודה movie2avi. חובה להשתמש בה? אם כן, איך?
help movie2avi. --Grisha 07:54, 26 באפריל 2012 (IDT)

תרגיל 4 שאלה 1

הפונקציה מקבלת וקטור?

בסעיף 2 של ההסבר כתוב שפונקציה מקבלת את התחום בצורת וקטור. --Grisha 21:10, 25 באפריל 2012 (IDT)

חייבים לפעול על פי ההדרכה?

באופן כללי כן, אבל תסביר למה אתה מתכוון. --Grisha 21:10, 25 באפריל 2012 (IDT)

צריכים להתייחס גם למקרה שלא מקבלים את התחום? צריכים להתייחס גם למקרה שלא מקבלים את הפונקציה?

צריכים להתייחס למקרה שלא מקבלים אף פרמטר. --Grisha 21:10, 25 באפריל 2012 (IDT)
בסעיף 2 של ההסבר כתוב שפונקציה מקבלת את התחום בצורת וקטור.

כן אבל הפונקציה מקבלת 3 נתונים ולא וקטור

כן. פונקציה מקבלת 3 נתונים כאשר אחד מהם וקטור. מה השאלה? --Grisha 23:13, 26 באפריל 2012 (IDT)

תרגיל 4 שאלה 1

האם אפשר להניח שהקלט תקין? (בהנחה ויש קלט כמובן)

כן --Grisha 18:46, 26 באפריל 2012 (IDT)

2 שאלות-על שאלה 4

2 שאלות: -בשאלה 1: איך אני אמור לדעת איזה פרמטר המשתמש לא הכניס? כלומר,אני יודע שע"מ לדעת כמה פרמטרים המשתמש הכניס אני משתמש ב-nargin, אבל איך אני אמור לדעת איזה פרמטרים בדיוק הוא הכניס ע"מ לשים איזהשהו defult במקומם?

אם הסדר הוא: ('function_name('x^2+2*y',[1 2 -1 3],'mesh, אתה רשאי להניח שהסדר נשמר ויכול לא להופיע קלט אחרון, או שני האחרונים או כל שלושתם, אך לא ייתכן שהקלט הראשון לא הועבר כאשר שני ושלישי כן. או, לחילופית, תבדוק איך עובד ביטוי varargin. --Grisha 18:56, 26 באפריל 2012 (IDT)

-בשאלה 2: יש איזה פונקציה שיוצרת אנימציה, בדומה ל-commet, אבל ב-3D?

למשל ezplot3. יש עוד כמה. אך אפשר לייצר אנימציה פשוט ע"י שימוש חוזר בפקודות mesh, surf וכו'. --Grisha 18:56, 26 באפריל 2012 (IDT)

תודה:)

כשאמרתם פרמטר התכוונתם ל1 מנתוני הקלט?

כלומר או לפונקציה או לטווח או לserf/mesh?

תרגיל 4 שאלה 2

בשאלה 2, נניח והדבורה נמצאת ב9.7 ומתקדמת ב0.5 באותו כיוון היא תעצר על 10, או תגיע עד 10.2 ושם תעצר?

תרגיל 4 שאלה 2

"הציגו בעזרת subplot כעשרים מצבי ביניים במרווחים שווים." מה הכוונה במרווחים שווים? האם אתה מכיר פקודה במטלב שמחלקת את אינטרבל לקטעים שווים? --Grisha 12:19, 29 באפריל 2012 (IDT)

תרגיל 4 שאלה 2

איך אני יכול לצייר כמהפונקציות באותה מערכת צירים תלת מימדים גם אם אני משתמש בפקודת ציור שונה ?

תשתמש בפקודה axis --Grisha 12:14, 29 באפריל 2012 (IDT)

else if

1)אפשר דוגמה למצב שבו יש הבדל בין כתיבת elseif לelse if? (המצגת מעורפלת בנושא)

לא קיימת דוגמא כזאת. זאת השאלה של נוחית וגם סיבוך של הקוד. כש אתה כותב elseif, אתה נמצא במבנה if אחד, שזה אומר בין היתר שיהיה סה"כ end אחד בסוף. אם, לעומת זאת, תכתוב מספר פעמים else if, אז הקוד יהיה מסובך לקריאה ולהבנה. --Grisha 12:18, 29 באפריל 2012 (IDT)

2)כשמטפלים במקרים שונים של אותו משתנה, האם יש הבדל כלשהו (יעילות, מוסכמה) בין שימוש במבנה elseif לswitch? הרי switch תמיד ניתן להחלפה במבנה הנ"ל...

אין, שאלה של נוחות גם לכותב וגם לקורא/בודק. אין יש מספר ערכים מדויקים שיש לבדוק, נוח יותר להשתמש ב- switch, אם צריך לבדוק תנאים מורכבים, אינטרוולים וכו', אז if עדיף. --Grisha 12:18, 29 באפריל 2012 (IDT)

איך אמורים לעלות סרט?

?????

לאן? --Grisha 14:37, 29 באפריל 2012 (IDT)

תרגיל 4 שאלה 1

מה הכוונה ב2. התחום של הפונקצייה? תחום של z,x,y? בנפרד?

תבדוק איך מוגדרת פונקציה exmesh או ezsurf. אם לא מוגדר במדויק, אלא רשאי לעשות איך שזה נוח לך. --Grisha 22:28, 29 באפריל 2012 (IDT)

תרגיל 4 שאלה 1

האם המחרוזת שמקבלים היא בעצם ציר z ואם כן איך אמורים להכניס לשם פרמטרים אם זה מחרוזת? ז"א את x ,y לא אמורים לקבל כקלט? תודה

תבדוק איך מוגדרת פונקציה exmesh או ezsurf. --Grisha 22:30, 29 באפריל 2012 (IDT)

בקשר לפונקציות ezsurf,ezmesh

מה קובע את ציר הz הפונקציה שאנו מכניסים?

תודה

את ציר ה- z קובעת הפונקציה שאתה מכניס. למעשה z=f(x,y). --Grisha 06:56, 30 באפריל 2012 (IDT)

בקשר לnargin

אני יודע שלדוגמא שnargin =2 אז למשתנה הקלט הימני ביותר רק נכנס משהו אבל איך אני בודק אם רק למשתנה לדוגמא באמצע רק נכנס משהו ולשאר לא? כדי לעשותם ברירת מחדל או שמה שאתם התכוונתם זה רק להניח שהסדר נשמר ויכול לא להופיע קלט אחרון, או שני האחרונים או כל שלושתם? ובכל אופן בהמשך לשאלה הזו בשימוש בvarargin אני יכול לשים אותו על כל המשתנים כלומר בתחילת המשתנים של הקלט ואיך אני שואל אם מחרוזת היא ריקה if a=?זה לא מתסדר לי

תודה

תרגיל 4 שאלה 2

האם חייבים ליצור את הסרט בעזרת הפקודה: movie2avi? האם מותר להסתפק פשוט ב-getframe?

מה כתוב בשאלה? יש לעשות בהתאם להנחיות. --Grisha 17:36, 30 באפריל 2012 (IDT)
"את הסרטון יש לבצע כפי שנלמד בהרצאה (getframe,movie2avi וכו')" - זה מחייב movie2avi?

תרגיל 5 שאלה 1

מה הכוונה ביש לוודא האם הבסיס אורתונורמלי? כלומר, מה לעשות אם הבסיס שמתקבל הוא לא אורתונורמלי? [למרות שזה לא אמור לקרות מבחינת האלגורתים]

למעשה זה אומר שיש לוודא שתכנתתם נכון את האלגוריתם. אם וקטורים שקיבלתם אכן אורתוגונליים מכפלה סקלרית של כל זוג וקטורים אמורה לתת 0. כמו כן, יש לוודא שקיבלתם בסיס לאותו מרחב וקטורי שממנו התחלקתם. כלומר, שהוקטורים המקוריים והוקטורים האורתוגונליים פורסים את אותו המרחב. --Grisha 14:54, 2 במאי 2012 (IDT)
אני הבנתי את זה, אבל לא איך אני אמור לבטא את זה מעשית. אני אמור לבדוק את העניין בכל ריצה? ואם כן לעשות את זה כתנאי ממש או מה? או שעבור איזה 100 הרצות לבדוק את זה בשביל עצמי? [לא שזה כזה ביג דיל, מכפילים שתי מטריצות וזהו פחות או יותר].
לא בדיוק הבנתי את ההסבר שלך עם הרצות. אחרי שפונקציה שמצבעת תהליך גראם-שמידט סיימה לעבוד עליך לבדוק שני דברים:
א). האם פלט של הפונקציה אכן וקטורים אורתוגונאליים.
ב). האם וקטורים פורסים את אותו מרחב וקטורי כמו וקטורים שהיו קלט של הפונקציה.
כל הבדיקות האלה יש לעשות לא תוך כדי הפונקציה אלא לאחר סיומה. --Grisha 19:41, 2 במאי 2012 (IDT)

תרגיל 5 שאלה 2

האם עלי להניח כי הנקודות של המצולע הקמות נתונות בסדר עם כיוון השעון?

כמובן שאפשר לקחת נקודה כלשהי בתוך המצולע [ובפרט נקודה כלשהי מהנקודות הנתונות] ואז לסדר את הנקודות לפי השיפוע של הקו המחבר את את הנקודה שבחרנו לנקודות שלנו (O(n logn. אבל קשה לי להאמין שזו הכוונה.

אפשר להניח שנקודות ניתנו לפי סדר החיבור. הסדר יכול להיות גם לפי וגם נגד כיוון השעון. אשמח אם תסביר למה זה יכול להשפיע על התוצאה. --Grisha 23:47, 2 במאי 2012 (IDT)

כן, זה לא משנה אם זה עם כיוון השעון או נגד כיוון השעון. פשוט נראה לי מאוד נוח להשתמש באלגוריתם שכל פעם מסתכל על שלוש נק' סמוכות, מחשב את שטח המשולש, ומוריד את הנק' האמצעית (סה"כ (O(n). בשביל לעשות את זה שלוש הנק' צריכות להיות סמוכות.

בלי קשר, אני משער של matlab אני גם צריך לתת את הנק' עם\נגד כיוון השעון כדי שהוא יצייר לי באמת את מה שאני רוצה.

הנקודות סמוכות. הכיוון אינו משנה. אלגוריתם שלך נראה לי מסובך יחסית. אפשר למצוא משהו פשוט יותר. --Grisha 12:58, 3 במאי 2012 (IDT)

אין יותר פשוט מזה - סתם לסכום n משולשים בשביל לקבל את השטח הכולל.

אז כנראה לא הבנתי נכון את האלגוריתם שהצעת. --Grisha 23:39, 3 במאי 2012 (IDT)

מה השגיאה הזו אומרת?

??? Undefined function or method 'targil' for input arguments of type 'char'. היא כל הזמן מופיעה לי ואין לי מושג למה,כל פעם שאני פותח script ונותן לו שם

לא בטוח, אבל נדמה לי שאתה מנסה להפעיל פונקציה שכתבת ומאטלב לא יודע איפה לחפש אותה. צריך לעבור לתיקיה איפה שנמצאת הפונקציה. --Grisha 23:44, 2 במאי 2012 (IDT)

אני עברתי על כל שמות הפונקציה שרשמתי ואין להם את השם הזה השגיאה קורה כאשר אני פותח script ומנסה להריץ אותו,בשביל להריץ MATLAB מבקש ממני שם לקובץ וכשאני נותן שם (לא חשוב איזה שם!) הוא רושם לי את השגיאה הזו ולא מריץ לי את הScript

תשלח לי את הסקריפט לאימייל. --Grisha 08:57, 3 במאי 2012 (IDT)

אין לי את האימייל אבל אני אמצא אותו וחוץ מזה שאלה אחרת, איך עוצרים את MATLAB באמצע הרצה?

תלחץ על החתימה שלי ותמצא. עוצרים על ידי Ctrl-C. --Grisha 12:41, 3 במאי 2012 (IDT)

תרגיל 5 שאלה 2

אפשר הסבר קצת על מה צריך לעשות?? אני לא מבין את סדר קליטת המשתנים ומה Scale x וscale y עושים, איך הקאורדינטות נראות? ערך x ובשורה מתחתיו ערך y ?

יש לחשב שטח מצולע. לאחר מכך יש לסובב את המצולע בזווית ang ולמתוך/לכווץ אותה בהתאם לפרמטרים scale_x, scale_y (כאן x ו- y הם צירים של מערכת צירים קרטזית דו-מימדית).
סדר קליטת הפרמטרים כמו שמתואר בשאלה: מטריצה, זוית, שני פרמטרים של מתיחה/כיווץ. האמת שהסדר אינו חשוב, אפשר לשנות את הסדר כפי שזה נוח לך - העיקר שהתוכנה תעבוד. --Grisha 12:55, 3 במאי 2012 (IDT)

מה הכוונה בלמתוח/לכווץ???? ובמטריצה השורה הראשונה הם ערכי x והשורה השנייה הם ערכי Y? והאם אפשר להשתמש בפונקציה polyarea?

אם אני לוקח קפיץ ומותח אותו משני הצדדים אז הוא מתארך. אם להיפך, אני לוחת עליו משני צדדים אז הוא מתכווץ. בדיוק לזה אנו מתכוונים בשאלה.
אפשר להחחיט לבד איזו שורה זה x ואיזו y. אנחנו לא הגדרנו ולכן זאת החלטה שלכם.
לא, אסור להשתמש ב- polyarea. כתוב בשאלה - "יש להסביר את החישוב של השטח". הכוונה - יש למצוא פתרון מתמטי לחישוב השטח ולהעביר אותו ל- Matlab ולא להשתמש בקופסה שחורה שעושה את העבודה במקומכם. --Grisha 18:44, 3 במאי 2012 (IDT)

תרגיל 5 שאלה 3

הכוונה לשרטט לכל ערך עצמי גרף של הגודל שלו ביחס לn או משהו אחר? וחוץ מזה,הריצה של n היא מ2 עד 200 נכון?(אין משמעות למטריצה מגודל 0)

מה זה סיבוכיות?

?????????

סיבוכיות הזמן של בעיה נתונה היא מספר הצעדים הנדרשים לפתרון שלה כפונקציה של גודל הקלט.
כך לדוגמא, סיבוכיות של merge sort הוא [math]\displaystyle{ O(n \cdot log(n)) }[/math], כאשר n הוא גודל של וקטור הלא ממוין. --Grisha 12:46, 3 במאי 2012 (IDT)

אלגוריתמים רקורסיביים

בMatlab יש הגבלה, שהיא די חכמה לטעמי, של מספר איטרציות של פונקציה רקורסיבית.

נניח שאני מחשב את השטח של המצולע באופן רקורסיבי (בשאלה 2), אפשר להתעלם ממנה?

קודם כל אפשר לקבוע את עומק הרקורסיה ידנית: set(0, 'RecursionLimit', 1000).
מצד שני, כל תוכנה רקורסיבית ניתנת לכתיבה כתוכנה לא רקורסיבית. רקורסיה ב- Matlab זה דבר שגורם ל"בזבוז" רציני של זכרון וזמן הרצה (תחשוב כמה workspaces אתה צריך לשמור בזכרון).
ודבר שלישי ואחרון, אין צורך ברקורסיה כדי לחשב את שטח המצולע הקמור. זה לא אמור לקחת יותר מ- O(n) צעדים ו- 0 זכרון נוסף. --Grisha 19:26, 3 במאי 2012 (IDT)

תרגיל 5 שאלה 1

בקשר לתהליך גרם-שמידט מוסבר שצריך לחשב את הווקטור ei ,vi>ei> (הווקטור שמתקבל מהכפלת ei בסקלר שהוא המכפלה הפנימית שלו ושל vi) לא הבנתי את הפעולה המתמטית שעשו כאן האם הכוונה לכפל וקטורי אבל אז הוא לא מוגדר?

לא הבנתי לגבי מכפלה וקטורית. יש כאן מכפלה פנימית של שני וקטורים כפול וקטור נוסף. --Grisha 13:44, 4 במאי 2012 (IDT)
מדובר על הפעולה שהיא הסכום כש-i רץ על האינדקסים של הוקטור של v(i)*e(i).
כלומר לדוגמא אם i=2 אז: v(1)*e(1)+v(2)*e(2).
i זה אינדקס של איבר בתוך הוקטור ולא המספר של הוקטור בבסיס.
לא הבנתי. מה שאתה כותב זאת לא הגדרה של מכפלה פנימית. --Grisha 14:19, 4 במאי 2012 (IDT)

מטלב בלתי נסבל

בתרגיל 1, [math]\displaystyle{ dot(N(:,2),N(:,2)) }[/math]


[math]\displaystyle{ dot(N(:,2),N(:,2)) \not=1 }[/math]

השורה הראשונה יוצאת 1.000, אבל השורה השנייה היא 1!

למה? איך להימנע מזה?

לא הבנתי ממה אתה רוצה להימנע ומה בדיוק הבעיה. תשלח לי את הקוד או תיאור יותר מפורט של המצב ואשתדל לעזור. --Grisha 16:57, 4 במאי 2012 (IDT)

תרגיל 5 שאלה 2

האם מותר להשתמש בפונקציה פנימית של מטלאב על מנת לחשב את שטח המצולע או שצריך לכתוב בעצמנו אלגוריתם שמחשב את שטח המצולע?