Contents

Quadrature

A structure that approximates the definite integral of a function over a finite interval.

Declaration

struct Quadrature

Overview

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)

Topics

Initializers

Instance Properties

Instance Methods

Structures

Enumerations

Type Aliases

See Also

Quadrature