ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 2004, 3 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #5: ΑΡΙΘΜΗΤΙΚΗ ΟΛΟΚΛΗΡΩΣΗ Επιμέλεια: ΓΙΑΝΝΗΣ ΛΥΧΝΑΡΟΠΟΥΛΟΣ Άσκηση 1 Δίνοντας το ολοκλήρωμα στη Mathematica παίρνουμε την τιμή του: 0 40 100 140558 z 2z 15 z N 3 z Το πρόγραμμα σε Fortran για την ολοκλήρωση με τη μέθοδο του Τραπεζίου είναι το ακόλουθο: Program trapeziou implicit none end real a,b,x,s,h,i,f,z integer k,n F(z)=(100*Exp((2*z)/15.)*z)/(3 + z) n=5 a=0 b=40 h=(b-a)/n s=0 do k=1,n-1 x=a+k*h s=s+f(x) i=(f(a)+2*s+f(b))*h/2 print*,'i= ',i Το οποίο δίνει τα παρακάτω αποτελέσματα για διάφορες τιμές του Ν Ν I 5 154033.3 10 143971.0 20 141414.2 50 140695.5 100 140592.8 500 140559.9 1000 140558.8 1
Το πρόγραμμα σε Fortran για την ολοκλήρωση με τον πρώτο κανόνα του Simpson είναι το ακόλουθο: Program simpson_rule1 implicit none end real a,b,x,s_odd,s_even,h,i,f,z integer k,n F(z)=(100*Exp((2*z)/15.)*z)/(3 + z) n=100 a=0 b=40 h=(b-a)/n s_odd=0 do k=1,n-1,2 x=a+k*h s_odd=s_odd+f(x) s_even=0 do k=2,n-2,2 x=a+k*h s_even=s_even+f(x) i=(f(a)+4*s_odd+2*s_even+f(b))*h/3 print*,'i= ',i Το οποίο δίνει τα παρακάτω αποτελέσματα για διάφορες τιμές του Ν Ν I 5 80686.91 10 140617.0 20 140561.9 50 140558.6 100 140558.5 Οπότε χρειαστήκαμε το 1/10 των επαναλήψεων για να πετύχουμε την ίδια προσέγγιση Για να βρούμε το σημείο στο οποίο ασκείται η δύναμη θα εφαρμόσουμε τον τύπο: 40 40 2z M z 15 z, όπου F το δοσμένο ολοκλήρωμα και M zf ( z) dz z100( ) e dz F 3 z Άρα αρκεί να υπολογίσουμε το Μ. 0 0 2
Με τη χρήση της Mathematica παίρνουμε: 40 z 2z z 100 15 z N 0 3 z 4632676 Επίσης με το προηγούμενο πρόγραμμα σε Fortran για τον πρώτο κανόνα Simpson παίρνουμε για n=100 το ακόλουθο αποτέλεσμα: I= 4632677 Άρα 4632677 z 32.959 140558.5 Άσκηση 2 a) Επειδή το ολοκλήρωμα είναι της μορφής x f ( xe ) dxμε 0 f ( x) χρησιμοποιήσουμε τη μέθοδο ολοκλήρωσης Gauss Laguerre 20 σημείων. Θα πρέπει να υπολογίσουμε το άθροισμα: 19 i0 n 1 x επιλέγουμε να wf( x) όπου xi είναι οι ρίζες του πολυωνύμου Laguerre 20 ης τάξης και w i τα αντίστοιχα βάρη. Χρησιμοποιώντας τη Mathematica για τους υπολογισμούς παίρνουμε το ακόλουθο πρόγραμμα: i i Οι ρίζες του πολυωνύμου Laguerre 20 ης x={0.07053988969, 0.372126818, 0.9165821024, 1.707306531, 2.749199255, 4.048925313, 5.615174970, 7.459017453, 9.594392869, 12.03880254, 14.81429344, 17.94889552, 21.47878824, 25.45170279, 29.93255463, 35.01343424, 40.83305705, 47.61999404, 55.81079575, 66.52441652}; τάξης 3
Τα αντίστοιχα βάρη w 0.1687468018, 0.2912543620, 0.2666861028, 0.1660024532, 0.7482606466 10 1, 0.2496441730 10 1, 0.6202550844 10 2, 0.1144962386 10 2, 0.155741773 10 3, 0.1540144086 10 4, 0.1086486366 10 5, 0.5330120909 10 7, 0.1757981179 10 8, 0.3725502402 10 10, 0.4767529251 10 12, 0.3372844243 10 14, 0.1155014339 10 16, 0.153952214 10 19, 0.5286442725 10 23, 0.1656456612 10 27 ; Δημιουργία της συνάρτησης g(n) = Γ(n) g[n_]:=scientificform[apply[plus,x^(n-1) w]] Υπολογισμός της g(n) για n από 1 μέχρι 57 Table[g[i],{i,1,57}] 1., 1., 2., 6., 2.4μ10 1,1.2μ10 2,7.2μ10 2,5.04μ10 3, 4.032μ10 4, 3.6288μ10 5, 3.6288μ10 6, 3.99168μ10 7, 4.79002μ10 8, 6.22702μ10 9, 8.71783 μ10 10, 1.30767μ10 12, 2.09228μ10 13, 3.55687μ10 14, 6.40237μ10 15, 1.21645 μ10 17, 2.4329 μ10 18, 5.10909μ10 19, 1.124 μ10 21,2.5852μ10 22, 6.20448μ10 23, 1.55112μ10 25, 4.03291μ10 26, 1.08889 μ10 28, 3.04888μ10 29, 8.84176μ10 30, 2.65253μ10 32, 8.22284 μ10 33, 2.63131 μ10 35, 8.68332μ10 36, 2.95233μ10 38, 1.03331μ10 40, 3.71993μ10 41, 1.37638 μ10 43, 5.23023 μ10 44, 2.03979μ10 46, 8.15915μ10 47, 3.34525μ10 49, 1.40501μ10 51, 6.04153 μ10 52, 2.65827 μ10 54, 1.19622μ10 56, 5.50262μ10 57, 2.58622μ10 59, 1.24138μ10 61, 6.08264 μ10 62, 3.04119 μ10 64, 1.55086μ10 66, 8.06293μ10 67, 4.27178μ10 69, 2.30522μ10 71, 1.26641 μ10 73, 7.07843 μ10 74 4
Υπολογισμός της Gamma(n) για n από 1 μέχρι 57 Table[ScientificForm[Gamma[i]/1.],{i,1,57}] 1., 1., 2., 6., 2.4μ10 1,1.2μ10 2,7.2μ10 2,5.04μ10 3, 4.032μ10 4, 3.6288μ10 5, 3.6288μ10 6, 3.99168μ10 7, 4.79002μ10 8, 6.22702μ10 9, 8.71783 μ10 10, 1.30767μ10 12, 2.09228μ10 13, 3.55687μ10 14, 6.40237μ10 15, 1.21645 μ10 17, 2.4329 μ10 18, 5.10909μ10 19, 1.124 μ10 21,2.5852μ10 22, 6.20448μ10 23, 1.55112μ10 25, 4.03291μ10 26, 1.08889 μ10 28, 3.04888μ10 29, 8.84176μ10 30, 2.65253μ10 32, 8.22284 μ10 33, 2.63131 μ10 35, 8.68332μ10 36, 2.95233μ10 38, 1.03331μ10 40, 3.71993μ10 41, 1.37638 μ10 43, 5.23023 μ10 44, 2.03979μ10 46, 8.15915μ10 47, 3.34525μ10 49, 1.40501μ10 51, 6.04153 μ10 52, 2.65827 μ10 54, 1.19622μ10 56, 5.50262μ10 57, 2.58623μ10 59, 1.24139μ10 61, 6.08282 μ10 62, 3.04141 μ10 64, 1.55112μ10 66, 8.06582μ10 67, 4.27488μ10 69, 2.30844μ10 71, 1.26964 μ10 73, 7.10999 μ10 74 Συγκρίνοντας τους δύο παραπάνω πίνακες παρατηρούμε ότι η επιθυμητή ακρίβεια τριών σημαντικών ψηφίων διατηρείται μέχρι n=56 ενώ χάνεται για n>56. b) Για να αποδείξουμε αριθμητικά ότι Γ(n+1) = nγ(n) ή ισοδύναμα ότι Γ(n) = (n-1)γ(n-1) θα κάνουμε μερικές δοκιμές για διάφορα n. Από τον πρώτο πίνακα (του g(n)) παίρνουμε: n Γ(n) n-1 Γ(n-1) (n-1)γ(n-1) 5 24 4 6 24 Ισχύει 8 5040 7 720 5040 Ισχύει 14 6.22702 x 10 9 13 4.79002 x 10 8 6.22702 x 10 9 Ισχύει κ.τ.λ. Άσκηση 3 Ι= 21.5 1.4 1 ln( x 2 y) dydx Δίνοντας το ολοκλήρωμα στη Mathematica παίρνουμε την τιμή του: 2 1.5 Logx 2yyx 1.4 1 0.429555 To πρόγραμμα σε Fortran το οποίο υπολογίζει το παραπάνω διπλό ολοκλήρωμα με τη μέθοδο του τραπεζίου είναι το ακόλουθο: Program trapeziou_double implicit none real ax,bx,x,y,ay,by,iy,ixy,f,dx,dy,sx,sy,s1,s2,a,b integer k,nx,ny,l F(x,y)=Log(x+2*y) 5
ay=1.0 by=1.5 dy=0.25 ny=(by-ay)/dy ax=1.4 bx=2.0 dx=0.15 nx=(bx-ax)/dx sx=0 do k=1,nx-1 x=ax+k*dx end sy=0 do l=1,ny-1 sy=sy+f(x,y) iy=(f(x,ay)+2*sy+f(x,by)) sx=sx+iy s1=0 do l=1,ny-1 s1=s1+f(ax,y) a=(f(ax,ay)+2*s1+f(ax,by)) s2=0 do l=1,ny-1 s2=s2+f(bx,y) b=(f(bx,ay)+2*s1+f(bx,by)) ixy=(a+2*sx+b)*dx*dy/4 print*,'i= ',ixy Το οποίο δίνει αποτέλεσμα: I= 0.4264779 (Ακρίβεια σε 2 σημαντικά ψηφία!) 6
To πρόγραμμα σε Fortran το οποίο υπολογίζει το παραπάνω διπλό ολοκλήρωμα με τη μέθοδο του πρώτου κανόνα του Simpson είναι το ακόλουθο: Program simpson_rule1_double implicit none real ax,bx,x,y,ay,by,iy,ixy,f,dx,dy,sx_odd,sx_even,sy_odd,sy_even,s1_odd,s1_e ven,s2_odd,s2_even,a,b integer k,nx,ny,l F(x,y)=Log(x+2*y) ay=1.0 by=1.5 dy=0.25 ny=(by-ay)/dy ax=1.4 bx=2.0 dx=0.15 nx=(bx-ax)/dx sx_odd=0 do k=1,nx-1,2 x=ax+k*dx sy_odd=0 do l=1,ny-1,2 sy_odd=sy_odd+f(x,y) sy_even=0 do l=2,ny-2,2 sy_even=sy_even+f(x,y) iy=(f(x,ay)+4*sy_odd+2*sy_even+f(x,by)) sx_odd=sx_odd+iy sx_even=0 do k=2,nx-1,2 x=ax+k*dx sy_odd=0 do l=1,ny-1,2 sy_odd=sy_odd+f(x,y) sy_even=0 do l=2,ny-2,2 7
end sy_even=sy_even+f(x,y) iy=(f(x,ay)+4*sy_odd+2*sy_even+f(x,by)) sx_even=sx_even+iy s1_odd=0 do l=1,ny-1,2 s1_odd=s1_odd+f(ax,y) s1_even=0 do l=2,ny-2,2 s1_even=s1_even+f(ax,y) a=(f(ax,ay)+4*s1_odd+2*s1_even+f(ax,by)) s2_odd=0 do l=1,ny-1,2 s2_odd=s2_odd+f(bx,y) s2_even=0 do l=2,ny-2,2 s2_even=s2_even+f(bx,y) b=(f(bx,ay)+4*s2_odd+2*s2_even+f(bx,by)) ixy=(a+4*sx_odd+2*sx_even+b)*dx*dy/9 print*,'i= ',ixy Το οποίο δίνει αποτέλεσμα: I= 0.4295525 (Ακρίβεια σε 5 σημαντικά ψηφία!) 8
Άσκηση 4 Θέλουμε να υπολογίσουμε το ολοκλήρωμα: 2 y z 1 x, οπότε έχουμε 1 1 2 2 2 2 x z (1 x ) 1x dz dx 11 Θέτουμε I 2 1 1 x 2 2 I x y dy dx 1 2 1 x 2. dy 1x dz και το ολοκλήρωμα γίνεται: Χρησιμοποιώντας τη Mathematica βρίσκουμε την τιμή του ολοκληρώματος: 1 1 x 2 z 2 1 x 2 1 x 2 zx N 1 1 2.0944 Χρησιμοποιώντας το πρόγραμμα σε Fortran της προηγούμενης άσκησης για τον 1o κανόνα του Simpson και αλλάζοντας την αρχή του σε: F(x,y)=Sqrt(1 - x**2)*sqrt(x**2 + (1 - x**2)*y**2) ay=-1.0 by=1.0 ny=1000 dy=(by-ay)/ny ax=-1.0 bx=1.0 nx=1000 dx=(bx-ax)/nx παίρνουμε για διάφορες τιμές των nx, ny (επιλέγουμε nx=ny): nx,ny I 2 0.8888889 4 1.929034 8 2.036266 16 2.073908 32 2.087175 64 2.091849 128 2.093496 256 2.094078 512 2.094283 1024 2.094355 9
Άσκηση 5 To ολοκλήρωμα γράφεται ισοδύναμα: 2 2 2 6 4 2 x y z I x y z e dx dy dz 2 2 2 2 2 2 6 x 4 y 2 z 6 x 4 y 2 z I ( x e )( y e )( z e ) dx dy dz x e dx y e dy z e dz Άρα με ολοκλήρωση Gauss-Hermite θα έχουμε: n1 n1 n1 6 4 2 i i i i i i i0 i0 i0 I ( wx ) ( wx ) ( wx ) όπου x i οι ρίζες του πολυωνύμου Hermite n-oστού βαθμού και w i τα αντίστοιχα βάρη Η τιμή του πολυωνύμου στη Mathematica είναι: x 6 y 4 z 2 x 2 y 2 z 2 xyz N 3.91523 Για n=2 x={-0.70711,0.70711}; w={0.88623,0.88623}; a ApplyPlus, x 6 w 0.221564 b ApplyPlus, x 4 w 0.443123 c ApplyPlus, x 2 w 0.886238 a b c 0.0870108 Για n=4 x={-1.65068,1.65068,-0.52465,0.52465}; w={0.08131,0.08131,0.80491,0.80491}; a ApplyPlus, x 6 w 3.32324 b ApplyPlus, x 4 w 1.3293 c ApplyPlus, x 2 w 0.886213 a b c 3.91491 Για n=8 x={-0.381187,0.381187,-1.15719,1.15719,-1.98166,1.98166,- 2.93064,2.93064}; w={0.661147,0.661147,0.207802,0.207802,0.01707798,0.01707798,0.000199604 1,0.0001996041}; a ApplyPlus, x 6 w 10
3.32335 b ApplyPlus, x 4 w 1.32933 c ApplyPlus, x 2 w 0.886223 a b c 3.91519 Άρα συνοψίζοντας τα αποτελέσματα έχουμε: N I 2 0.0870108 4 3.91491 8 3.91519 Άσκηση 6 Έστω ότι διαιρούμε το διάστημα [a,b] σε n υποδιαστήματα με n πολλαπλάσιο b a b a του 3 δηλ n=3κ. Τότε θα έχουμε h. n 3 Αν εφαρμόσουμε το δεύτερο κανόνα Simpson σε κάθε υποδιάστημα το οποίο αποτελείται από 4 σημεία δηλ: [x 3i, x 3i+3 ], i=0,1, παίρνουμε: 3( b a) ( f0 3 f1 3 f2 2 f3 3 f4 3 f5 2 f6... 3 fn 1fn ) 83 ( b a) ( f0 3 f1 3 f2 2 f3 3 f4 3 f5 2 f6... 3 fn 1 fn ) 8 ο οποίος είναι και ο τύπος που πρέπει να αποδείξουμε. b a Για παράδειγμα αν κ=2 δηλ. n=6 και h 6 τότε ο δεύτερος κανόνας Simpson στα υποδιαστήματα [x 0,x 3 ] και [x 3,x 6 ] δίνει: 3( ba) 3( ba) ( f0 3f13 f2 f3) ( f33f4 3 f5 f6) 86 86 ( b a) ( f0 3 f1 3 f2 f3 f3 3 f4 3 f5 f6 ) 16 ( b a) ( f0 3 f1 3 f2 2 f3 3 f4 3 f5 f6 ) 16 11