Quadrature
A structure that approximates the definite integral of a function over a finite interval.
Declaration
struct QuadratureOverview
The following code illustrates using a Quadrature structure to calculate the area under a curve, defined by y = sqrt(radius * radius - pow(x - radius, 2)):
let quadrature = Quadrature(integrator: .qags(maxIntervals: 10),
absoluteTolerance: 1.0e-8,
relativeTolerance: 1.0e-2)
let result = quadrature.integrate(over: 0.0 ... 25.0) { x in
let radius: Double = 12.5
return sqrt(radius * radius - pow(x - radius, 2))
}
switch result {
case .success(let integralResult, let estimatedAbsoluteError):
print("quadrature success:", integralResult,
estimatedAbsoluteError)
case .failure(let error):
print("quadrature error:", error.errorDescription)
}Alternatively, you can integrate over a function that uses vectors for its source and destination. For example:
func vectorExp(x: UnsafeBufferPointer<Double>,
y: UnsafeMutableBufferPointer<Double>) {
let radius: Double = 12.5
for i in 0 ..< x.count {
y[i] = sqrt(radius * radius - pow(x[i] - radius, 2))
}
}
let vRresult = quadrature.integrate(over: 0.0 ... diameter,
integrand: vectorExp)