אנליזה נומרית תרגול :1 MATLAB סימולציה, MATLAB היא סביבה אינטראקטיבית לחישוב מדעי והנדסי, ויזואליזציה ותכנון אלגוריתמים.

מסמכים קשורים
PowerPoint Presentation

סדנת תכנות ב C/C++

מהוא לתכנות ב- JAVA מעבדה 3

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב

PowerPoint Presentation

ex1-bash

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

שאלהIgal : מערכים דו מימדיים רקורסיה:

תרגול 1

מבוא למדעי המחשב

תכנות מונחה עצמים א' – תש"ע

Slide 1

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מבוא לתכנות ב- JAVA תרגול 7

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Slide 1

Microsoft Word - Ass1Bgu2019b_java docx

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

מבוא למדעי המחשב

Microsoft PowerPoint - rec1.ppt

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

Slide 1

PowerPoint Presentation

מבוא לתכנות ב- JAVA תרגול 11

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

PowerPoint Presentation

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

PowerPoint Presentation

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

PRESENTATION NAME

מצגת של PowerPoint

Microsoft Word B

הגשה תוך שבוע בשעת התרגול

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

מקביליות

תורת הקומפילציה

מבוא למדעי המחשב - חובלים

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

Microsoft PowerPoint - rec3.ppt

תרגיל בית מספר 1#

Tutorial 11

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

ייבוא וייצוא של קבצי אקסל וטקסט

מבוא למדעי המחשב

Slide 1

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

שאלה 2. תכנות ב - CShell

תוכן העניינים

מבוא לאנליזה נומרית na191 Assignment 2 solution - Finding Roots of Nonlinear Equations y cos(x) שאלה 1 היכן נחתכים הגרפים של? y x 3 1 ושל ממש פתרונות

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

Slide 1

Homework Dry 3

Slide 1

מבוא למדעי המחשב

מקביליות

Microsoft Word - c_SimA_MoedB2005.doc

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

מבוא למדעי המחשב - חובלים

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

Slide 1

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 313, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן שאלה מספר

Slide 1

Microsoft PowerPoint - lec2.ppt

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

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

PowerPoint Presentation

מטלב לפיסיקאים שיעור 1

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

שקופית 1

שיעור 1

הגשה תוך שבוע בשעת התרגול

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

Microsoft PowerPoint - lec10.ppt

Python 2.7 in Hebrew

מתכונת עיצוב 3013

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

Matlab Tutorial

PowerPoint Presentation

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

מועד: א בחינה סופית במתמטיקה דיסקרטית משך הבחינה: 2 1 שעות מרצה: פרופ' תאופיק מנסור תאריך: סמסטר: א תשע"ח m 2 הוראות לנבחן: )1( הבחינה מו

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

Microsoft PowerPoint - Lecture1

תמליל:

אנליזה נומרית 1 701132 תרגול :1 MATLAB סימולציה, MATLAB היא סביבה אינטראקטיבית לחישוב מדעי והנדסי, ויזואליזציה ותכנון אלגוריתמים.

החלונות העיקריים בתוכנה: פקודה כל interpreter :Command window (console) מטלב היא סביבת מתקמפלת ומתבצעת "במקום". בחלון זה ניתן לרשום את הפקודות. :Current Folder ספרית העבודה הנוכחית. באופן ראשוני, כל הקבצים שבהם משתמשים צריכים להיות בספריית העבודה )בהמשך ניתן להגדיר גם ספריות נוספות ע"י.)addpath :Command history היסטוריה של כל הפקודות. :Workspace המקום בו מופיעה רשימת המשתנים הנוכחיים. :Editor החלון בו עורכים קבצים )לא מופיע בתמונה(. קבלת עזרה: קבלת עזרה במטלב נעשית ע"י הפקודה, help func_name או.doc func_name קיימת עזרה גם באינטרנט ע"י חיפוש שם הפקודה.

מבני נתונים: לא מגדירים טיפוסים במטלב. הטיפוסים נקבעים ע"י התוכנה בזמן ריצה. מבנה הנתונים העיקרי במטלב הוא מטריצה. לדוגמא, משתנה מספרי "רגיל" הוא מטריצה.1X1 דוגמאות: וקטור שורה: >> a=[0.2,7,11,5] a = 0.2000 7.0000 11.0000 5.0000 >> b=[0.2;7;11;5] וקטור עמודה: b = 0.2000 7.0000 11.0000 5.0000

מטריצה 0X0: ה"חוק": רווח או פסיק למעבר עמודה. נקודה-פסיק למעבר שורה. במקרה של הגדרה לא חוקית בביצוע השורה תהיה הודעת שגיאה >> A=[3 4 5; 4 7 9; 2 6 7] A = 3 4 5 4 7 9 2 6 7 >> A=[3 4 5; 4 7 9; 2 6]??? Error using ==> vertcat CAT arguments dimensions are not consistent.

>> 1:5 אופרטור :"a:b:c" ניתן להגדיר וקטורים של סדרות באופן הבא: )מאוד שימושי בעבודה עם אינדקסים, ובדוגמא האחרונה - ליצור "רשתות" לפונקציות( >> 1:3:5 1 2 3 4 5 1 4 >> 1:-3:-15 1-2 -5-8 -11-14 >> x = 0:0.25:1 x = 0 0.2500 0.5000 0.7500 1.0000

>> A=[3 4 5; 4 7 9; 2 6 7] הוצאת נתונים מתוך מטריצות: אינדקסים במטלב מתחילים מ- 1 ולא מ- 0 A = 3 4 5 4 7 9 2 6 7 >> A(1:2,2:3) 4 5 7 9 >> A(1,[1,3]) 3 5

>> A' שחלוף :)transpose( 3 4 2 4 7 6 5 9 7 >> s = 'Hello World' מערך של :)string( chars

>> A=ones(3,3) פעולות על מבני נתונים: מטריצות אלמנטריות )משמשות גם להקצאת זיכרון(:.ones, eye, zeros פונקציות נוספות: randn,.rand, A = 1 1 1 1 1 1 1 1 1 >> B = eye(3) B = 1 0 0 0 1 0 0 0 1 >> C = zeros(3,5) C = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

>> A+B פעולות חיבור/חיסור: מתבצעות "איבר-איבר" 2 1 1 1 2 1 1 1 2

פעולות כפל/חילוק/חזקה: אילו הם פעולות "מטריציות" לפי אלגברה ליניארית גדלים צריכים להתאים לפי אלגברה ליניארית. >> A*B % B is identity, therefore answer is A. 1 1 1 1 1 1 1 1 1 >> A^2 % same as A*A 3 3 3 3 3 3 3 3 3 >> A\B % same as inv(a)*b see later.

פעולות כפל/חילוק/חזקה "איבר-איבר" גדלים צריכים להיות זהים. >> A.*B % B is identity, A is ones. Therefore answer is B. 1 0 0 0 1 0 0 0 1 >> x = 0:0.25:1 חישוב פונקציות על מטריצות: x = 0 0.2500 0.5000 0.7500 1.0000 >> f = sin(x) f = 0 0.2474 0.4794 0.6816 0.8415 >> f = sin(x).*cos(x) f = 0 0.2397 0.4207 0.4987 0.4546

>> size(zeros(3,5)) פעולות שימושיות: :isempty, sum, mean, max, min, size 3 5 >> max([4,5,6]) 6 >> max([4,5,6 ; 7,8,9]) 7 8 9

A פתרון מערכת משוואות ליניאריות )אופרטור חילוק מטריצות( 3x 5y 44 3 5 x1 44 1 x A b 2x y 27 2 1 x 2 27 האופציה השנייה היא הטובה יותר: >> A=[3,-5 ; 2,1];b=[-44 ; 27]; x b במטלב ישנן 7 אופציות >> s = inv(a)*b % inverts A and multiply more expensive and not stable do not use. s = 7.0000 13.0000 >> s = A\b % just calculates the result faster, more stable s = 7 13

פונקציית find ותנאים לוגיים: >> x = [1.1,2.21, 3.2, 4.4,5.5, 6.6, 7.6,8.8]; x = 1.1 2.21 3.2 4.4 5.5 6.6 7.6 8.8 >> find(x>5) 6 7 8

% if sentence if i==1 statement; end % if-else if res(n,2) ~= 0 statement; else statement; end % if-elseif if (A > B) statement; elseif (A< B) statement; elseif ~A statement; else statement; end בקרת זרימה: משפטי תנאי:

% for loop for n=1:1:4 statement; end % while loop a = 4; fa=sin(a); b = 2; fb = sin(b); while a - b > 5 * eps x = (a+b)/2; fx = sin(x); if sign(fx) == sign(fa), a = x; fa=fx; break; else b = x; fb = fx; end end בקרת זרימה: לולאות:

הצגת פלט המספרים הצגת ספרות: במספר עצמו המספרים עצמם הם.double זה רק עניין של פורמט תצוגה. אין כל שינוי >> format short >> x=31.415926 x = 31.4159 >> format long >> x x = 31.415925999999999 >> format long e >> x x = 3.141592600000000e+001 >> format short e >> x x = 3.1416e+001

>> digits(2); >> vpa(pi) עבודה עם מספר ספרות דיוק 3.1 >> vpa(3.45678*1000) 3.5*10^3 >> vpa(3.45678*1000,4) 3457.0

עבודה עם ה- editor : בד כ לא נוח לעבוד בצורה אינטראקטיבית בלבד ל- session. session מאבדים את מה שקרה בין o קבצי ההפעלה של matlab הם עם סיומת "m.". o ניתן ליצור קובץ כזה לכתוב בו רשימת פקודות ולשמור אותו בשם מסוים. o כדי להפעיל קובץ הפקודות my_m_file.m פשוט כותבים ב Matlab את השם my_m_file וזה מריץ את הפקודות סדרתית בסביבה הגלובלית אם הקובץ ניגש לדוגמא למשתנה A שהיה קיים ב- workspace אז הוא ישנה אותו גלובאלית. o הרצת הפקודות קוראת באותו האופן כאילו הורצו "ידנית". ניתן להריץ ולשמור אוטומטית ע"י כפתור.run

קבצי פונקציות: הדרך הכי טבעית לעבוד. קובץ שבו כתובה פונקציה צריך להיות בעל שם זהה לשם הפונקציה הראשית שלו. הפונקציות מקבלות קלט וכל הפעולות הנעשות בהם הם בבלוק לוקאלי בלבד כמו ב- C. ערך המשתנים בסיום התכנית הוא הערך המוחזר ע"י הפונקציה. בקובץ :pyt.m function [c,d,e]= pyt(a,b) % returns the hyotensus (yeter) in a right angle % triangle according to Pythagoras theorem % c is the hyotensus % d and e are the two sharp angles c=sqrt(a.^2+b.^2); d=atan(b/a); e=pi/2-d; >> help pyt returns the hyotensus (yeter) in a right angle triangle according to Pythagoras theorem c is the hyotensus d and e are the two sharp angles ההערות מיד לאחר שורת ההכרזה ישמשו לצורך תיעוד העזרה:

אם מסיימים כל פונקציה ב-; return ניתן לכתוב באותו קובץ פונקציות עזר נוספות. הפונקציה הראשית היא הפונקציה הראשונה בעלת אותו השם כמו הקובץ עצמו: function [c,d,e]= pyt(a,b) % returns the hyotensus (yeter) in a right angle % triangle according to Pythagoras theorem % c is the hyotensus % d and e are the two sharp angles c=calclength(a,b); d=atan(b/a); e=pi/2-d; return; function L = calclength(a,b) L = sqrt(a.^2+b.^2); return; הפונקציה calclength שבדוגמא היא לוקאלית ולא "מוכרת" מחוץ לקובץ זה.

function [c,d,e]= pyt(a,b) norm = @norm2; c = calclength(a,b,norm); d = atan(b/a); e = pi/2-d; return; שימוש במצביעים לפונקציות )שימושי מאוד בקורס(: הפונקציה norm2 יכולה להיות גם פונקציה חיצונית. function L = calclength(a,b,norm_func) L = norm_func(a,b); return; function n = norm2(a,b) n = sqrt(a.^2+b.^2); return;

פקודות שימושיות: של :save/load ניתן לשמור את המשתנים הנוכחיים ולהעלות אותם. שימושי כאשר זמן ריצה תכניות ארוך מאוד. clc ניקוי של מסך ה- console. clear A שחרור זיכרון של המשתנה A. אם A "נדרס" הזיכרון משתחררת אוטומטית. clear all משחרר את כל המשתנים הקיימים ב- workspace. close all סוגר את כל החלונות הנוספים (figures) ראה ויזואליזציה. diary( diary_file ), diary off מקליט את כל הפלט לקובץ. s=sprintf( Mydata%d,I) זהה לאותה הפקודה ב- C.

>> disp('hello world') hello world >> disp(['the kid is ', num2str(30), ' years old']) The kid is 30 years old disp ממשק להדפסה לconsole. קיצורים שימושיים: ctrl+'r' השמה של שורות מסומנות להערה. ctrl+'t' החזרה מהערה. ctrl+'i' סידור של אינדנטציה של הקוד )טאבים(..)debug הרץ את מה שהסמן מסמן )שימושי במצב f9

y=sin(x).*cos(50*x) figure; x=0:0.01:5; y=sin(x).*cos(50*x); plot(x,y) title('example plot') xlabel('x') וויזואליזציה ציור גרפים/תמונות: figure הקצאה של חלון ציור. הפונקציה הכי שימושית לציור גרפים היא :plot % adds a title % adds a title to the x axis ylabel('y=sin(x).*cos(50*x)')% adds a title to the y axis 1 Example plot 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x

ציור כמה גרפים על אותה התמונה: figure; x=0:0.01:5; subplot(1,3,1); % plots a line of 3 plots. Now we plot the first. y=sin(x).*cos(50*x); plot(x,y,'-r') % red line title('example plot 1') xlabel('x') ylabel('y=sin(x).*cos(50*x)') subplot(1,3,2); % Now we plot the second. y=exp(x); plot(x,y,':k','linewidth',2); % thick line title('example plot 2') xlabel('x') ylabel('exp(x)') subplot(1,3,3); % Now we plot the third. y=log(x); plot(x,y,'-.b','linewidth',2); % title('example plot 3') xlabel('x') ylabel('ln(x)')

y=sin(x).*cos(50*x) exp(x) ln(x) 1 Example plot 1 150 Example plot 2 2 Example plot 3 1 0.5 100 0 0-1 -2-0.5 50-3 -4-1 0 1 2 3 4 5 x 0 0 1 2 3 4 5 x -5 0 1 2 3 4 5 x

ציור כמה גרפים "אחד על השני": figure; x = 0:0.01:1; y=exp(x); plot(x,y,':k','linewidth',2); % thick line hold on y=sin(x); plot(x,y,'-.r','linewidth',2); % hold off title('example multiple lines') xlabel('x') legend('exp(x)','sin(x)'); 3 2.5 Example multiple lines exp(x) sin(x) 2 1.5 1 0.5 0 0 0.2 0.4 0.6 0.8 1 x

שימוש בפונקציות C ממשק :mex )לקריאה עצמית לא מועבר בשיעור( * הערה: החלק הזה אינו שימושי בקורס, אך מאוד שימושי בהמשך. מטלב הוא בעצם מעטפת לפקודות,fortran C, ו- Java. לכן, פקודות build-in הם בעצם מעטפת לפקודות אחרות אשר ממומשות מאוד ביעילות. לעומת זאת שימוש בלולאות for הוא מאוד איטי כיוון שכל איטרציה מתקמפלת מחדש. עדכון איברים ידנית בתוך מערך או מטריצה גם כן מאוד איטיים. לכן, בהרבה מקרים, לצורך מהירות הקוד, נרצה להוציא פונקציה מסויימת "החוצה" לשפת C ששם נממש אותה באופן טבעי ויעיל. דוגמא: incarr היא פונקציה המקבלת מערך x ומוסיפה לו 1 לכל איבר.

הקובץ הבא הוא :incarrmex.c #include "mex.h" void mexfunction( int nlhs, mxarray *plhs[], int nrhs, const mxarray *prhs[]) { // plhs array of pointers to output variables // prhs - array of pointers to input variables int i,m,n = 0; double* In = mxgetpr(prhs[0]); // getting actual pointer for first input variable double* Out = 0; m = mxgetm(prhs[0]); // getting sizes n = mxgetn(prhs[0]); // getting sizes //Allocate memory and assign output pointer plhs[0] = mxcreatedoublematrix(n, m, mxreal); //mxreal is our data-type //Get a pointer to the data space in our newly allocated memory Out = mxgetpr(plhs[0]); for(i=0 ; i < m*n ; i++){ Out[i] = In[i]+1; } }

mex incarrmex.c function [y] = incarr(x) % mex example for y = x+1. y = incarrmex(x); end לצורך קומפילציה יש להשתמש ב: בפעם הראשונה מאטלב ידרוש לבחור קומפיילר ל- C. קובץ המטלב לצורך "מעטפת": הערה: ניתן "להתממשק" בצורה דומה גם עם אובייקטים ב- Java. מידע נמצא בתיעוד מאטלב.