Całkow anie metodą złożona
Transkrypt
Całkow anie metodą złożona
Przykład działania cos x − ex dx = [sin x − ex ]ba = -5.270409545170418041948323661927 = -5.270408246125629858624961343594 = 0.000001299044788183323362318333 4 Przy czym int38 oznacza wartość policzoną metodą złożoną 38 natomiast int wartość rzeczywistą całki, natomiast d moduł różnicy int oraz int38. a = -1 b = 2 n = 15 int38 int d Oto przykładowy wynik działania programu: 3.2 a Z b cos xex dx Metoda Simpsona Opis metody 3 8 gdzie h = b−a . 3 1 Metoda ta opiera się na wzorze na wielomian interpolacyjny zbudowany dla czterech równo odległych węzłów w przedziale [a, b]. Zachodzi wzór: Z b 3 f (x)dx ≈ h f (a) + 3f (a + h) + 3f (a + 2h) + f (b) 8 a 2.1 2 dla zadanych a i b złożoną metodą 83 . Wynik porównać z dokładnym wyliczeniem całki. a Z b Treść zadania Policzyć całkę: 1 15 grudnia 2005 Witold Bołt Całkowanie metodą złożona 38 . 2.2 Metoda złożona Simpsona Kod programu Rozwiązanie 3 8 Metoda ta jest rozszerzeniem metody opisanej w poprzednim punkcie. Polega ona na tym, że dany przedział [a, b] dzielimy najpierw na n równych kawałków a następnie na każdym z nich stosujemy wzór metody 38 . 3 3.1 Program implementujący metodę złożoną Simposona 3 , zwaną po prostu metodą złożoną 38 , jest bardzo pro8 stym programem napisanym w C. Oto jego kod źródłowy: // gcc int38.c -o int38 -Wall --std=c99 -lm #include <math.h> #include <stdio.h> // funkcja podcałkowa double f(double x) { return(cos(x)-exp(x)); } // wartość rzeczywista całki double If(double a, double b) { return(sin(b)-exp(b)-sin(a)+exp(a)); } // metoda 3/8 2 double I38f(double a, double b) { return( (b-a)/8*(f(a) + 3*f(a+(b-a)/3) + 3*f(a+2*(b-a)/3) + f(b)) ); } printf("d \t= %.30lf\n",fabs(intf-int38)); return(0); double intf = If(a,b); printf("int \t= %.30lf\n",intf); printf("int38 \t= %.30lf\n",int38); } for(int i=0;i<n;i++) { int38+=I38f(a+h*i,a+h*(i+1)); h = (b-a)/n; printf("a = "); scanf("%lf",&a); printf("b = "); scanf("%lf",&b); printf("n = "); scanf("%d",&n); int main() { double a,b,h,int38=0; int n; } Rozwiązanie to do policzenia rzeczywistej wartości całki korzysta z oczywistego faktu: 3