Mam taką całkę: \(\displaystyle{ \int_{1}^{\infty} t^{-n} e^{-xt} dt = E_{n} (x)}\)
Jest to funkcja, której zadaje się z góry parametry \(\displaystyle{ n}\) i \(\displaystyle{ x}\), a ona zwraca wartość. Potrzebuję ją zaprogramować numerycznie, zdecydowałam się na metodę trapezów wedle wzoru:
\(\displaystyle{ \frac{h}{2} \sum_{i=1}^{ \infty } (f_{x_{i}} + f_{x_{i+1}} )}\)
Gdzie \(\displaystyle{ h}\) oznacza krok między zmiennymi, a funkcje \(\displaystyle{ f}\) oznaczają funkcję podcałkową. Zaprogramowałam i właśnie - liczy, ale źle. Stąd moje pytanie, czy to pomysł jest zły, czy może w kodzie jest błąd? Metoda działała dobrze dla prostych całek typu \(\displaystyle{ x^{-2}}\).
Załączam także kod i pozdrawiam serdecznie.
Kod: Zaznacz cały
subroutine Expo(n,x,E)
real :: E, A, B1, B2, x, t, zmienna
integer :: n, i
t = 1.0
E = 0.0
i = 0
A = (t**(-n))*(exp(-x*t))
zmienna = 0.0001 * A
do
i = i+1
B1 = (t**(-n))*(exp(-x*t))
t = t + 0.01
B2 = (t**(-n))*(exp(-x*t))
E = E + B1 + B2
if(B2.lt.zmienna) then
exit
end if
end do
write(*,*) i
E = E * 0.01 / 2
end subroutine