Temat 21: Całkowanie numeryczne
Wstecz; Ostatnia modyfikacja: 22.05.2015
- Ćwiczenie 1: zaimplementuj funkcję integrate(f,a,b,h=0.0001),
która całkuje funkcję na przedziale (a,b), apkoksymując funkcję f przy pomocy
(i) prostokątów, (ii) trapezów, (iii) parabol (metoda Simpsona).
- Ćwiczenie 2: wykorzystaj do całkowania numerycznego funkcję
quad z modułu scipy.integrate
. Porównaj wyniki dla całek:
- $\int_0^2e^xdx$, $\int_{98}^{100}e^xdx$, $\int_{0}^{\pi} sin(x)dx$,
$\int_{-\pi}^{\pi} sin(x)dx$
- Ćwiczenie 3: zoptymalizuj następującą
funkcję liczącą całkę numeryczną metodą trapezów.
Uwaga: kod działania poniższego programu da się
zredukować ponad pięciokrotnie.
def integrate2(f, a, b, n=200000):
x = np.linspace(a,b,n)
h = x[1]-x[0]
fs = 0.0
for i in range(n-1):
fs += (f(x[i]) + f(x[i+1]))
fs *= h / 2
return fs
r2 = integrate2(f, 0, 2, n=1000000)
print(r2)
Kod z ćwiczeń