7 האצרהu.math.biu.ac.il/~michelm2/lecture 7.pdf · 7 האצרה בשחמ ישומיש...

24
הרצאה7 שימושי מחשב ד" ר מיכאל מיכאלי[email protected] 88-151 שימושי מחשב

Upload: others

Post on 11-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

7הרצאה

שימושי מחשב

ר מיכאל מיכאלי"ד

[email protected]

שימושי מחשב 88-151

Page 2: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 2שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

ראינו אלגוריתמים איטרטיביים למציאת שורשים של משוואה לא

:ליניארית

שיטת חציה

שיטת ניוטון רפסון

ועוד...

ב- Matlab קיימות פקודות מוכנות למציאת השורשים:

x = fzero(@func,x0) - התחלה' חיפוש שורש ליד נק.

x = fzero(@func,[a b]) - בתחום נתוןחיפוש שורש.

פקודתfzero ממומשת באמצעות אלגוריתם ברנט(Brent.)

2שקף

מציאת שורשים

Page 3: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 3שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 3שקף

דוגמאות

>> x1=fzero('x*exp(-x)-0.2',0.7)

x1 =

0.2592

>> F=@(x)x*exp(-x)-0.2

F =

@(x)x*exp(-x)-0.2

>> fzero(F,2.8)

ans =

2.5426

ניתן להשתמש בטכניקה הזו : הערה

.גם עבור משוואות שלא שוות לאפס

Page 4: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 4שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 4שקף

מציאת פתרון של מערכת המשוואות

function u = g( x )

u(1)=x(1)^2+x(2);

u(2)=x(1)+x(2)^3+1;

x = fsolve(function,x0)

ניחוש התחלתי פתרון

>> fsolve(@g,[1 1])

ans =

-0.7781 -0.6054

>> fsolve('g',[1 1])

ans =

-0.7781 -0.6054

Page 5: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 5שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 5שקף

מציאת מינימום של פונקציהx = fminbnd(function,x1,x2)

[x fval]=fminbnd(function,x1,x2)

מינימום אינטרוול

' ערך הפונקציה בנק

המינימום

>> [x fval]=fminbnd('x^3-12*x^2+40.25*x-36.5',3,8)

x =

5.6073

fval =

-11.8043

Page 6: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 6שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 6שקף

מציאת מינימום של פונקציהx = fminsearch(function,x0)

ניחוש התחלתי מינימום

>> [x fval]=fminsearch('x^3-12*x^2+40.25*x-36.5',3)

x =

5.6073

fval =

-11.8043

Page 7: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 7שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 7שקף

מציאת מינימום של פונקציה

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-1

0

1

2

3

4

5

6

7

8

>> f=@(x)x^4-2*x^2

f =

@(x)x^4-2*x^2

>> [x fval]=fminsearch(f,0)

x =

1.0000

fval =

-1

>> [x fval]=fminsearch(f,-2)

x =

-1.0000

fval =

-1

Page 8: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 8שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

פולינום הינה פונקציה מהצורה הבאה:

דוגמאות:

8שקף

עבודה עם פולינומים

5פולינום ממעלה

2פולינום ממעלה

1פולינום ממעלה

Page 9: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 9שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 9שקף

עבודה עם פולינומים

Page 10: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 10שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

ערך הפולינום יכול להיות מחושב באמצעות הפקודהpolyval.

הערה :x במקרה זה תוצאה . יכול להיות גם וקטור או מטריצה

".איבראיבר "תחושב

10שקף

חישוב ערך הפולינום

polyval(p,x)

בה מחושב ערך ' נק

הפולינום

וקטור עם מקדמי

הפולינום

Page 11: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 11שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

נחשב את ערך הפולינום הבא בנק: 1דוגמא 'x=9.

11שקף

דוגמאות

>> p = [1 -12.1 40.59 -17.015 -71.95 35.88];

>> polyval(p,9)

ans =

7.2611e+003

Page 12: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 12שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

הצגה גרפית – 2דוגמא.

.נציג את הפולינום בצורה גרפית

ניצור וקטורx=[-1.5,6.7]

נחשב את ערך הפולינום ב-x.

נשרטט את גרף הפונקציה.

12שקף

דוגמאות

-2 -1 0 1 2 3 4 5 6 7-200

-150

-100

-50

0

50

100

150

>> x=-1.5:0.1:6.7;

>> y=polyval(p,x);

>> plot(x,y)

Page 13: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 13שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

שעבורו הפולינום מתאפסערך הוא של פולינום ( או אפס)שורש .

הפקודה המתאימה ב-Matlab היאroots.

13שקף

שורשי הפולינום

r=roots(p)

וקטור עם מקדמי

הפולינום

וקטור עם שורשי

הפולינום

>> p= [1 -12.1 40.59 -17.015 -71.95 35.88];

>> r=roots(p)

r =

6.5000

4.0000

2.3000

-1.2000

0.5000

>> roots([4 10 -8])

ans =

-3.1375

0.6375

Page 14: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 14שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

ניתן לחשב את מקדמי הפולינום , כששורשי הפולינום ידועים .polyבאמצעות הפקודה

14שקף

חישוב מקדמי הפולינום מהשורשים שלו

p=poly(r)

עם שורשי וקטור

הפולינום

וקטור עם מקדמי

הפולינום

>> r=[6.5 4 2.3 -1.2 0.5];

>> p=poly(r)

p =

1.0000 -12.1000 40.5900 -17.0150 -71.9500 35.8800

Page 15: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 15שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

ניתן לבצע פעולות חשבוניות על פולינומים:

חיסור/חיבור

חילוק/כפל

דוגמא לחיבור:

15שקף

פעולות חשבוניות

p1=[3 15 0 -10 -3 15 -40]; p2=[3 0 -2 -6];

>> p=p1+[0 0 0 p2]

p =

3 15 0 -7 -3 13 -46

Page 16: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 16שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

כפל מחושב באמצעות הפקודהc = conv(a,b):

16שקף

פעולות חשבוניות

p1=[3 15 0 -10 -3 15 -40]; p2=[3 0 -2 -6];

>> pm=conv(p1,p2)

pm =

9 45 -6 -78 -99 65 -54 -12 -10 240

Page 17: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 17שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

חילוק הפולינומים- deconv:

דוגמא:

17שקף

פעולות חשבון

[q,r]= deconv(u,v)

מקדמי עם וקטור

הפולינום במכנה וקטור עם מקדמי

הפולינום בחלק השלם

וקטור עם מקדמי

הפולינום בשארית

מקדמי עם וקטור

הפולינום במונה

>> u=[2 9 7 -6]

u =

2 9 7 -6

>> v=[1 3]

v =

1 3

>> [a b]=deconv(u,v)

a =

2 3 -2

b =

0 0 0 0

Page 18: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 18שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

חישוב הנגזרות מתבצע באמצעות פקודתpolyder.

18שקף

חישוב נגזרות -פולינום

k = polyder(p)

k = polyder(a,b)

[n d] = polyder(u,v)

נגזרת של פולינום בודד

נגזרת של מכפלת הפולינום

נגזרת של מנת הפולינום

Page 19: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 19שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 19שקף

דוגמאות

>> f1=[3 -2 4];

>> f2=[1 0 5];

>> k=polyder(f1)

k =

6 -2

>> d=polyder(f1,f2)

d =

12 -6 38 -10

>> [n d]=polyder(f1,f2)

n =

2 22 -10

d =

1 0 10 0 25

Page 20: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 20שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1

ניתן לבצע קרוב עקומות באמצעות פולינומים ללא שימוש בcftool.

20שקף

קרוב עקומות באמצעות פולינומים

p = polyfit(x,y,n)

נקודות בדידות

תוצאת חישוב דרגת הפולינום

Page 21: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 21שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 21שקף

דוגמא

x=[0.9 1.5 3 4 6 8 9.5];

y=[0.9 1.5 2.5 5.1 4.5 4.9 6.3];

p=polyfit(x,y,3)

xp=0.9:0.1:9.5;

yp=polyval(p,xp);

plot(x,y,'o',xp,yp)

xlabel('x'); ylabel('y')

0 1 2 3 4 5 6 7 8 9 100

1

2

3

4

5

6

7

x

y

p =

0.0220 -0.4005 2.6138 -1.4158

Page 22: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 22שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 22שקף

קרוב עקומות באמצעות פונקציות נוספות

Page 23: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 23שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 23שקף

דוגמא

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

3

4

5

6

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

3

4

5

6

t=0:0.5:5;

w=[6 4.83 3.7 3.15 2.41 1.83 1.49 1.21 0.96 0.73 0.64];

figure(1), plot(t,w,'o')

p=polyfit(t,log(w),1);

m=p(1)

b=exp(p(2))

tm=0:0.1:5;

wm=b*exp(m*tm);

figure(2), plot(t,w,'o',tm,wm)

m =

-0.4580

b =

5.9889

Page 24: 7 האצרהu.math.biu.ac.il/~michelm2/Lecture 7.pdf · 7 האצרה בשחמ ישומיש ילאכימ לאכימ ר"ד michael.michaeli@biu.ac.il 88-151 בשחמ ישומיש

ב 24שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 24שקף

מציאת קרוב כללי

0 0.5 1 1.5 2 2.5 3 3.5 40

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

Data

Fit

syms tt % Other fitting type

FitOpt = fitoptions( 'Method','NonlinearLeastSquares',...

'Lower',[0,0,0],...

'Upper',[Inf,Inf,Inf],...

'Startpoint',[1 1 1]);

F = fittype('a*(x+b*c*(exp(-x/b)-1))','options',FitOpt);

F_fit = fit(data(:,1),data(:,2),F);

F_fit.a, F_fit.b, F_fit.c

Fit_funct = inline(F(F_fit.a,F_fit.b,F_fit.c,tt));

plot(data(:,1),data(:,2),'o',data(:,1),Fit_funct(data(:,1)),'red','Linewidth',2);

legend('Data','Fit')

1b

x

ecbxaxf