Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
445,46 KB
Nội dung
CHNG5:NISUYVÀXPXHÀM §1.NISUYLAGRANGE Trongthctnhiukhiphiphchimthàmy=f(x)timigiátrx trongmtđon[a,b]nàođómàchbitmtsnhtđnh cácgiátrcahàm timtsđimchotrc.Cácgiátrnàyđccungcpquathcnghim haytínhtoán.Vìvynysinhvnđtoánhclàtrênđona≤x ≤bchomt lotcácđimxi(i=0,1,2 )vàticácđimxinàygiátrcahàmlàyi=f(xi) đãbit.Bâygitacntìmđathc: P n(x)=aoxn+a1x n1 +…+an1x+an saochoP n(xi)=f(xi)=yi.ĐathcPn(x)đcgilàđathcnisuycahàm y=f(x).Tachnđathcđnisuyhàmy=f(x)vìđathclàloihàmđn gin,luôncóđohàmvànguyênhàm.Victínhgiátr canótheothuttoán Hornercũngđngin. BâygitaxâydngđathcnisuykiuLagrange.GiL ilàđathc: )xx) (xx)(xx) (xx( )xx) (xx)(xx) (xx( L ni1ii1ii0i n1i1i0 i −−−− − − −− = +− +− RõrànglàLi(x)làmtđathcbcnvà: ⎩ ⎨ ⎧ ≠ = = ij0 ij1 )x(L ji TagiđathcnàylàđathcLagrangecbn. Bâygitaxétbiuthc: ∑ = = n 0i iin )x(L)x(f)x(P TathyPn(x)làmtđathcbcnvìcácLi(x)làcácđathcbcnvà thomãnđiukinPn(xi)=f(xi)=yi.TaginólàđathcnisuyLagrange. Vin=1tacóbng x x 0 x1 y y0 y1 Đathcnisuyslà: P 1(x)=yoL0(x)+y1L1(x1) 10 1 0 xx xx L − − = 01 0 1 xx xx L − − = nên 01 0 1 10 1 01 xx xx y xx xx y)x(P − − + − − = NhvyP1(x)làmtđathcbcnhtđivix Vin=2tacóbng 128 x x0 x1 x2 y y0 y1 y2 Đathcnisuyslà: P2(x)=yoL0(x)+y1L1(x1)+y2L2(x2) )xx)(xx( )xx)(xx( L 2010 21 0 −− −− = )xx)(xx( )xx)(xx( L 2101 20 1 −− −− = )xx)(xx( )xx)(xx( L 1202 10 2 −− −− = NhvyP 1(x)làmtđathcbchaiđivix Trêncsthuttoántrêntacóchngtrìnhtìmđathcnisuyca mthàmkhichotrccácđimvàsauđótínhtr scanótimtgiátr nàođónhsau: Chngtrình51 #include<conio.h> #include<stdio.h> #include<ctype.h> #definemax21 intmaxkq,n; floatx[max],y[max],a[max],xx[max],yy[max]; floatx0,p0; voidmain() { inti,k; charok; voidvaosolieu(void); floatlagrange(int,float[],float[],float); voidinkq(void); clrscr(); printf(%24cNOISUYDATHUCLAGRANGE\n,); 129 vaosolieu(); k=0; ok=c; while(ok==c) { printf(Tinhgiatricuayvoixlax0=); scanf(%f,&x0); p0=lagrange(n,x,y,x0); printf(Giatricuay=%15.5f\n,p0); printf(\n); k=k+1; maxkq=k; xx[k]=x0; yy[k]=p0; flushall(); printf( Tinhtiepkhong(c/k)?); scanf(%c,&ok); } inkq(); } voidvaosolieu() { inti,t; charok; printf(\n); printf(Hamy=f(x)\n); printf(Socap(x,y)nhieunhatlamax=20\n); printf(Sodiemdachotruocn= ); scanf(%d,&n); for(i=1;i<=n;i++) { printf(x[%d]=,i); scanf(%f,&x[i]); printf(y[%d]=,i); scanf(%f,&y[i]); } 130 printf(\n); printf(SOLIEUBANVUANHAP\n); printf(xy\n); for(i=1;i<=n;i++) printf(%8.4f%8.4f\n,x[i],y[i]); ok=; t=1; flushall(); while(t) { printf(\nCosuasolieukhong(c/k):?); scanf(%c,&ok); if(toupper(ok)==C) { printf( Chisocuaphantucansuai=); scanf(%d,&i); printf(Giatrimoi:); printf(x[%d]=,i); scanf(%f,&x[i]); printf(y[%d]=,i); scanf(%f,&y[i]); flushall(); } if(toupper(ok)!=C) t=0; } } floatlagrange(intn,float x[max],floaty[max],floatx0) { inti,k; floatg0; p0=0.0; for(k=1;k<=n;k++) { g0=1.0; for(i=1;i<=n;i++) 131 if(i!=k) g0=g0*(x0x[i])/(x[k]x[i]); p0=p0+y[k]*g0; } return(p0); } voidinkq() { inti,j,k; printf(\n); printf(%24cBANGSOLIEU\n,); printf(%18cx%24cy\n,,); for(i=1;i<=n;i++) printf(%20.4f%25.4f\n,x[i],y[i]); printf(\n); printf(%24cKETQUATINHTOAN\n ,); printf(%14cx%10cy\n,,); for(k=1;k<=maxkq;k++) printf(%15.5f%15.5f\n,xx[k],yy[k]); getch(); } Gistacóbngcácgiátrx,y: x 0 32 2 4 y 03.75 102 4 vytheochngtrìnhtix=2.5y=3.3549. §2.NISUYNEWTON Bây gi ta xét mt cách khácđxây dngđa thc ni suy gi là phngphápNewton.Trchttađavàomtkháinimmilàthiu Gishàmy=y(x)cógiá trchotrongbngsau: x x0 x1 x2 … xn1 xn y y0 y1 y2 … y n1 yn Thiucp1caytixi,xjlà: ji ji ji xx yy ]x,x[y − − = Thiucphaicaytixi,xj,xklà: 132 k i k jji k ji xx ]x,x[y]x,x[y ]x,x,x[y − − = v.v. Viy(x)=P n(x)làmtđathcbcnthìthiucp1tix,x0: 0 0nn 0n xx )x(P)x(P ]x,x[P − − = làmtđathcbc(n1).Thiucp2tix,x 0,x1: 1 10n0n 10n xx ]x,x[P]x,x[P ]x,x,x[P − − = làmtđathcbc(n2)v.vvàtithiucp(n+1)thì: Pn[x,xo, ,xn]=0 Tcácđnhnghĩathiutasuyra: P n(x)=Pn(x0)+(xx0)Pn[x,xo] Pn[x,x0]=Pn[x0,x1]+(xx1)Pn[x,xo,x1] P n[x,xo,x1]=Pn[x0,x1,x2]+(xx2)Pn[x,xo,x1,x2] P n[x,xo, ,xn1]=Pn[x0,x1, ,xn]+(xxn)Pn[x,xo, ,xn] Do Pn[x,xo, ,xn]=0nêntđótacó: Pn(x)=Pn(x0)+(xx0)Pn[xo,x1]+(xx0)(xx1)Pn[x0,x1,x2]+… +(xx 0)…(xxn1)Pn[x0,…,xn] NuP n(x)làđathcnisuycahàmy=f(x)thì: Pn(xi)=f(xi)=yivii=0÷n Dođócácthiutcp1đncpncaPnvàcaylàtrùngnhauvà nhvytacó: P n(x)=y0+(xx0)y[x0,x1]+(xx0)(xx1)y[x0,x1,x2]+ + (xx0)(xx1) (xxn1)y[x0, ,xn] ĐathcnàygilàđathcnisuyNewtontinxutpháttnútx0ca hàmy=f(x).NgoàiđathctincòncóđathcnisuyNewtonlùixutphát tđimx ncódngnhsau: P n(x)=yn+(xxn)y[xn,xn1]+(xxn)(xxn1)y[xn,xn1,xn2]+ + (xx n)(xxn1) (xx1)y[xn, ,x0] Trnghpcácnútcáchđuthìxi=x0+ihvii=0,1, ,n.Tagisai phântincp1tiilà: ∆y i=yi+1yi vàsaiphântincphaitii: ∆ 2 yi=∆(∆yi)=yi+22yi+1+yi vàsaiphântincpnlà: 133 ∆ n yi=∆(∆ n1 yi) Khiđótacó: [] h y x,xy 0 10 ∆ = [] 2 0 2 210 h2 y x,x,xy ∆ = [] n 0 n n210 h!n y x, ,x,x,xy ∆ = Bâygiđtx=x 0+httrongđathcNewtontintađc: 0 n 0 2 000n y !n )1nt()1t(t y !2 )1t(t yty)htx(P ∆ +− ⋅ ⋅ ⋅ − +⋅⋅⋅+∆ − +∆+=+ thìtanhnđcđathcNewtontinxutpháttx 0trongtrnghpnút cáchđu.Vin=1tacó: P1(x0+ht)=y0+∆y0 Vin=2tacó: 0 2 000n y !2 )1t(t yty)htx(P ∆ − +∆+=+ Mtcáchtngttacókháinimcácsaiphânlùitii: ∇y i=yiyi1 ∇ 2 yi=∇(∇yi)=yi2yi1+yi2 ∇ n yi=∇(∇ n1 yi) vàđathcnisuyNewtonlùikhicácđimnisuycáchđu: n n n 2 nn0n y !n )1nt()1t(t y !2 )1t(t yty)htx(P ∇ −+⋅ ⋅ ⋅ + +⋅⋅⋅+∇ + +∇+=+ Víd:Chohàmnhbngsau: x 0.1 0.2 0.3 0.4 y 0.09983 0.19867 0.29552 0.38942 Tatínhgiátrcahàmti0.14bngđathcnisuyNewtonvìcácmccách đuh=0.1.Tacóbngsaiphânsau: i x y ∆y ∆ 2 y ∆ 3 y 0 0.1 0.09983 0.09884 134 1 0.2 0.198670.00199 0.096850.00096 2 0.3 0.295520.00295 0.09390 3 0.4 0.38942 TadùngcôngthcNewtontinviđimgclàx 0=0.1;h=0.1.Vix= 0.14tacó0.14=0.1+0.1tnênt=0.4vàktqulà: 1395433 6 .000096.0 !3 )2t)(1t(t 00199.0 !2 )1t(t 099884.0.t09983.0)t1.01.0(P = − − − − ++=+ ChngtrìnhnisuyNewtonnhsau: Chngtrình52 //NoisuyNewton #include<conio.h> #include<stdio.h> #include<ctype.h> #definemax11 voidmain() { inti,j,k,n,t; floata[max],b[max],x[max],y[max]; charok; floatx0,p; clrscr(); printf(Sodiemdachon=); scanf(%d,&n); for(i=1;i<=n;i++) { printf(x[%d]=,i); scanf(%f ,&x[i]); printf(y[%d]=,i); scanf(%f,&y[i]); } printf(%10cBANGSOLIEU\n,); 135 printf(%8cx%30cy\n,,); for(i=1;i<=n;i++) printf(%4c%8.4f%23c%8.4f\n,,x[i],,y[i]); ok=; t=0; flushall(); while(t) { printf(Cosuasolieukhong(c/k):); scanf(%c,&ok); if(toupper(ok)==C) { printf(Chisocuaphantucansuai= ); scanf(%d,&i); printf(Giatrimoi:); printf(x[%d]=,i); scanf(%f,&x[i]); printf(y[%d]=,i); scanf(%f,&y[i]); flushall(); } if(toupper(ok)!=C) t=0; } a[1]=y[1]; for(j=1;j<=n1;j++) { for(i=1;i<=nj;i++) y[i]=(y[i+1]y[i])/(x[i+j]x[i]); a[j+1]=y[1]; } b[n]=a[n]; for(k=n1;k>=1;k) { for(j=n1;j>=1;j) b[j]=a[j]; for(i=n1;i>=k;i) a[i]=a[i]b[i+1]*x[k]; 136 } for(i=n;i>=1;i) printf(Hesobac%dla:%8.4f\n,i1,a[i]); printf(\n); k=0; ok=c; flushall(); while(ok==c) { printf(Tinhgiatricuaytaix=); scanf(%f,&x0); p=0; for(k=n;k>=1;k) p=p*x0+a[k]; printf(Trisonoisuytaix0=%4.2fla:%10.5f\n,x0,p); getch(); printf(Bancomuontinhtiepcacdiemkhackhong(c/k)); do scanf(%c,&ok); while((ok!=c)&&(ok!=k)); } } Dùngchngtrìnhnàynisuycác giátrchotrongbngsau 0 0.2 0.4 0.6 0.8 1.0 1 1.22140276 1.4918247 1.8221188 2.22554093 2.71828183 tacócáchscađathcnisuy:0.0139(bc5),0.0349(bc4),0.1704(bc3), 0.4991(bc2),1.0001(bc1)và1.0000(bc0). §3.NISUYAITKEN Mt dng khác cađa thc ni suyđc xácđnh bng thut toán Aitken.Gistacónđimđãchocahàmf(x).Nhvyquahaiđimx 0và x1tacóđathcnisuyLagrangecahàmf(x)đcvitdidng: 01 11 00 01 xx xxy xxy )x(P − − − = làmtđathcbc1: 137 [...]... ng trình: Theo i u ki n o hàm 0 ta nh n ai n am n xim am 1 i 1 n am xim n na 0 yi i 1 xim 1 i 1 n am a0 i 1 xim 2 n am xi xi yi i 1 i 1 x im 1 n n x im 1 i 1 am n 1 1 n a0 i 1 i 1 n n am x m 3 i am i 1 n am x 1 m 2 i a0 i 1 xi2 m n am i 1 1 i 1 x i2 m x 3 i i 1 1 n a0 i 1 n x i2 y i i 1 i 1 n xi2 n xi3 y i i 1 x im n x im y i i 1 ây là m t h ph ng trình tuy n tính Gi i nó ta nh n ai Sau ây là ch ng trình. .. 7 và tính c theo ch ng trình các h s : A = 1285.44 va c = 0.3476 và hàm x p x s là: f(x) = 1285.44 3 Hàm d ng Axq: Khi các s li u th hi n m t s bi n i có th dùng hàm x p x là y = Axq L y logarit hai v ta có: lny = lnA + qlnx Theo i u ki n o hàm tri t tiêu ta có h ph ng trình : n q n ln x i n ln A ln y i i 1 n q i 1 2 ln x i Ch n n ln A i 1 Gi i h ph n i u ta c ng ln x i i 1 ln x i ln y i i 1 ng trình. .. trên s có d ng: 154 Y = A + BX và là m t a th c b c m t.Do v y ta có h ph và B là: n n 1 1 nA B i 1 xi i 1 yi n n n 1 1 1 A B 2 i 1 xi i 1 xi i 1 xi yi và t Ch ó tính c a và b Ch ng trình i v i các h s A ng trình sau mô t thu t toán trên ng trình 5 8 //xap xi huu_ty; #include #include #include #include #define k 11 void main() { float x[k],y[k]; float a,b,a1,b1,c,d,e;... Lagrange qua n i m là: P01 ( n 1) ( x) x 0 x P12 n ( x) x n x P012 n ( x) x2 x0 Nh v y ta có th dùng phép l p xác nh l n l t các a th c Lagrange S tính toán nh v y g i là s Neville Aitken Ví d : Cho các c p i m (0, 0.4), (1.4, 1 .5), (2.6, 1.8), (3.9, 2.6) ,tính y t i x = 2 138 y0 P01 ( x) P12 ( x) P012 ( x) P23 ( x) x0 x 0.4 2 y1 x1 x x1 x 0 y1 x1 x 1.5 0.6 1.4 0 1.5 0.6 y2 x2 x x 2 x1 P01 ( x) x 0 1.8... 8,4 9 9,1 10 9,4 11 9,5 12 9,5 13 9,4 ta có n = 7 và ch n m = 2 và tính c theo ch ng trình các h s : a0 = 0.111905; a1 = 2.545238; a2 = 4.857143 và hàm x p x s là: f(x) = 0.111905 + 2.545238x 4.857143x2 2.Hàm d ng Aecx: Khi các s li u th hi n m t s bi n hàm x p x là y = Aecx L y logarit hai v ta có : lny = lnA + cxlne S 0 ta có h ph ng trình : Theo i u ki n o hàm ai n c n ln A i 1 n Ch ln y i i 1 x i2... yd[j]=(yd[j]*(x1 x[k+1]) yd[j+1]*(x1 x[j]))/(x[j] x[k+1]); } printf( Gia tri ham tai x = %6.3f la y = %8.4f\n ,x1,yd[0]); getch(); } Dùng ch ng trình này (5, 11) t i x = 2.5 ta có y = 6 n i suy các c p s (1, 3), (2, 5), (3, 7), (4, 9) và §4 X P X HÀM B NG PH NG PHÁP BÌNH PH NG BÉ NH T Trong các m c tr c ta ã n i suy giá tr c a hàm Bài toán ó là cho m t hàm d i d ng b ng s và ph i tìm giá tr c a hàm t... ,exp(a)*exp(c*log(x[i]))); } getch(); } V i các giá tr x,y o c theo b ng 150 x y 1 7.1 2 27.8 4 62.1 5 110 6 161 ta có n = 5 và tính c theo ch ng trình các h s : A = 7.1641 và q = 1.9531 và hàm x p x s là: f(x) = 1285.44x1.9531 4 Hàm l ng giác: Khi quan h y = f(x) có d ng tu n hoàn ta dùng hàm x p x là t h p tuy n tính c a các hàm sin và cosin d ng: n f ( x) a 0 n a i cos( i x) i 1 bi sin(i x) i 1 n gi n tr c h t ta xét... x sin x sin x ng trình i v i các h s a0 y cos x sin x a 1 sin 2 x b1 y cos x y sin x Do : sin x cos x 0 0 n n sin 2 x 1 cos 2 x 1 n 2 n 2 cos x sin x 0 n nên h ph ng trình có d ng n gi n : y n 0 0 a0 y cos x 0 n 2 0 a1 y sin x 0 0 n 2 b1 Gi i h ta có : y 2 2 y sin x y cos x b1 a1 a0 n n n Trong tr ng h p t ng quát,m t cách t ng t ta có: y 2 2 ai a0 y cos i x bi y sin i x n n n Ch ng trình tìm các h... cho Ta s dùng ph ng pháp bình ph ng t i thi u gi i bài toán Gi s có m u quan sát (xi,yi ) c a hàm y=f(x) Ta ch n hàm f(x) có d ng : f(x) = a0f0(x) + a1f1(x) + a2f2(x) (1) Trong ó các hàm f0(x), f1(x), f2(x) v.v là (m+1) hàm c l p tuy n tính mà ta có th ch n tu ý và các h s ai là tham s ch a bi t mà ta ph i xác nh d a vào h hàm ã ch n và các i m quan sát Sai s gi a tr o c và tr tính theo (1) là : 140... 2.6 1.4 1.97143 2 x 1.97143 1.65 0.6 P12 ( x) x 2 x x2 x0 2.6 0 1.8 0.6 y2 x2 x 2.6 1.9 y3 x3 x 1.4308 3.9 2.6 x3 x2 P12 ( x) x1 x 1.65 0.6 Ch P23 ( x) x3 P012 ( x) P123 ( x) P0123 ( x) x3 ng trình c vi Ch ng trình 5 3 P123 ( x) x3 x 1.4308 1.9 x1 3.9 1.4 1.7242 2 x0 x 1.5974 1.9 x3 x 3.9 0 x0 t nh sau 1.7242 1.5974 1.6592 //Noi suy Aitken #include #include #include #define . +⋅⋅⋅+++−= Theođiukinđohàm 0 a S i = ∂ ∂ tanhnđchphng trình: ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨ ⎧ =+⋅⋅⋅++ ⋅⋅⋅ =+⋅⋅⋅++ =+⋅⋅⋅++ =+⋅⋅⋅++ =+⋅⋅⋅++ ∑∑∑∑ ∑∑∑∑ ∑∑∑∑ ∑∑∑∑ ∑∑∑ ==== − − ==== + − + ==== + − + ==== − + === − − n 1i i m i n 1i m i0 n 1i n 1i 1m2 i1m m2 im n 1i i 3 i n 1i 3 i0 n 1i n 1i 2m i1m 3m im n 1i i 2 i n 1i 2 i0 n 1i n 1i 1m i1m 2m im n 1i ii n 1i i0 n 1i n 1i m i1m 1m im n 1i i0 n 1i n 1i 1m i1m m im yxxaxaxa yxxaxaxa yxxaxaxa yxxaxaxa ynaxaxa Đâylàmthphng trình tuyn tính. Giinótanhnđccácgíatr a i.Sauđâylàchng trình vittheothuttoántrên. Chng trình 54 //Xapxidathuc #include<conio.h> #include<stdio.h> . ln lt cácđa thc Lagrange.Sđ tính toánnhvygilàsđNevilleAitken. Víd:Chocáccpđim(0,0.4),(1.4,1 .5), (2.6,1.8),(3.9,2.6) ,tính ytix=2 138 97143.1 04.1 6.05.1 24.0 xx xxy xxy )x(P 01 11 00 01 = − − − = − − − =. printf(Giatrihamtaix=%6.3flay=%8.4f
,x1,yd[0]); getch(); } Dùngchng trình nàyđnisuycáccps(1,3),(2, 5), (3,7),(4, 9)và (5,11)tix=2.5tacóy=6. §4.XPXHÀMBNGPHNGPHÁPBÌNHPHNGBÉNHT Trongcácmctrctađãnisuygiátrcahàm.Bàitoánđólàcho mthàmdidngbngsvàphitìmgiátrcahàmtimtgiátrcađi skhôngnmtrongbng.