7 האצרהu.math.biu.ac.il/~michelm2/lecture 7.pdf · 7 האצרה בשחמ ישומיש...
TRANSCRIPT
ב 2שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1
ראינו אלגוריתמים איטרטיביים למציאת שורשים של משוואה לא
:ליניארית
שיטת חציה
שיטת ניוטון רפסון
ועוד...
ב- Matlab קיימות פקודות מוכנות למציאת השורשים:
x = fzero(@func,x0) - התחלה' חיפוש שורש ליד נק.
x = fzero(@func,[a b]) - בתחום נתוןחיפוש שורש.
פקודתfzero ממומשת באמצעות אלגוריתם ברנט(Brent.)
2שקף
מציאת שורשים
ב 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
ניתן להשתמש בטכניקה הזו : הערה
.גם עבור משוואות שלא שוות לאפס
ב 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
ב 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
ב 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
ב 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
ב 8שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1
פולינום הינה פונקציה מהצורה הבאה:
דוגמאות:
8שקף
עבודה עם פולינומים
5פולינום ממעלה
2פולינום ממעלה
1פולינום ממעלה
ב 9שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 9שקף
עבודה עם פולינומים
ב 10שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1
ערך הפולינום יכול להיות מחושב באמצעות הפקודהpolyval.
הערה :x במקרה זה תוצאה . יכול להיות גם וקטור או מטריצה
".איבראיבר "תחושב
10שקף
חישוב ערך הפולינום
polyval(p,x)
בה מחושב ערך ' נק
הפולינום
וקטור עם מקדמי
הפולינום
ב 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
ב 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)
ב 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
ב 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
ב 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
ב 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
ב 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
ב 18שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1
חישוב הנגזרות מתבצע באמצעות פקודתpolyder.
18שקף
חישוב נגזרות -פולינום
k = polyder(p)
k = polyder(a,b)
[n d] = polyder(u,v)
נגזרת של פולינום בודד
נגזרת של מכפלת הפולינום
נגזרת של מנת הפולינום
ב 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
ב 20שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1
ניתן לבצע קרוב עקומות באמצעות פולינומים ללא שימוש בcftool.
20שקף
קרוב עקומות באמצעות פולינומים
p = polyfit(x,y,n)
נקודות בדידות
תוצאת חישוב דרגת הפולינום
ב 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
ב 22שקף ש ח מ י ש ו מ י 8 –ש 8 - 1 5 1 22שקף
קרוב עקומות באמצעות פונקציות נוספות
ב 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
ב 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