You are on page 1of 8

Chng 11: Ti u ha v ni suy

Tr v Mc lc cun sch

Cc s kin dng trong hm ODE


Thng th khi gi ode45, bn u phi ch ra cc thi im bt u v kt thc. Nhng trong nhiu trng hp, bn khng bit trc lc no vic m phng cn kt thc. Tht may l MATLAB cung cp mt c ch x l vn ny. iu khng hay l c ch ny hi lng cng mt cht. Sau y l cch hot ng: 1. Trc khi gi ode45 bn dng odeset to ra mt i tng c tn options cha cc gi tr quy nh cch hot ng ca ode45: 2. options = odeset('Events', @events); Trong trng hp ny, tn ca ty chn (option) l Events cn gi tr l mt chui hm. Khi ode45 hot ng, n s gi events sau mi bc thi gian. Bn c th gi hm ny bng bt c tn gi no, nhng ci tn events thng c chn theo thng l. 3. Hm m bn cung cp phi nhn vo cng cc bin nh hm tc nhn vo. Chng hn, sau y l mt hm s kin gn vi hm projectile t Mc [tnh ng bay]. 4. function [value,isterminal,direction] = events(t,X) 5. value = X(2); % Extract the current height. 6. isterminal = 1; % Stop the integration if height crosses zero. 7. direction = -1; % But only if the height is decreasing. 8. end
events tr li ba bin u ra: value quyt nh xem khi no mt s kin xy ra. Trong trng hp ny value nhn gi tr ca phn t th hai

thuc X, vn c hiu l chiu cao ca vt bay. Mt s kin (event) l mt thi im khi m gi tr chiu cao ni trn i qua 0.
direction quyt nh liu rng mt s kin c xy ra khi value ang tng (direction=1), gim

(direction=-1, hoc c hai direction=0.


isterminal quyt nh xem iu g cn thc hin khi s kin xy ra. Nu isterminal=1, s kin l terminal

v qu trnh m phng kt thc. Nuisterminal=0, qu trnh m phng vn tip tc, nhng ode45 thc hin thm mt s vic na m bo rng nghim trong vng ln cn ca s kin l ng, v mt trong cc gi tr tnh c phi ri ng vo lc xy ra s kin. 9. Khi gi ode45, bn chuyn options lm i s th t: 10. ode45(@projectile, [0,10], [0, 3, 40, 30], options); Phi sa events nh th no n dng chy khi chiu cao ca qu bng rt xung thp hn 3 m?

Ti u ha
Trong Bi tp [bng chy], bn c yu cu tnh gc ban u ti u sau khi bng b vt. Ti u l cch ni hoa m cho tt nht; ngha ca n li ty thuc vo bi ton c th. Vi bi ton Green Monstertm ra gc nh ti u cho mt c ht sn th ngha ca ti u khng phi l hin nhin. Rt d ngh rng chn gc m cho tm xa l ln nht (khong cch t ch vt n ch chm t). Nhng y ta cn c vt qua mt tng chn cao 12 m, v vy c l ta s cn gc vt sao cho tm xa l ln nht khi qu bng bay qua ngng 12 m.

Mc d nh ngha no trong s trn cng dng c cho nhng mc ch nht nh, nhng khng c nh ngha no hon ton ng. trng hp ny gc ti u l gc m cho chiu cao ln nht ti im m qu bng chm tng, vn cch ch vt 97 m. V vy bc u tin ca mi bi ton ti u l nh ngha xem ti u l g. Bc th hai l nh ngha khong gi tr m bn mun d tm. Trong trng hp ny, khong gi tr cho php l gia 0 (song song vi mt t) n 90 (thng ln tri). Ta trng i gc ti u gn vi 45 , nhng khng chc rng n chch vi 45 l bao nhiu. an ton, ta c th bt u tm trong khong rng nht c th. Cch n gin nht tm gi tr ti u l chy chng trnh m phng vi mt khong rng cc gi tr ri la ra gi tr cho kt qu tt nht. Cch ny khng hiu qu lm, c bit trong bi ny khi m vic tnh tm bay l rt tn cng. Mt thut ton kh hn l cch Tm kim theo lt ct vng.

Tm kim theo lt ct vng


trnh by cch tm kim theo lt ct vng, ti s bt u vi mt dng n gin hn m ti t tn l tm kim theo lt ct bc. tng c bn cng ging nh cc phng php tm nghim m ta thy Mc [tm nghim]. Trong bi ton tm nghim, ta c mt bc tranh nh sau:

Cho trc mt hm f c th lng gi c, v ta cn tm mt nghim ca f; ngha l mt gi tr ca x sao cho f(x)=0. Nu ta c th tm c mt gi tr, x1, sao chof(x1) dng v mt gi tr khc, x2, sao cho f(x2) m, th phi c mt nghim trong khong gia chng (min l f lin tc). Lc ny ta ni x1 v x2 bao ly nghim. Thut ton tip din vi vic chn mt gi tr th ba, x3, gia x1 v x2 ri tnh y=f(x3). Nu y dng th ta c th lp ra mt cp mi, (x3,x2), bao ly nghim. Nuy m th cp (x1,x3) bao ly nghim. Bng cch no i na th khong bao cng hp li v c on ca ta v v tr nghim tr nn chnh xc hn. l vic tm nghim. Cn cch Tm kim theo lt ct vng cng tng t, nhng ta phi khi u vi ba gi tr, v bc tranh s c dng sau:

Biu ny cho thy rng ta tnh f ti ba v tr, x1, x2 v x3, ri bit c x2 cho gi tr ln nht. Nu f lin tc, th c t nht l mt cc tr a phng gia x1 vx3, v vy ta s ni rng b ba (x1,x2,x3) bao ly mt cc i. Bc tip theo l chn im th t, x4, ri tnh f(x4). C hai kt qu c th xy ra, ty theo l f(x4) c ln hn f(x2) hay khng:

Nu f(x4) nh hn f(x2) (hnh bn tri), th b ba mi (x1,x2,x4) bao ly cc i. Nu f(x4) ln hn f(x2) (hnh bn phi), th (x2,x4,x3) bao ly cc i. D vi cch no i na th khong bao cng thu hp li v c tnh gi tr cc i ca x cng tt hn. Phng php ny p dng c cho hu ht cc gi tr ca x4, nhng c cch chn nht nh s c hiu qu hn. y, ti chn cch chia i khong ln hn trong s hai khong (x1,x2) v (x2,x3). Sau y l on chng trnh trong MATLAB:
function x1 = x2 = x3 = res = optimize(V) V(1); V(2); V(3);

fx1 = height_func(x1); fx2 = height_func(x2); fx3 = height_func(x3); for i=1:50 if x3-x2 > x2-x1 x4 = (x2+x3) / 2; fx4 = height_func(x4); if fx4 > fx2 x1 = x2; fx1 = fx2; x2 = x4; fx2 = fx4; else x3 = x4; fx3 = fx4; end else x4 = (x1+x2) / 2; fx4 = height_func(x4); if fx4 > fx2 x3 = x2; fx3 = fx2; x2 = x4; fx2 = fx4; else x1 = x4; fx1 = fx4; end end if abs(x3-x1) < 1e-2 break end end res = [x1 x2 x3]; end

Bin u vo l mt vc-t c cha ba gi tr v bao ly mt cc i; trong trng hp ny l cc gc tnh theo . optimize bt u bng vic c lngheight_func cho ba gi tr ny. Ta gi s rng height_func tr li kt qu m ta cn ti u ha; trong bi ton Green Monster chnh l chiu cao ca qu bng khi chm tng. Mi lt lp qua vng for hm s chn mt gi tr ca x4, tnh height_func, ri cp nht b ba x1, x2 v x3 ty theo kt qu thu c. Sau khi cp nht, n tnh di khong bao nghim, x3-x1, ri kim tra xem n ngn cha. Nu c ri, n s thot khi vng lp v tr li kt qu l b ba hin thi. Trong trng hp d nht, vng lp s c thc hin 50 ln. Ti gi thut ton ny l Tm kim theo lt ct bc v n tt gn bng cch Tm kim theo lt ct vng. Hy c Wikipedia v cch Tm kim theo lt ct vng (http://en.wikipedia.org/wiki/Golden_section_search) ri sa li m lnh trn tnh theo cch mi ny. Bn c th vit cc hm nhn vo chui ca hm khc, nh ta thy fzero v ode45. Chng hn, handle_func nhn vo mt chui hm tn l func ri gi n, truyn vo i s l pi.
function res = handle_func(func) func(pi) end

Bn c th gi handle_func t Command Window v truyn vo cc chui hm khc nhau lm i s:


>> handle_func(@sin) ans = 0 >> handle_func(@cos) ans = -1

Hy sa li optimize cho n nhn vo mt chui hm ri ly hm ny lm mc tiu ti u ha. Hm fminsearch ca MATLAB nhn vo mt chui hm v tm cc tiu a phng ca hm ny. Hy c li hng dn cch dng fminsearch ri dng n tm gc nh ti u ca qu bng chy ng vi mt vn tc cho trc.

nh x ri rc v lin tc
Khi bn gii PVT theo cch gii tch, kt qa thu c l mt hm, v bn c th coi rng l mt php nh x lin tc. Khi bn dng mt hm gii PVT, bn thu c hai vc-t (hoc mt vc-t v mt ma trn), m bn c th coi l mt php nh x ri rc. Chng hn, Mc [ode45], ta dng hm tc sau c tnh s con chut nh mt hm theo thi gian:
function res = rats(t, y) a = 0.01; omega = 2 * pi / 365; res = a * y * (1 + sin(omega * t)); end

Kt qu thu c t ode45 l hai vc-t:


>> [T, Y] = ode45(@rats, [0, 365], 2); T cha cc gi tr thi gian ti cn c tnh s chut bng ode45; Y cha cc gi tr c tnh.

By gi ta hnh dung nh cn bit s chut vo ngy th 180 ca nm. Ta c th tm gi tr 180 trong T:


>> find(T==180) ans = Empty matrix: 0-by-1

Nhng khng c bo m g rng s tn ti mt gi tr nh vy trong T. Ta c th tm ra ch s m ti gi tr ca T ct qua 180:


>> I = find(T>180); I(1)

ans = 23 I s nhn c tt c nhng ch s ng vi cc phn t ca T m ln hn 180, v vy I(1) chnh l ch s u tin.

Sau ta tm gi tr tng ng ca Y:
>> [T(23), Y(23)] ans = 184.3451 40.3742

Cch ny cho ta mt c tnh th s v s chut vo ngy 180. Nu cn tnh k hn, ta c th tm thm gi tr ngay trc ngy 180:
>> [T(22), Y(22)] ans = 175.2201 36.6973

Nh vy s chut vo ngy 180 s nm gia 36.6973 v 40.3742. Nhng c th con s no trong khong ny s l c lng chnh xc nht? Mt cch lm n gin l chn ngay gi tr no tng ng thi gian gn vi 180 hn. Trong bi ny, cch lm nh vy khng hay v gi tr thi gian m ta cn xc nh li nm ngay gia.

Ni suy
Mt cch lm hay hn l vch mt ng thng ni hai im bao ngy 180 v dng ng thng c tnh gi tr gia chng. Qu trnh ny c gi l ni suy tuyn tnh, v MATLAB cung cp mt hm c tn interp1 m nhim vic ny:
>> pop = interp1(T, Y, 180) pop = 38.6233

Hai i s u dng ch mt php nh x ri rc t cc gi tr c trong T n cc gi tr trong Y. i s th ba l gi tr thi gian m ta cn ni suy. Kt qu thu c ging nh ta trng i, chng chnh gia hai gi tr u khong bao.
interp1 cng c th nhn mt i s th t ch dng ni suy m bn mun. Mc nh l 'linear', vn thc hin

ni suy tuyn tnh. Cc la chn khc bao gm'spline' vn dng mt ng cong spline ln qua bn im, vi hai im mi pha, v 'cubic', vn dng php ni suy Hermit bc ba cho tng on.
>> pop = interp1(T, Y, 180, 'spline') pop = 38.6486 >> pop = interp1(T, Y, 180, 'cubic') pop = 38.6491

trng hp ny ta trng i cc kt qu thu c t ni suy spline v bc ba tt hn so vi tuyn tnh, v chng dng nhiu im s liu hn, v ta bit rng hm khng phi tuyn tnh. Nhng chng c l do g ta c th trng i rng hm spline cho kt qu tt hn hm bc ba, hoc ngc li. Tht may l, cc kt qu khng qu khc bit. Ta cng c th dng interp1 ko di th ca s chut ra ngoi khong cc gi tr c trong T:
>> [T(end), Y(end)] ans = 365.0000 76.9530 >> pop = interp1(T, Y, 370, 'cubic') pop = 80.9971

Qu trnh ny c gi l ngoi suy. Vi nhng gi tr thi gian cn gn 365, ngoi suy vn c v hp l, nhng khi cng xa v pha tng lai, ta cng trng i s km chnh xc. Chng hn, sau y l con s c tnh c khi ngoi suy c mt nm:
>> pop = interp1(T, Y, 365*2, 'cubic') pop = -4.8879e+03

Kt qu l hon ton sai.

Ni suy hm ngc
Ta dng interp1 tm s chut nh mt hm ca thi gian; v bng cch o ngc vai tr ca T v Y, ta cng c th ni suy thi gian nh mt hm ca s chut. Chng hn, ta cn bit sau bao lu th s chut s t n 20.
>> interp1(Y, T, 20) ans = 133.4128

Cch dng interp1 th ny c th d nhm ln nu bn ngh rng cc i s nh l x v y. C th hay hn l bn hnh dung chng nh tp ngun v tp ch trong mt php nh x (cn i s th ba l phn t trong tp ngun). Hnh v di y cho thy f (Y v theo T) v nghch o ca f (T v theo Y).

trng hp ny ta c th dng interp1 theo cch no cng c v f c nh x n tr, tc l mi gi tr ca tp ch ch c mt gi tr t tp ngun c nh x n n. Nu ta gim lng cung cp thc n sao cho s chut gim trong thi k ma ng th c th s thy kt qu sau:

Ta vn dng c interp1 nh x t T n Y:
>> interp1(T, Y, 260) ans = 15.0309

Nh vy l vo ngy 260, s chut c khong 15 con, nhng nu ta cn bit vo ngy no s chut c 15 con th s tn ti hai cu tr li: 172,44 v 260,44. Nu th dng interp1, ta s nhn c kt qu sai:
>> interp1(Y, T, 15) ans = 196.3833 % SAI

Vo ngy 196, s chut thc t l 16,8; v vy interp1 cn khng t gn con s ! Vn l ch T vi vai tr hm s ca Y l mt nh x a tr; vi mt gi tr no tp ngun, c hn mt gi tr tp ch. iu ny lm cho interp1 khng tnh ng. Ti khng th tm thy ti liu no vit v s hn ch ni trn, tht hi t.

Chut ng
Nh ta thy, mt cng dng ca ni suy l din gii kt qu ca mt bi ton s tr; song cn mt cng dng khc l lp y nhng khong trng gia cc s liu o ri rc. Chng hn1, gi s rng s chut ng b chi phi bi phng trnh tc : g(t,y)=ay b(t)y1,7 trong t l thi gian tnh theo thng, y l s chut, a l mt tham s c trng cho tc tng s chut trong trng hp khng hn ch, cn b l hm s theo thi gian, c trng cho nh hng ca lng thc c cp n tc cht. Mc d b xut hin trong phng trnh nh mt hm lin tc, ta c th s khng bit c b(t) vi mi t. Thay vo , ta c th ch c cc s liu o ri rc sau y:
t 0 1 2 3 4 5 6 7 b(t) ---0.0070 0.0036 0.0011 0.0001 0.0004 0.0013 0.0028 0.0043

0.0056

Nu dng ode45 gii phng trnh vi phn, th ta s khng th tin gn n nhng gi tr ca t khi hm tc (v do c b) c lng gi. Ta cn cung cp mt hm cho php xc nh b bt k lc no:
function res = interpolate_b(t) T = 0:8; B = [70 36 11 1 4 13 28 43 56] * 1e-4; res = interp1(T, B, t); end

Nhn bao qut, hm ny dng mt php nh x ri rc lp ra mt nh x lin tc. Hy vit mt hm tc trong dng interpolate_b lng gi g ri dng ode45 tnh s chut ng t t=0 n t=8 vi s chut ban u bng 100 v a=0.9. Sau sa li interpolate_b dng ni suy spline v chy li ode45 xem php ni suy nh hng nhiu n cc kt qu hay khng.

Thut ng
ni suy: c tnh gi tr ca mt hm da vo cc gi tr bit hai pha. ngoi suy: c tnh gi tr ca mt hm da vo cc gi tr bit nhng khng bao ly gi tr cn tm. nh x n tr: nh x trong mi gi tr ca tp ngun chiu n mt gi tr tp ch. nh x a tr: nh x trong c t nht mt gi tr tp ngun chiu n nhiu gi tr tp ch.

Bi tp
Mt qu bng golf2 c nh theo c xoy ngc s pht sinh lc nng, vn c th lm tng tm xa, nhng nng lng to ra xoy c th s lm gim vn tc ban u. Hy vit mt chng trnh m phng ng bay ca mt qu bng golf ri dng n tnh gc nh v s phn chia nng lng to xoy v vn tc ban u (t mt ngun nng lng nht nh) sao cho tm xa theo phng ngang ca qu bng t cc i. Hin tng qu bng xoy b nng ln l do lc Magnus3; lc ny vung gc vi trc quay v ng bay. H s nng t l vi tc quay, v bng khong 0,1 i vi qu bng quay c 3000 vng/pht. H s cn ca qu bng vo khong 0,2 khi qu bng bay nhanh hn 20 m/s.

You might also like