Giáo Trình Phương Pháp Tính (chương 2a)

22 226 0
Giáo Trình Phương Pháp Tính (chương 2a)

Đ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

CHNG2:GIIGNĐÚNGPHNGTRÌNH ĐISVÀSIÊUVIT  §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 soa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.  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xo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(x+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.       x 1xoxox1 13 Tacóđnhlí:Xétphngpháplp(3),gis: [a,b]làkhongphânli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:  b xa,1 q )x(g < << ≤ ′ (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trên. Cáchđaphngtrìnhf(x)=0vdngx=g(x)đcth chinnh sau:tathyf(x)=0cóthbinđithànhx=x+λf(x)viλ≠0.Sauđóđt x+λf(x)=g(x)saochođiukin(4)đcthomãn.  Víd:xétphngtrình x 3 +x1000=0 Saubcgiisbtacónghimx1∈(9,10) Nuđaphngtrìnhvdng: x=1000x 3 =g(x) thìdthy|g  (x)|>1trongkhong(9,10)nênkhôngthomãnđiukin (4) Chúngtađaphngtrìnhvdng  3 x1000x −=  thìtathyđiukin(4)đcthomãn.Xâydngdãyxpx  3 n 1n x1000 x − = +  vixochnbtkìtrong(9,10)  Trêncsphngphápnàychúngtacócácchngtrìnhtínhtoán sau: Chng trình gii phng trình exp((1/3)*ln(1000x)) vi s ln lp cho trc  Chngtrình21  //lapdon #include<conio.h> #include<stdio.h> #include<math.h>  voidmain() {  inti,n;  floatx,x0;  floatf(float); 14  clrscr();  printf(Chosolanlapn=);  scanf(%d,&n);  printf(Chogiatribandaucuanghiemx0=);  scanf(%f,&x0);  x=x0;  for(i=1;i<=n;i++) x=f(x);  printf(Nghiemcuaphuongtrinhla:%.4f,x);  getch(); }  floatf(floatx) {  floata=exp((1./3.)*log(1000x));  return(a); }  vàchngtrìnhgiibàitoánbngphngpháplpvisaischotrc  Chngtrình22  //lapdon #include<conio.h> #include<stdio.h> #include<math.h> voidmain() {  inti;  floatepsi,x,x0,y;  floatf(float);   clrscr();  printf(Chosaisoepsilon=);  scanf(%f,&epsi);  printf(Chogiatribandaucuanghiemx0=);  scanf(%f,&x0);  x=x0;  y=f(x);  if(abs(yx)>epsi) 15 { x=y; y=f(x); }  printf(Nghiemcuaphuongtrinhla%.6f,y);  getch(); }  floatf(floatx) {  floata=exp((1./3.)*log(1000x));  return(a); }  Chogiátrđuxo=1.Ktqutínhtoánx=9.966555  §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.          b 1 ξ b a x y  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[a1,b1]talitinhànhnh[a,b] Cách làm trênđc mô t trong chng trình sau dùngđtìm nghimcaphngtrình: x 4 +2x 3 x1=0 trênđon[0,1]  Chngtrình23  //chiadoicung #include<conio.h> #include<stdio.h> #include<math.h> #defineepsi0.00001 voidmain() { 16  floatx0,x1,x2;  floaty0,y1,y2; floatf(float);  intmaxlap,demlap;  clrscr();  printf(Timnghiemcuaphuongtrinhphituyen);  printf(\nbangcachchiadoicung\n);  printf(Chocacgiatrix0,x1,maxlap\n);  printf(Chogiatrix0=);  scanf(%f,&x0);  printf(Chogia trix1=);  scanf(%f,&x1);  printf(Chosolanlapmaxlap=);  scanf(%d,&maxlap);  y0=f(x0);  y1=f(x1);  if((y0*y1)>0) { printf(Nghiemkhongnamtrongdoanx0x1\n); printf(x0=%.2f\n,x0); printf(x1=%.2f\n,x1); printf(f(x0)= %.2f\n,y0); printf(f(x1)=%.2f\n,y1); }  demlap=0;  do { x2=(x0+x1)/2; y2=f(x2); y0=f(x0); if(y0*y2>0) x0=x2; else x1=x2; demlap=demlap+1; }  while(((abs((y2y0))>epsi)||(demlap<maxlap)));  if(demlap>maxlap) { 17 printf(Pheplapkhonghoitusau%dlanlap,maxlap); printf(x0=%.2f\n,x0); printf(x1=%.2f\n,x1); printf(f(x2)=%.2f\n,y2); }  else { printf(Pheplaphoitusau%dlanlap\n,demlap); printf(Nghiemx=%.2f,x2); }   getch(); }  floatf(floatx) {  floata=x*x*x*x+2*x*x*xx1;  return(a); }  Ktqutínhchonghim:x=0.87  §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 Trongđó  )ab( )b(f)a(f )a( f h 1 − +− − =   Tiptheodùngcáchđóviđon[a,x1]hay[x1,b]màhaiđuhàm nhngiátrtráidutađcnghimgnđúngx2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)].ThtvyphngtrìnhdâycungAB códng: 18  )a(f)b(f )a( f y ab ax − − = − −       ax 1ξb    Chox=x 1y=0tacó  )ab( )a(f)b(f )a( f ax 1 − − −=  Trên c s ca phng pháp ta có chngtrìnhtínhnghimcaphng trình    x 4 +2x 3 x1=0 trênđon[0,1]  Chngtrình24  //phuongphapdaycung #include<conio.h> #include<stdio.h> #include<math.h> #defineepsi0.00001  voidmain() {  floata,b,fa,fb,dx,x;  floatf(float);   clrscr();  printf(Timnghiemcuaphuongtrinhphituyen\n);  printf(bangphuongphapdaycung\n);  printf(Chocacgiatria,b\n);  printf(Cho giatricuaa=);  scanf(%f,&a);  printf(Chogiatricuab=);  scanf(%f,&b);  fa=f(a);  fb=f(b);  dx=fa*(ba)/(fafb);  while(fabs(dx)>epsi) { x=a+dx; fa=f(x); 19 if((fa*fb)<=0) a=x; else b=x; fa=f(a); fb=f(b); dx=fa*(ba)/(fafb); }  printf(Nghiemx=%.3f,x);  getch(); }  floatf(floatx) {  floate=x*x*x*x+2*x*x*xx1;  return(e); }   Ktqutínhchonghim:x=0.876  §5.PHNGPHÁPLPNEWTON  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.Gisf(x) cónghimlàξđãđctáchtrênđon[a, b]đng thi f(x) và f (x) liên tc và gi nguyên du trênđon [a, b]. Khiđã tìm đc xp x nàođó xn ∈ [a, b] ta có th kin toàn nó theo phng pháp Newton. TmútBtavtiptuynviđ ngcong. Phngtrìnhđngtiptuynlà        x1 b =xo a )xx)( b ( f )x( f y 00 − ′ =−  Tiptuynnàycttrchoànhtiđimcó y=0,nghĩalà: )xx)( b ( f )x( f 010 − ′ =−  hay: )x(f )x( f xx 0 0 01 ′ −=  Tx 1talitiptcvtiptuynviđngcongthìgiaođimxistinti nghimcaphngtrình. 20 Vicchnđimbanđuxortquantrng.Trênhìnhvtrêntathy nuchnđimbanđuxo=athìtiptuynscttrctimtđimnm ngoàiđon[a,b].Chnxo=bsthunlichovictínhtoán.Chúngtacó đnhlí:  Nuf(a).f(b)<0;f(x)vàf(x)kháckhôngvàginguyênduxácđnhkhix ∈ [a,b]thìxutpháttxo ∈ [a,b]thomãnđiukinf(xo).f ″ (xo)>0cóthtính theophngphápNewtonnghim ξ duynhtviđchínhxáctuý.  KhidùngphngphápNewtoncnlyxolàđumútcađon[a,b] đtiđóf(xo).f(xo)>0.Ápdnglíthuyttrênchúngtaxâydngchng trìnhtínhsau:  Chngtrình25  //phuongphapNewton #include<conio.h> #include<stdio.h> #include<math.h> #include<stdlib.h> #definen50 #defineepsi1e5  voidmain() {  floatt,x0;  floatx[n];  inti;  floatf(float);  floatdaoham(float);   clrscr();  printf(Timnghiemcuaphuongtrinhphituyen\n);  printf(bangphuongphaplap Newton\n);  printf(Chogiatricuax0=);  scanf(%f,&x0);  i=1;  x[i]=x0;  do { x[i+1]=x[i]f(x[i])/daoham(x[i]); 21 t=fabs(x[i+1]x[i]); x[i]=x[i+1]; i=i+1; if(i>100) { printf(Baitoankhonghoitu\n); getch(); exit(1); } else ; }  while(t>=epsi);  printf(Nghiemx=%.5f,x[i]);  getch(); }  floatf(floatx) {  floata=x*xx2;  return(a); }  floatdaoham(floatx) { floatd=2*x1; return(d); }   Chngtrìnhnàyđcdùngxácđnhnghimcahàmđãđcđnh nghĩatrongfunction.Trongtrnghpnàyphngtrìnhđólà: x 2 x1=0 Ktqutínhvigiátrđuxo=0chonghimx=2.  §6.PHNGPHÁPMULLER  Trongphngphápdâycungkhitìmnghimtrongđon[a,b]taxp xhàmbngmtđngthng.Tuynhiênđgimlngtínhtoánvàđ nghimhit nhanhhntacóthdùngphng phápMuller.Nidung caphngphápnàylàthayhàmtrongđon[a,b]bngmtđngcong bc2màtahoàntoàncóthtìmnghiêmchínhxáccanó.Gicácđimđó 22 [...]... float f(float x) { float a=sin(x) x/2; return(a); } §7 PH NG PHÁP L P BERNOULLI Có nhi u ph ng pháp tìm nghi m c a m t a th c Ta xét ph ng trình: aoxn + a1xn 1 + + an = 0 Nghi m c a ph ng trình trên tho mãn nh lí: N u max{| a1 |, | a2 |, , |an |} = A thì các nghi m c a ph ng trình tho mãn i u ki n | x | < 1 + A/ | a0| Ph ng pháp Bernoulli cho phép tính toán nghi m l n nh t c a m t a th c Pn(x) có n nghi... an (2) v i cùng m t h s ai nh (1) c g i là a th c c tính c a ph ng trình sai phân tuy n tính (1) N u (2) có n nghi m phân bi t x1, x2, , xn thì (1) có các nghi m riêng là y i x ik N u yi là các nghi m c a ph ng trình sai phân là tuy n tính (1),thì k (3) y k c 1x1 c 2 x k cnxk 2 n v i các h s ci b t kì c ng là nghi m c a ph ng trình sai phân tuy n tính h s h ng (1) N u các nghi m c n sao cho : | x1|... khi k v y: yk Ngh a là : y lim k 1 x 1 k yk N u ph ng trình vi phân g m n+1 h s , m t nghi m riêng yk có th c xác nh t n giá tr yk 1, yk 2, ,yn 1 i u cho phép tính toán b ng cách truy h i các nghi m riêng c a ph ng trình vi phân tính nghi m l n nh t c a a th c, ta xu t phát t các nghi m riêng y1 = 0, y1 = 0, , yn =1 tính yn+1 Cách tính này c ti p t c tính yn+2 27 xu t phát t y1 = 0, y2 = 0, ,yn+1 và ti... dùng ph ng pháp Bernoulli tìm nghi m l n nh t c a Qn 1(x) Sau ó l i ti p t c các b c trên cho n khi tìm h t các nghi m c a Pn(x) Chúng ta kh o sát ph ng trình sai phân có d ng nh sau : = aoyk+n + a1yk+n 1 + + anyk = 0 (1) 26 ây là m t ph ng trình sai phân tuy n tính h s h ng Khi cho tr c các giá tr u yo, y1, yn 1 ta tìm c các giá tr yn, yn+1, Chúng c g i là nghi m c a ph ng trình sai phân tuy n tính (1)... getch(); } K t qu nghi m c a a th c x3 10x2 + 31x 30 là:5 ; 3 và 2 §8 PH NG PHÁP L P BIRGE VIETTE Các nghi m th c, n gi n c a m t a th c Pn(x) c tính toán khi s d ng ph ng pháp Newton Pn ( x i ) xi 1 xi (1) Pn ( x i ) b t u tính toán c n ch n m t giá tr ban u xo Chúng ta có th ch n m t giá tr xo nào ó, ví d : an x0 an 1 và tính ti p các giá tr sau : Pn ( x 0 ) x1 x 0 Pn ( x 0 ) Pn ( x 1 ) x 2 x1 Pn... là hàm c a s và p : bn 1 = f(s, p) bn = g(s, p) Vi c tìm s* và p* a n vi c gi i h ph ng trình phi tuy n: f(s,p) 0 g(s,p) 0 Ph ng trình này có th gi i d dàng nh ph ng pháp Newton Th t v y v i m t ph ng trình phi tuy n ta có công th c l p: xi+1 = xi f(xi)/f (xi) hay f (xi)(xi+1 xi) = f(xi) V i m t h có hai ph ng trình, công th c l p tr thành: J(Xi)(Xi+1 Xi) = F(Xi) 34 ... ( x h2 (x x 2 ) ah 2 2 bh 2 f2 ó ta có : f1 f0 (1 a 2 h 1 (1 c ) f2 ) 2 f1 f0 ah 1 b h1 c f0 ó ta tìm nghi m c a ph ng trình av2 + bv + c = 0 và có : 2c n1, 2 x 0 b b2 4ac ó ta ch n nghi m g n x0 nh t làm m t trong 3 i m tính x p x Các i m này c ch n g n nhau nh t Ti p t c quá trình tính n t chính xác yêu c u thì d ng l i : Tìm nghi m c a hàm f(x) = sin(x) x/2 trong o n [1.8, 2.2] Ta ch n Ti p m i khi... an + bn 1xi = Pn(xi) o hàm (3) ta c: Pn ( x) ( x x i )Pn 1 ( x) Pn 1 ( x) và: Pn ( x i ) Pn 1 ( x i ) (7) Nh v y v i m t giá tr xi nào ó theo (2) ta tính c Pn(xi) và k t h p (6) v i (7) tính c P n(xi) Thay các k t qu này vào (1) ta tính c giá tr xi+1 Quá trình c ti p t c cho n khi | xi+1 xi | < hay Pn(xi+1) 0 nên 1 xi+1 là m t nghi m c a a th c Phép chia Pn(x) cho (x 1) cho ta Pn 1(x) và m t nghi m m... p t c cho n khi yk+1/yk không bi n i n a Tr s c a yk+n c tính theo công th c truy h i : 1 yk n a1y k n 1 anyk (4) a0 Ví d : Tính nghi m c a a th c Pn(x) = P3(x) = x3 10x2 + 31x 30 Nh v y ao = 1, a1 = 10,a2 = 31 và a3 = 30 Ph ng trình sai phân t ng ng là : yk+3 10yk+2 + 31yk+1 30yk = 0 Ta cho tr c các giá tr y1 = 0; y2 = 0 và y3 = 1 Theo (4) ta tính c: y4 = ( 10y3 + 31y2 30y1) = 10 y5 = ( 10y4 + 31y3... p l i b c tính trên cho x1 ta có: Po = a o = 1 P1 = a1 + pox1 = 1 + 3.6*1 = 2.6 P2 = a2 + p1x1 = 16 + 3.6*2.6 = 6.64 P3 = a3 + p2x1 = 24 + 3.6*( 6.64) = 0.096 bo = a o = 1 b1 = a1 + box1 = 1 + 3.6*1 = 2.6 b2 = a2 + p1x1 = 16 + 3.6*2.6 = 6.64 P2(3.6) = b0x2 + b1x + b2 = 15.68 Pn ( x1 ) 0.096 x 2 x1 3.6 3.606 Pn ( x1 ) 15.68 Quá trình c th ti p t c cho n khi sai s ch p nh n d i ây mô t thu t tính trên . Trêncsphng pháp nàychúngtacócácchng trình tính toán sau: Chng trình gii phng trình exp((1/3)*ln(1000x)) vi s ln lp cho trc  Chng trình 21  //lapdon #include<conio.h> #include<stdio.h> #include<math.h>  voidmain() { . 18  )a(f)b(f )a( f y ab ax − − = − −       ax 1ξb    Chox=x 1y=0tacó  )ab( )a(f)b(f )a( f ax 1 − − −=  Trên c s ca phng pháp ta có chng trình tính nghimcaphng trình    x 4 +2x 3 x1=0 trênđon[0,1]  Chng trình 24  //phuongphapdaycung #include<conio.h> #include<stdio.h> #include<math.h> #defineepsi0.00001  voidmain() { . 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: 

Ngày đăng: 17/06/2015, 13:59

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

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

Tài liệu liên quan