Extensions:
symbolic
argument).sp.Integral
is returned from sp.integrate
).
def least_squares_orth(f, psi, Omega, symbolic=True):
...
for i in range(N+1):
# Diagonal matrix term
A[i] = sp.integrate(psi[i]**2, (x, Omega[0], Omega[1]))
# Right-hand side term
integrand = psi[i]*f
if symbolic:
I = sp.integrate(integrand, (x, Omega[0], Omega[1]))
if not symbolic or isinstance(I, sp.Integral):
print 'numerical integration of', integrand
integrand = sp.lambdify([x], integrand)
I = sp.mpmath.quad(integrand, [Omega[0], Omega[1]])
b[i] = I
...
Assumption above: \( \int_\Omega\basphi_i^2dx \) works symbolically (but there is no guarantee!)