mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-15 06:52:39 +02:00
adding file for gaussian-kronrod integration, test cases and calculating gradients of log marginal wrt theta-likelihood params
This commit is contained in:
parent
19598cf807
commit
ae27e1225d
5 changed files with 269 additions and 4 deletions
39
GPy/testing/quadrature_tests.py
Normal file
39
GPy/testing/quadrature_tests.py
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
from __future__ import print_function, division
|
||||
import numpy as np
|
||||
import GPy
|
||||
import warnings
|
||||
from ..util.quad_integrate import quadgk_int, quadvgk
|
||||
|
||||
|
||||
|
||||
class QuadTests(np.testing.TestCase):
|
||||
"""
|
||||
test file for checking implementation of gaussian-kronrod quadrature.
|
||||
we will take a function which can be integrated analytically and check if quadgk result is similar or not!
|
||||
through this file we can test how numerically accurate quadrature implementation in native numpy or manual code is.
|
||||
"""
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
def test_infinite_quad(self):
|
||||
def f(x):
|
||||
return np.exp(-0.5*x**2)*np.power(x,np.arange(3)[:,None])
|
||||
quad_int_val = quadgk_int(f)
|
||||
real_val = np.sqrt(np.pi * 2)
|
||||
np.testing.assert_almost_equal(real_val, quad_int_val[0], decimal=7)
|
||||
|
||||
def test_finite_quad(self):
|
||||
def f2(x):
|
||||
return x**2
|
||||
quad_int_val = quadvgk(f2, 1.,2.)
|
||||
real_val = 7/3.
|
||||
np.testing.assert_almost_equal(real_val, quad_int_val, decimal=5)
|
||||
|
||||
if __name__ == '__main__':
|
||||
def f(x):
|
||||
return np.exp(-0.5 * x ** 2) * np.power(x, np.arange(3)[:, None])
|
||||
|
||||
quad_int_val = quadgk_int(f)
|
||||
real_val = np.sqrt(np.pi*2)
|
||||
np.testing.assert_almost_equal(real_val, quad_int_val[0], decimal=7)
|
||||
print(quadgk_int(f))
|
||||
Loading…
Add table
Add a link
Reference in a new issue