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

Podobne dokumenty