Tài liệu CHƯƠNG 5: CÁC PHƯƠNG TRÌNH PHI TUYẾN docx

70 584 2
Tài liệu CHƯƠNG 5: CÁC PHƯƠNG TRÌNH PHI TUYẾN docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

241 CHƯƠNG 5: CÁC PHƯƠNG TRÌNH PHI TUYẾN §1.KHÁINIỆMCHUNG Nếuphươngtrìnhđạisốhaysiêuviệtkháphứctạpthìítkhitìmđược nghiệmđúng.Bởivậyviệctìmnghiệmgầnđúngvàướclượngsaisốlàrất c ầnthiết.  Taxétphươngtrình:  f(x)=0(1) vớif(x)làhàmchotrướccủabiếnx.Chúngtacầntìmgiátrịgầnđúngcủa nghiệmcủaphươngtrìnhnày.  Quátrìnhgi ảithườngchialàmhaibước:bướcsơbộvàbướckiệntoàn nghiệm.  Bước giải sơ bộ có 3 nhiệm vụ: vây nghiệm,tách nghiệmvàthuhẹp khoảngchứanghiệm.  Vây nghiệmlàtìmxemcácnghiệmcủaphươngtrìnhcóthểnằmtrên nhữngđoạnnàocủatrụcx.Táchnghiệmlàtìmcáckhoảngchứanghiệmsao cho trong mỗi khoảng chỉ cóđúng m ột nghiệm. Thu hẹp khoảng chứa nghiệmlà làmchokhoảngchứanghiệmcàngnhỏcàngtốt.Saubướcsơbộta cókhoảngchứanghiệmđủnhỏ.Đểxácđịnhkhoảngchứanghiệmta cóthể dùngphươngphápđồthị.Ngoàiratacũngcóthểtìmnghiệmbằngphương pháptìmtăngdần.Ýtưởngcủaphươngphápnàylànếyf 1(x).f2(x)<0thìcóít nhấtmộtnghiệmcủaphươngtrìnhtrongđoạn[x 1,x2].Nếuđoạn[x1,x2]đủ nhỏthìtrongđạonđósẽcómộtnghiệmduynhất.Nhưv ậytacóthểphát hiệnranghiệmbằngcáchtínhtrịcủahàmtrêncácđoạn∆xvàxemchúngcó đổidấukhông. Taxây dựnghàmrootsearch()đểtìmkhoảngchứanghiệm.  function[x1,x2]=rootsearch(func,a,b,dx) %Timdoanchuanghiemcuahamf(x). %Cuphap:[x1,x2]=rootsearch(func,a,d,dx) %func=hamf(x). %a,b=daontim. %dx=khoangtang %x1,x2=doanchunghiem (a,b); %datlaNaNneukhongthaynghiem  242 x1=a;f1=feval(func,x1); x2=a+dx;f2=feval(func,x2); whilef1*f2>0.0 ifx1>=b x1=NaN;x2=NaN; return end x1=x2;f1=f2; x2=x1+dx;f2=feval(func,x2); end  Khipháthi ệnthấykhoảng chứanghiệm,hàm trảvềgiátrịbiên củađoạn. Nếukhôngcónghiệm,x1=x2=NaN.Tagọirootsearch()nhiềulầnđểphát hiệnhếtcácđoạnchứanghiệm. Vớivídụtìmkhoảngchứanghiệmcủahàm f(x)=x 3 ‐10x 2 +5tadùngchươngtrìnhctrootsearch.m  clearall,clc f=inline(ʹx^3‐10*x^2+5ʹ); [x1,x2]=rootsearch(f,2,10,.2)   Bướckiệntoànnghiệmtìmcácnghiệmgầnđúngtheoyêucầuđặtra.  Córấtnhiềuph ươngphápxácđịnhnghiệmcủa(1).Sauđâychúngta xéttừngphươngpháp.  §2.PHƯƠNGPHÁPLẶPĐƠN Giảsửphươngtrình(1)đượcđưavềdạngtươngđương:  x=g(x)(2) từgiátrịx onàođógọilàgiátrịlặpđầutiêntalậpdãyxấpxỉbằngcôngthức:  x n=g(xn‐1)(3) vớin=1,2,  Hàmg(x)đượcgọilàhàmlặp.Nếudãyx n→αkhin→∝thìtanóiphéplặp (3)hộitụ. Tacóđịnhlí:Xétphươngpháplặp(3),giảsử: ‐[a,b]làkhoảngchứanghiệmαcủaphươngtrình(1)tứclàc ủa(2) ‐mọix ntínhtheo(3)đềuthuộc[a,b] ‐g(x)cóđạohàmthoảmãn: 243 g(x) q 1 a x b ′ ≤< <<(4) trongđóqlàmộthằngsốthìphươngpháplặp(3)hộitụ Tacóthểminhhoạphéplặptrênbằnghìnhvẽsau.          Taxâydựnghàm simpiter()đểlặp  function[x,err,xx]=simpiter(g,x0,tolx,maxiter) %giaiptx=g(x)tux0bangcahlap %vao:g,x0=hamvagiatridau %tolx=saisomongmuon %maxiter=solanlapmax %ra:x=nghiem %err= saiso|x(k)‐x(k‐1)| %xx=cacgiatritrunggian  ifnargin<4 maxiter=100; end ifnargin<3 tolx=1e‐6; end xx(1)=x0; fork=2:maxiter xx(k)=feval(g,xx(k‐1)); err=abs(xx(k)‐xx(k‐1)); if err<tolx break; end x1 xo x1 xo 244 end x=xx(k); ifk==maxiter fprintf(ʹKhonghoitusau%dlanlap\nʹ,maxiter) else fprintf(ʹHoitusau%dlanlap\nʹ,k) end   Đểtínhlạivídụtrêntadùngchươngtrình ctsimpiter4_2.m  clearall,clc f=inline(ʹ‐0.5*((x‐1).^2‐3)ʹ); [x,ss,xx]=simpiter(f,0.5,.00001,200)  §3.PHƯƠNGPHÁPCHIAĐÔICUNG Giả sử cho phương trình f(x) = 0 với f(x)liêntụctrênđoạn[a,b]vàf(a).f(b)<0. Chiađoạn [a, b]thành 2 phần bởi chính điểmchia(a+b)/2.  1.Nếuf((a+b)/2)=0thì ξ=(a+b)/2  2. Nếu f((a + b)/2) ≠ 0 thì chọn [a,(a+b)/2]hay[(a+  b)/2,b]màgiátrịhàm haiđầutráidấuvàkíhiệulà[a 1,b1].Đốivới [a 1,b1]talạitiếnhànhnhư[a,b]. Taxâydựnghàm bisection()thựchiệnthuậttoántrên  function[x,err,xx]=bisection(f,a,b,tolx,maxiter) %bisection.mdegiaiptf(x)=0bangphuongphapchiadoicung %vao:f=hamcantimnghiem %a/b=biencuadoancantimnghiem %tolx=saisomongmuon %maxiterlanlapmax %ra:x =nghiem %err=saiso %xx=cacgiatritrunggian  y x a b ξ  b 1 245 tol=eps; fa=feval(f,a); fb=feval(f,b); iffa*fb>0 error(ʹNghiemkhongotrongdoannayʹ); end fork=1:maxiter xx(k)=(a+b)/2; fx=feval(f,xx(k)); err=(b‐a)/2; ifabs(fx)<tol|abs(err)< tolx break; elseiffx*fa>0 a=xx(k); fa=fx; elseb=xx(k); end end x=xx(k); ifk==maxiter fprintf(ʹKhonghoitusau%dlanlap\nʹ,maxiter), else fprintf(ʹHoitusau%dlanlap\nʹ,k), end   Đểtìmnghiệmcủahàmf(x)=tg(π‐)‐xtadùngchươngtrình ctbisection.m  clearall,clc f=inline(ʹtan(pi‐x)‐xʹ); [x,ss,xx]=bisection(f,1.6,3,1e‐4,50)   §4.PHƯƠNGPHÁPDÂYCUNG Giảsửf(x)liêntụctrêntrênđoạn[a,b]vàf(a).f(b)<0.Cầntìmnghiệm củaf(x)= 0.Đểxácđịnhtaxemf(a)<0vàf(b)>0.Khiđóthayvìchiađôi đoạn[a,b]tachia[a,b] theotỉlệ‐f(a)/f(b).Điềuđóchotanghiệmgầnđúng:  x 1=a+h1 246 Trongđó  1 f(a) (b a) h f(a) f(b) = − − −+   Tiếptheodùngcáchđóvớiđoạn[a,x 1] hay[x 1,b]màhaiđầuhàmnhậngiátrịtrái dấutađượcnghiệmgầnđúngx 2v.v. Vềmặthìnhhọc,phươngphápnàycó nghĩalàkẻdâycungcủađườngcongf(x) quahaiđiểmA[a,f(a)]vàB[b,f(b)]haynóicáchkháclàtuyếntínhhoáhàm f(x)trongđoạn[a,b]. Thật vậyphươngtrìnhdâycungABcódạng:  f(a) f(b) af(b) bf(a) yx ab ab −− =+ −−  Chox=x 1,y=0tacó  1 af(b) bf(a) x f( b) f(a) − = − (1) Taxâydựnghàm chord()đểthựchiệnthuậttoántrên  function[x,err,xx]=chord(f,a,b,tolx,maxiter) %giaiptf(x)=0bgphuongphapdaycung. %vao:f‐hamcantimnghiem %a/b‐khoangtimnghiem %tolx‐saisomongmuoncuanghiem %maxiterlanlapmax %ra:x‐nghiem %err‐sai so %xx‐cacgiatritrunggian tolfun=eps; fa=feval(f,a); fb=feval(f,b); iffa*fb>0 error(ʹNghiemkhongotrongdoannay!ʹ); end fork=1:maxiter xx(k)=(a*fb‐b*fa)/(fb‐fa);%pt.(1) fx=feval(f,xx(k));  err=min(abs(xx(k)‐a),abs(b‐xx(k))); a b x y x1 ξ 247 ifabs(fx)<tolfun|err<tolx break; elseiffx*fa>0 a=xx(k); fa=fx; else b=xx(k); fb=fx; end end x=xx(k); ifk==maxiter fprintf(ʹKhonghoitusau%dlanlap\nʹ,maxiter) else fprintf(ʹ Hoitusau%dlanlap\nʹ,k) end  Đểtìmnghiệmcủahàmf(x)=tg(π‐x)‐xtadùngchươngtrình ctchord.m  clearall,clc f=inline(ʹtan(pi‐x)‐xʹ); [x,ss,xx]=falsp(f,1.7,3,1e‐4,50)   §5.PHƯƠNGPHÁPNEWTON‐RAPHSON Phương pháp lặp Newton(còn gọi là ph ương pháp tiếp tuyến)được dùngnhiềuvìnóhộitụnhanh.Tuynhiênphươngphápnàyđòihỏitínhfʹ(x). CôngthứcNewton‐RaphsonđượcsuytừkhaitriểnTaylorc ủaf(x)lâncậnx: 2 i1 i i i1 i i1 i f(x ) f(x) f(x)(x x) O(x x) +++ ′ =+ −+ −(1) Nếux i+1lànghiệmcủaphươngtrìnhf(x)=0thì(1)trởthành:  2 iii1i i1i 0 f(x ) f (x )(x x ) O(x x ) ++ ′ =+ −+ −(2) Giảsửrằngx igầnvớixi+1,tacóthểbỏquasốhạngcuốitrong(2)vàcócông thứcNewton‐Raphson:  i i1 i i f(x ) xx f(x) + =− ′ (3) Nếux i+1lànghiệmđúngcủaphươngtrìnhthìsaisốlàei=x‐xi.Khinghiệm đượctínhtheo(3)thìsaisốlà: 248  2 i i1 i i f(x) ee 2f (x ) + ′′ =− ′  Minh hoạ hình học của thuật toán Newton‐Raphsonnhưhìnhbên. Thuậttoánđượctómlượcnhưsau: ‐chox o ‐tính f(x) x fʹ(x) ∆=−  ‐chox=x+∆x ‐lặplạibước2và3chođếnkhi|∆x|≤ε Taxâydựnghàm newtonraphson()đểthựchiệnthuậttoántrên.  function[x,fx,xx]=newtonraphson(f,df,x0,tolx,maxiter) %giaiptf(x)=0bangppNewton‐Raphson. %vao:f=ftntobegivenasastring’f’ifdefinedinanM‐file %df=df(x)/dx(neukhongchosedungdaohamso.) %x0 =giatribandau %tolx=saisomongmuon %maxiter=solanlapmax %ra:x=nghiem %fx=f(x(last)),xx=cacgiatritrunggian h=1e‐4; h2=2*h; tolf=eps; ifnargin==4&isnumeric(df)  maxiter=tolx; tolx=x0; x0=df; end xx(1)=x0; fx=feval(f,x0); fork=1:maxiter if~isnumeric(df) dfdx=feval(df,xx(k));%daohamcuaham else dfdx=(feval(f,xx(k)+h)‐feval(f,xx(k)‐h))/h2;%daohamso a b =xo x1 y x 249 end dx=‐fx/dfdx; xx(k+1)=xx(k)+dx;%pt.(3) fx=feval(f,xx(k+1)); ifabs(fx)<tolf|abs(dx)<tolx, break; end end x=xx(k+1); ifk==maxiter fprintf(ʹKhonghoitusau%dlanlap\nʹ,maxiter) else fprintf(ʹ Hoitusau%dlanlap\nʹ,k) end  Để tính lại nghiệm của hàm cho trong ví dụ trên ta dùng chương trình ctnewraph.m  clearall,clc f=inline(ʹx.^3‐10*x.^2+5ʹ); [x,ss,xx]=newtonraphson(f,0.7,1e‐4,50)   §6.PHƯƠNGPHÁPCÁTTUYẾN  Phươngphápcáttuy ếncóthểcoilàbiếnthểcủaphươngphápNewton ‐Raphsontheonghĩađạohàmđượcthaybằngxấpxỉ: kk1 kk1 f( x ) f(x ) f(x) xx − − − ′ ≈ − (1) vàtốnítthờigiantínhhơnkhidùngđạohàmgiảitíchhayđạohàmsố.  Bằngcáchxấpxỉ,biểuthức:  k k1 k k f(x ) xx f(x ) + =− ′  trởthành:  − + − ⎡⎤ − =− =− ⎢⎥ − ⎣⎦ kk1 k k1 k k k kk1 k xx f(x) xxf(x) x f(x ) f(x ) dfdx    (2) với kk1 k kk1 f( x ) f(x ) dfdx xx − − − = −  250 Phươngtrình(2)chínhlàbiểuthứctổngquátcủaphéplặp.Haigiátrịđầu tiênx 1vàx2cầnđểkhởiđộngphépl ặp.Quátrìnhlặpđượcminhhoạbằng hìnha             Phéplặpcóthểkhônghộitụ(hìnhb).Tuynhiênkhihộitụ,nóhộirấtnhanh. Taxâydựnghàm secant()đểthựchiệnthuậttoántrên.  function[x,fx,xx]=secant(f,x0,x1,tolx,maxiter) %giaiptf(x)=0bgphuongphapdaycung %vao:f‐hamcantimnghiem %x0,x1‐giatrikhoidongpheplap %tolx‐saisomongmuon %maxiter‐solanlapmax %ra:x =nghiem %fx=f(x(last)),xx=cacgiatritrunggian h=(x1‐x0)/100; h2=2*h; tolfun=eps; xx(1)=x0; fx=feval(f,x0); fork=1:maxiter ifk<=1 dfdx=(feval(f,xx(k)+h)‐feval(f,xx(k)‐h))/h2; else dfdx =(fx‐fx0)/dx; x0 x1 x2 f(x) x y a x0 x1 f(x) x y b  [...]...        (p(1)^2 + 2*p(2)^2 ‐ p(3) ‐ 6         (p(1) ‐3*p(2 )^2 + p(3)^2 + 2)];    Để giải hệ phương trình ta dùng chương trình ctnew4sys2.m:    clear all, clc    format long  p = [1  1  1 ];  r = new4sys2(@t, p, 50)    §13. PHƯƠNG PHÁP BROYDEN DÙNG CHO HỆ PHI TUYẾN  1. Phương pháp Broyden: Để giải hệ phương trình phi tuyến tính F([X]) = [0]  bằng phương pháp lặp Newton ta cho vec tơ nghiệm ban đầu [P0] và tạo ra  dãy [Pk] hội tụ về nghiệm [P], nghĩa là F([P]) = [0]. Khi này ta cần tính ma trận ...     if abs(fx)  . 241 CHƯƠNG 5: CÁC PHƯƠNG TRÌNH PHI TUYẾN §1.KHÁINIỆMCHUNG Nếu phương trình đạisốhaysiêuviệtkháphứctạpthìítkhitìmđược nghiệmđúng.Bởivậyviệctìmnghiệmgầnđúngvàướclượngsaisốlàrất c ầnthiết. . trình ctsecant.m  clearall,clc f=inline(ʹx.^3‐10*x.^2+5ʹ); [x,ss,xx]=secant(f,0.5,1,1e‐4,50)   §7.PHƯƠNGPHÁPBRENT  Phương pháp Brent kêt hợp phương pháp chiađôi cung và phương phápnộisuybậchaiđểtạo ra một phương pháptìmnghiệm của phương trình f(x)

Ngày đăng: 23/01/2014, 06:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan