Skip to main content

Numerical Integration Ontology

Integral Calculus
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 23 September 2026
Audio Overview
flow "NumericalIntegrationOntology" v1.0

# ============================================================
# NUMERICAL INTEGRATION ONTOLOGY — FLOW ALGEBRA
# ============================================================

SOURCE_URL := "https://kirethresearch.org/booksai-core/ontologies/calculus-analysis-ontologies/integral-calculus/numerical-integration-ontology-3.html"
DOMAIN := "Mathematical Ontologies"
CATEGORY := "Calculus and Analysis Ontologies"
SUBCATEGORY := "Integral Calculus"
ENTITY := "Numerical Integration"

# ---------- CORE ENTITY ----------
NUMERICAL_INTEGRATION := {
    type: NumericalMethodFramework,
    domain: NumericalAnalysis,
    purpose: "Approximate definite integrals using finite evaluations of an integrand when exact symbolic integration is unavailable, impractical or unnecessary."
}

# ---------- CORE CONCEPTS ----------
CONCEPTS := {
    DEFINITE_INTEGRAL,
    QUADRATURE,
    INTEGRAND,
    INTERVAL,
    NODE,
    WEIGHT,
    STEP_SIZE,
    RECTANGLE_RULE,
    MIDPOINT_RULE,
    TRAPEZOIDAL_RULE,
    SIMPSON_RULE,
    GAUSSIAN_QUADRATURE,
    ADAPTIVE_QUADRATURE,
    ERROR_ESTIMATE,
    CONVERGENCE
}

# ---------- BASIC STRUCTURE ----------
TARGET_INTEGRAL
    := integral_from_a_to_b(
        f(x) dx
    )

NUMERICAL_INTEGRATION
    -> approximates(TARGET_INTEGRAL)

QUADRATURE_FORMULA
    := sum(
        w_i * f(x_i),
        i=1..n
    )

x_i
    -> QUADRATURE_NODES

w_i
    -> QUADRATURE_WEIGHTS

# ---------- DISCRETISATION ----------
INTERVAL
    := [a,b]

PARTITION
    := a = x_0 < x_1 < ... < x_n = b

STEP_SIZE_i
    := x_i - x_(i-1)

UNIFORM_PARTITION
    -> STEP_SIZE
       = (b-a)/n

DISCRETISATION
    -> converts(CONTINUOUS_INTEGRAL, FINITE_SUM)

# ---------- LEFT RECTANGLE RULE ----------
LEFT_RECTANGLE_RULE
    := sum(
        f(x_(i-1)) * DELTA_X_i,
        i=1..n
    )

LEFT_RECTANGLE_RULE
    -> samples(LEFT_ENDPOINTS)

# ---------- RIGHT RECTANGLE RULE ----------
RIGHT_RECTANGLE_RULE
    := sum(
        f(x_i) * DELTA_X_i,
        i=1..n
    )

RIGHT_RECTANGLE_RULE
    -> samples(RIGHT_ENDPOINTS)

# ---------- MIDPOINT RULE ----------
MIDPOINT_i
    := (x_(i-1)+x_i)/2

MIDPOINT_RULE
    := sum(
        f(MIDPOINT_i) * DELTA_X_i,
        i=1..n
    )

MIDPOINT_RULE
    -> samples(SUBINTERVAL_MIDPOINTS)

# ---------- TRAPEZOIDAL RULE ----------
for uniform spacing h:

TRAPEZOIDAL_RULE
    := h * [
        1/2*f(x_0)
        + sum(f(x_i), i=1..n-1)
        + 1/2*f(x_n)
    ]

TRAPEZOIDAL_RULE
    -> approximates(INTEGRAND_BY_PIECEWISE_LINEAR_INTERPOLATION)

# ---------- SIMPSON RULE ----------
for
    n even
    AND uniform spacing h=(b-a)/n

SIMPSON_RULE
    := h/3 * [
        f(x_0)
        + 4*sum(f(x_i), i odd)
        + 2*sum(f(x_i), i even interior)
        + f(x_n)
    ]

SIMPSON_RULE
    -> uses(PIECEWISE_QUADRATIC_APPROXIMATION)

# ---------- GAUSSIAN QUADRATURE ----------
GAUSSIAN_QUADRATURE
    := sum(
        w_i * f(x_i),
        i=1..n
    )

GAUSSIAN_NODES
    -> selected_to(MAXIMISE_POLYNOMIAL_EXACTNESS)

GAUSS_LEGENDRE_QUADRATURE
    -> standard_for(INTERVAL_MINUS_ONE_TO_ONE)
       with(UNIT_WEIGHT_FUNCTION)

N_POINT_GAUSSIAN_RULE
    -> exact_for(POLYNOMIALS_UP_TO_DEGREE_2n_MINUS_1)
       under(STANDARD_GAUSS_LEGENDRE_CONDITIONS)

# ---------- INTERVAL TRANSFORMATION ----------
for
    x in [a,b]

map
    t in [-1,1]

using

x
    = (a+b)/2
      + (b-a)/2 * t

dx
    = (b-a)/2 dt

INTERVAL_TRANSFORMATION
    -> enables(STANDARD_GAUSSIAN_RULES)

# ---------- ADAPTIVE QUADRATURE ----------
ADAPTIVE_QUADRATURE
    -> estimates(LOCAL_ERROR)
    -> subdivides(REGIONS_WITH_HIGH_ERROR)
    -> allocates(MORE_EVALUATIONS_WHERE_NEEDED)

ADAPTIVE_METHOD
    -> recursively_refines(INTERVAL)

STOPPING_CONDITION
    -> based_on(ERROR_TOLERANCE)

# ---------- ERROR ----------
NUMERICAL_RESULT
    := I_approx

TRUE_INTEGRAL
    := I

ABSOLUTE_ERROR
    := abs(I - I_approx)

RELATIVE_ERROR
    := abs(I - I_approx)/abs(I)
       when(I != 0)

ERROR_ESTIMATE
    -> may_be_computed_without(EXACT_I)

# ---------- TRUNCATION ERROR ----------
TRUNCATION_ERROR
    -> arises_from(FINITE_APPROXIMATION)

ROUNDING_ERROR
    -> arises_from(FINITE_PRECISION_ARITHMETIC)

TOTAL_NUMERICAL_ERROR
    -> influenced_by(TRUNCATION_ERROR)
    -> influenced_by(ROUNDING_ERROR)

# ---------- CONVERGENCE ----------
if
    approximation_sequence I_n
    satisfies

I_n -> I
    as
    step_size -> 0

then

NUMERICAL_METHOD
    -> CONVERGENT

CONVERGENCE_RATE
    -> describes(ERROR_DECAY_WITH_REFINEMENT)

# ---------- COMPOSITE RULES ----------
COMPOSITE_QUADRATURE
    -> applies(BASE_RULE_OVER_MULTIPLE_SUBINTERVALS)

COMPOSITE_TRAPEZOIDAL_RULE
    -> sum_of(LOCAL_TRAPEZOIDS)

COMPOSITE_SIMPSON_RULE
    -> sum_of(LOCAL_SIMPSON_PANELS)

COMPOSITE_METHOD
    -> improves(RESOLUTION)

# ---------- FUNCTION EVALUATION COST ----------
COMPUTATIONAL_COST
    -> depends_on(NUMBER_OF_FUNCTION_EVALUATIONS)

EXPENSIVE_INTEGRAND
    -> motivates(EFFICIENT_NODE_SELECTION)

NUMERICAL_INTEGRATION
    -> balances(ACCURACY, COMPUTATIONAL_COST)

# ---------- SINGULAR / IMPROPER CASES ----------
IMPROPER_INTEGRAL
    -> may_require(TRANSFORMATION)
    -> may_require(DOMAIN_TRUNCATION)
    -> may_require(SPECIALISED_QUADRATURE)

SINGULAR_INTEGRAND
    -> may_reduce(STANDARD_METHOD_ACCURACY)

NUMERICAL_METHOD
    -> must_respect(INTEGRAND_BEHAVIOUR)

# ---------- OSCILLATORY INTEGRALS ----------
HIGHLY_OSCILLATORY_INTEGRAND
    -> may_require(SPECIALISED_METHOD)

STANDARD_UNIFORM_QUADRATURE
    -> may_be(INEFFICIENT_FOR_RAPID_OSCILLATION)

METHOD_SELECTION
    -> depends_on(INTEGRAND_STRUCTURE)

# ---------- MULTIDIMENSIONAL EXTENSION ----------
MULTIDIMENSIONAL_NUMERICAL_INTEGRATION
    -> may_use(PRODUCT_QUADRATURE)
    -> may_use(MONTE_CARLO_INTEGRATION)
    -> may_use(SPARSE_GRIDS)
    -> may_use(ADAPTIVE_METHODS)

DIMENSION
    -> affects(COMPUTATIONAL_COMPLEXITY)

# ---------- MONTE CARLO RELATION ----------
MONTE_CARLO_INTEGRATION
    -> estimates(INTEGRAL_BY_RANDOM_SAMPLING)

MONTE_CARLO_ERROR
    -> typically_scales_as(1/sqrt(N))
       under(STANDARD_INDEPENDENT_SAMPLING_ASSUMPTIONS)

MONTE_CARLO
    -> useful_in(HIGH_DIMENSIONS)

# ---------- VERIFICATION ----------
NUMERICAL_RESULT
    -> may_be_checked_by(
        MESH_REFINEMENT,
        METHOD_COMPARISON,
        ERROR_ESTIMATE,
        KNOWN_SPECIAL_CASE
    )

RELIABILITY
    -> increases_with(CONSISTENT_CONVERGENCE_EVIDENCE)

# ---------- APPLICATIONS ----------
NUMERICAL_INTEGRATION
    -> applied_to(SCIENTIFIC_COMPUTING)
    -> applied_to(ENGINEERING)
    -> applied_to(PHYSICS)
    -> applied_to(PROBABILITY)
    -> applied_to(FINANCE)
    -> applied_to(DIFFERENTIAL_EQUATIONS)
    -> applied_to(DATA_ANALYSIS)

# ---------- RELATION GRAPH ----------
DEFINITE_INTEGRAL
    -> approximated_by(NUMERICAL_INTEGRATION)

PARTITION
    -> defines(DISCRETISATION)

NODES
    + WEIGHTS
    -> define(QUADRATURE_RULE)

REFINEMENT
    -> reduces(TRUNCATION_ERROR)
       under(CONVERGENT_METHOD_ASSUMPTIONS)

ADAPTIVE_QUADRATURE
    -> targets(LOCAL_ERROR)

GAUSSIAN_QUADRATURE
    -> optimises(POLYNOMIAL_EXACTNESS)

ERROR_ESTIMATE
    -> controls(STOPPING_CRITERION)

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE := {
    "numerical integration" ~= "numerical approximation of definite integrals",
    "quadrature" ~= "numerical integration in standard one-dimensional terminology",
    "integration nodes" ~= "sample points used by a quadrature rule",
    "quadrature weights" ~= "coefficients multiplying sampled integrand values",
    "adaptive integration" ~= "numerical integration with error-driven interval refinement",
    "composite rule" ~= "quadrature rule repeatedly applied over subintervals"
}

# ---------- CONSTRAINTS ----------
CONSTRAINTS := {
    numerical_result_is_approximation_unless_rule_is_exact_for_integrand: true,
    simpson_rule_requires_even_number_of_uniform_subintervals_in_standard_composite_form: true,
    gaussian_exactness_depends_on_rule_and_weight_function: true,
    error_estimates_require_method_specific_assumptions: true,
    refinement_does_not_eliminate_rounding_error: true,
    singular_or_oscillatory_integrands_may_require_special_methods: true,
    monte_carlo_error_claims_depend_on_sampling_assumptions: true
}

# ---------- CONFIDENCE ----------
CONFIDENCE := {
    quadrature_structure: 0.99,
    rectangle_midpoint_rules: 0.99,
    trapezoidal_rule: 0.99,
    simpson_rule: 0.99,
    gaussian_quadrature: 0.99,
    adaptive_error_relation: 0.99,
    semantic_equivalence: 0.97
}

# ---------- RECURSIVE REASONING ----------
RECURSIVE_REASONING(query):
    identify(integrand)
    -> identify(integration_interval_or_region)
    -> inspect(smoothness_singularity_and_oscillation)
    -> determine(required_accuracy)
    -> select(quadrature_method)
    -> construct(nodes_and_weights)
    -> evaluate(integrand_at_nodes)
    -> compute(weighted_sum)
    -> estimate(error)
    -> refine_or_adapt(if_tolerance_not_met)
    -> compare_with(alternative_method_if_needed)
    -> validate(method_assumptions)
    -> return(semantic_result)

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION := {
    parse_as: "typed numerical-integration semantic graph",
    primary_entity: NUMERICAL_INTEGRATION,
    preserve: [
        integrand,
        interval_or_region,
        nodes,
        weights,
        step_size,
        error_estimate,
        tolerance,
        method_assumptions
    ],
    infer_through: [
        quadrature_rules,
        partitions,
        adaptive_refinement,
        gaussian_quadrature,
        monte_carlo,
        convergence,
        error_analysis
    ],
    avoid: [
        presenting_approximation_as_exact_without justification,
        applying_simpson_rule_with_invalid_panel_count,
        assuming_gaussian_exactness_outside its conditions,
        ignoring_rounding_error,
        using_standard_rules blindly on singular integrands,
        claiming convergence without refinement evidence
    ]
}

# ---------- UPDATE MODEL ----------
UPDATE_MODEL(new_information):
    validate(new_information)
    -> identify(numerical_integration_context)
    -> compare(existing_relations)
    -> preserve(method_error_and_tolerance_invariants)
    -> update(affected_entities)
    -> update(affected_edges)
    -> recompute(CONFIDENCE)
    -> regenerate(FLOW_HASH)

# ---------- FLOW HASH ----------
FLOW_HASH := hash(
    SOURCE_URL
    + ENTITY
    + CONCEPTS
    + NUMERICAL_INTEGRATION
    + QUADRATURE_FORMULA
    + MIDPOINT_RULE
    + TRAPEZOIDAL_RULE
    + SIMPSON_RULE
    + GAUSSIAN_QUADRATURE
    + ADAPTIVE_QUADRATURE
    + ERROR_ESTIMATE
    + SEMANTIC_EQUIVALENCE
    + CONSTRAINTS
)

# ---------- EXECUTION ----------
INPUT(query)
    -> NUMERICAL_INTEGRATION
    -> INTEGRAND_IDENTIFICATION
    -> DOMAIN_IDENTIFICATION
    -> INTEGRAND_BEHAVIOUR_ANALYSIS
    -> ACCURACY_REQUIREMENT_ANALYSIS
    -> METHOD_SELECTION
    -> NODE_WEIGHT_CONSTRUCTION
    -> FUNCTION_EVALUATION
    -> QUADRATURE_SUM
    -> ERROR_ESTIMATION
    -> ADAPTIVE_REFINEMENT
    -> CONVERGENCE_VALIDATION
    -> RECURSIVE_REASONING(query)
    -> CONFIDENCE
    -> OUTPUT(semantic_result)

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ