Stability, Error, and Convergence in Numerical Modeling

Last Updated June 15, 2026

Stability, error, and convergence are the core review concepts that determine whether numerical model results can be trusted as computations. A continuous model may begin with calculus, differential equations, state variables, rates, and flows, but once it is solved numerically, the result depends on step size, solver method, tolerance settings, rounding behavior, stiffness, discretization, and diagnostic review.

In systems modeling, numerical outputs often become trajectories, scenarios, dashboards, figures, policy comparisons, or decision-support evidence. That makes numerical reliability a governance issue. A model can be mathematically well-formed but numerically unstable. A solver can converge numerically while the model remains empirically uncertain. A graph can look smooth while hiding accumulated error or fragile assumptions.

This article introduces stability, error, and convergence in numerical modeling, including local error, global error, truncation error, round-off error, consistency, stability, convergence testing, step-size refinement, solver diagnostics, stiffness warnings, reproducible workflows, and responsible interpretation.

Vintage mathematical modeling workspace with stability diagrams, error trajectories, converging paths, mesh grids, surface plots, water-channel models, notebooks, brass instruments, and drafting tools.
Stability, error, and convergence determine whether numerical models remain reliable as approximations are refined and simulations evolve.

Numerical modeling translates mathematical structure into computed outputs. That translation is never neutral. A method approximates a continuous process with discrete steps. A solver controls error according to rules. A computer represents numbers with finite precision. A visualization displays selected outputs on selected scales. Each layer can clarify or distort the model.

Stability asks whether numerical behavior remains controlled. Error asks how far the computation may be from the intended mathematical solution. Convergence asks whether the numerical result approaches the correct solution as the discretization is refined. Together, these concepts help modelers decide whether a result is a reliable computation or an artifact of the numerical workflow.

Why Stability, Error, and Convergence Matter

Numerical methods approximate continuous mathematics. They replace exact processes with discrete computations: time steps, grids, iterations, tolerances, finite precision, and stopping rules. Stability, error, and convergence help evaluate whether those approximations are behaving responsibly.

\[
\text{computed result}=\text{model structure}+\text{numerical method}+\text{solver settings}+\text{finite precision}
\]

Interpretation: A numerical result is produced by both the mathematical model and the computational workflow used to approximate it.

For systems modeling, this matters because numerical outputs may be interpreted as evidence of system behavior. A population curve, climate pathway, infection trajectory, infrastructure stress estimate, or economic adjustment path can look authoritative even when the numerical method is unstable, under-resolved, or poorly diagnosed.

Concept Core question Systems modeling concern
Error. How far is the computed result from the intended mathematical solution? A result may be precise-looking but numerically inaccurate.
Stability. Do small numerical disturbances remain controlled? A model may show explosive behavior because the method is unstable.
Convergence. Does the numerical solution approach the intended solution as resolution improves? Outputs should stabilize under step-size or grid refinement.
Diagnostics. What evidence supports numerical reliability? Solver warnings, residuals, and benchmark tests should be preserved.

The goal is not to eliminate all error. The goal is to understand, reduce, document, and interpret error responsibly.

Back to top ↑

Error in Numerical Modeling

Error is the difference between a computed quantity and the quantity the computation is intended to approximate. In numerical modeling, there are several kinds of error, and they should not be confused.

\[
e_h(t)=x_h(t)-x(t)
\]

Interpretation: Numerical error compares the approximate solution \(x_h(t)\) to the intended mathematical solution \(x(t)\).

When the exact solution is unavailable, modelers often use benchmark cases, refined step sizes, alternative solvers, conservation checks, or residual diagnostics to estimate whether error is controlled.

Error type Meaning Review response
Discretization error. Error from replacing a continuous process with discrete steps or grids. Refine step size or grid resolution.
Truncation error. Error from cutting off an approximation after finite terms or steps. Use higher-order methods or smaller steps.
Round-off error. Error from finite-precision arithmetic. Check conditioning, scaling, and precision.
Solver tolerance error. Error allowed by adaptive solver controls. Record and test absolute and relative tolerances.
Model error. Mismatch between model structure and real system. Do not treat numerical accuracy as empirical validity.

A numerical audit should distinguish computational error from model uncertainty. A solver can accurately solve the wrong model.

Back to top ↑

Local Error and Global Error

Local error concerns the error introduced in a single step. Global error concerns the accumulated error over many steps.

\[
\text{local error at step }n \approx x(t_{n+1})-\Phi_h(x(t_n))
\]

Interpretation: Local error compares one numerical step to the exact mathematical evolution over the same step.

\[
\text{global error at }t_n \approx x(t_n)-x_n
\]

Interpretation: Global error compares the accumulated numerical solution to the intended solution at a given time.

A method with small local error can still produce large global error if errors accumulate, amplify, or interact with unstable dynamics.

Error scale Where it appears Why it matters
Local error. One time step, one grid cell, or one update. Determines how much error each approximation introduces.
Global error. Full simulation horizon. Determines whether the final trajectory remains reliable.
Accumulated error. Repeated updates. Can grow even if each step looks small.
Amplified error. Unstable or sensitive systems. Can dominate long-run interpretation.

In systems modeling, global error often matters most because interpretation usually depends on the trajectory, scenario endpoint, equilibrium, threshold crossing, or cumulative quantity.

Back to top ↑

Truncation Error and Round-Off Error

Truncation error comes from approximation. Round-off error comes from representing numbers with finite precision. Reducing one can sometimes expose the other.

\[
\text{total numerical error}\approx \text{truncation error}+\text{round-off error}
\]

Interpretation: Numerical error often combines approximation error and finite-precision arithmetic error.

Using a smaller step size usually reduces truncation error, but it can increase the number of operations and make round-off accumulation more visible. This is one reason numerical modeling requires diagnostics rather than blind refinement.

Error source Common cause Warning sign Review response
Truncation error. Step size too large or method too low-order. Results change substantially under refinement. Refine steps or compare higher-order methods.
Round-off error. Finite precision and many operations. Refinement stops improving results. Check scaling, conditioning, and precision.
Cancellation error. Subtracting nearly equal values. Unexpected loss of significant digits. Reformulate expression or rescale variables.
Conditioning error. Problem highly sensitive to input perturbations. Small input changes cause large output changes. Analyze sensitivity and numerical conditioning.

More computation is not always better. Better computation is documented, diagnosed, and appropriate for the problem.

Back to top ↑

Stability in Numerical Methods

Stability asks whether numerical errors remain controlled as the computation proceeds. An unstable numerical method can produce growing oscillations, artificial divergence, or unrealistic behavior even when the underlying model is well behaved.

\[
y_{n+1}=R(h\lambda)y_n
\]

Interpretation: For a linear test problem, repeated numerical updates are controlled by an amplification factor \(R(h\lambda)\).

A simple stability condition is that the amplification factor should not repeatedly increase errors beyond control.

\[
|R(h\lambda)|\leq 1
\]

Interpretation: Numerical stability often requires the update factor to keep perturbations from growing without bound.

Stability type Meaning Systems modeling concern
Numerical stability. Errors remain controlled under repeated computation. Prevents artificial blow-up or spurious oscillation.
Model stability. The mathematical system returns toward equilibrium after perturbation. Describes system behavior, not solver behavior.
Solver stability region. Step sizes and eigenvalues for which a method is stable. Step size must fit the system’s time scales.
Stiffness-related stability. Fast and slow dynamics create difficult stability constraints. Explicit methods may require impractically small steps.

Numerical stability and system stability are related but not identical. A stable system can be solved with an unstable method, producing misleading results. An unstable system can be solved accurately, producing real divergence implied by the model.

Back to top ↑

Convergence and Step-Size Refinement

Convergence asks whether a numerical solution approaches the intended mathematical solution as the step size or grid spacing decreases.

\[
\lim_{h\to 0} x_h(t)=x(t)
\]

Interpretation: A convergent method approaches the exact mathematical solution as resolution improves.

In practice, the exact solution is often unknown. Modelers therefore compare results across step sizes, solver tolerances, or grid resolutions.

Convergence check How it works What it can reveal
Step-size halving. Run the model with \(h\), \(h/2\), and \(h/4\). Whether results stabilize as steps shrink.
Grid refinement. Increase spatial or temporal resolution. Whether patterns persist under finer discretization.
Solver comparison. Compare different methods or tolerance settings. Whether conclusions depend on one solver.
Benchmark solution. Compare to an analytic or manufactured solution. Whether the implementation behaves as expected.
Invariant check. Track conserved quantities or positivity constraints. Whether numerical method violates model structure.

Convergence does not mean the model is true. It means the numerical method appears to be approaching the intended mathematical model under refinement.

Back to top ↑

Consistency, Stability, and Convergence

Three ideas often appear together in numerical analysis: consistency, stability, and convergence.

Concept Core meaning Practical question
Consistency. The numerical method approximates the intended differential equation as step size shrinks. Does the method represent the right equation locally?
Stability. Numerical errors remain controlled during repeated updates. Do small perturbations stay bounded?
Convergence. The numerical solution approaches the intended solution under refinement. Does the computed result approach the correct mathematical behavior?

A method can be locally sensible but unstable. A stable method can still be inaccurate at coarse resolution. A convergent workflow requires both appropriate method structure and diagnostic evidence that refinement behaves as expected.

\[
\text{consistency}+\text{stability}\longrightarrow \text{convergence}
\]

Interpretation: In many numerical settings, convergence depends on the method approximating the right problem and controlling error growth.

For model governance, this trio provides a helpful checklist: Is the method solving the intended problem? Is the computation stable? Do outputs improve under refinement?

Back to top ↑

Solver Diagnostics and Warning Signs

Solver diagnostics help identify when numerical behavior may be unreliable. Important models should preserve diagnostics alongside results.

Numerical Diagnostic Review

Refinement Check

Compare outputs across step sizes, grids, tolerances, or solvers.

Stability Check

Look for spurious oscillation, artificial growth, or step-size sensitivity.

Error Check

Compare to analytic, manufactured, or refined benchmark solutions when possible.

Constraint Check

Test positivity, conservation, bounds, or other structural requirements.

Warning sign Possible cause Workflow response
Output changes sharply with smaller step size. Under-resolution or instability. Run convergence and solver comparison tests.
Unexpected oscillation appears. Numerical instability or model feedback. Distinguish method artifact from model behavior.
Solver takes very small steps. Stiffness, discontinuity, or singular behavior. Inspect stiffness and solver warnings.
State variables become negative when impossible. Method violates constraints. Check step size, method, and positivity-preserving alternatives.
Refinement no longer improves accuracy. Round-off, conditioning, or implementation issue. Review scaling, precision, and algorithm form.

Diagnostics should not be hidden. They are part of the evidence that a numerical result deserves interpretation.

Back to top ↑

Systems Modeling Interpretation

In systems modeling, numerical reliability and substantive interpretation must be kept separate. A convergent numerical solution may still depend on uncertain assumptions. An unstable numerical result may not reflect real system instability. A small solver error may not matter for qualitative interpretation, while a small error near a threshold may matter greatly.

This means numerical review should be tied to the decision context. A teaching model may need transparent approximation. A policy model may need sensitivity analysis, convergence evidence, and uncertainty disclosure. A scientific model may need benchmark tests, reproducible code, and diagnostic records. An engineering model may need strict tolerance, stability, and safety margins.

The interpretive standard is not “the solver ran.” The stronger standard is: “the numerical workflow has been checked for error, stability, convergence, and interpretive limits.”

Back to top ↑

Mathematical Deepening

This section adds a more formal layer for mathematically advanced readers. Stability, error, and convergence in numerical modeling connect discretization, truncation error, local and global error, consistency, stability regions, eigenvalues, stiffness, conditioning, residuals, refinement studies, manufactured solutions, and reproducible solver governance.

Numerical Reliability Building Blocks

Discretization

The replacement of continuous time, space, or equations with finite steps or grids.

Error Estimate

A measure or proxy for the difference between numerical and intended solutions.

Stability Criterion

A condition that keeps perturbations or numerical errors from growing uncontrolled.

Convergence Test

A refinement procedure that checks whether results approach a stable limit.

Numerical Review Protocol

Benchmark

Compare with exact, manufactured, or highly refined reference solutions.

Refine

Reduce step size, grid size, or solver tolerance and compare outcomes.

Diagnose

Inspect residuals, warnings, solver steps, invariants, and constraints.

Document

Preserve settings, outputs, diagnostics, and interpretation warnings.

Numerical Governance

Method Record

Document algorithm, order, step size, tolerance, and solver software.

Error Record

Preserve benchmark errors, refinement tables, and approximation limits.

Stability Record

Record stability warnings, stiffness indicators, and constraint violations.

Claim Record

Separate numerical confidence from empirical or policy claims.

Back to top ↑

Examples from Systems Modeling

Stability, error, and convergence appear across continuous systems modeling workflows.

Population Dynamics

Step-size refinement checks whether growth or carrying-capacity behavior is numerical artifact or model behavior.

Epidemiological Models

Compartment models require positivity checks, solver diagnostics, and sensitivity to transition rates.

Climate Feedback

Long horizons make accumulated error, stiffness, scenario uncertainty, and convergence review especially important.

Resource Systems

Depletion and regeneration models can be sensitive near thresholds, scarcity boundaries, or collapse conditions.

Infrastructure Stress

Numerical instability can be confused with real cascade behavior unless diagnostics are preserved.

Spatial Dynamics

Grid resolution and stability conditions shape diffusion, transport, flow, and spatial accumulation models.

Across these examples, numerical reliability is part of responsible interpretation.

Back to top ↑

Computation and Reproducible Workflows

Computational workflows for numerical reliability should preserve more than final outputs. They should store step sizes, tolerances, solver method, benchmark values, refinement tables, error metrics, stability warnings, residuals, constraint checks, generated figures, and interpretation notes.

A reproducible workflow makes it possible to review whether a numerical result is stable, whether it improves under refinement, and whether the model claim is stronger than the computation supports.

Back to top ↑

Python Workflow: Error and Convergence Audit

The Python workflow below compares fixed-step RK4 approximations of exponential decay across step sizes and records convergence diagnostics against a known exact solution.

from __future__ import annotations

from dataclasses import asdict, dataclass
from pathlib import Path
import csv
import json
import math


@dataclass(frozen=True)
class ConvergenceRecord:
    step_size: float
    steps: int
    solver_method: str
    final_numeric_value: float
    final_exact_value: float
    final_absolute_error: float
    error_ratio_to_previous: str
    warning: str


def rate_function(t: float, y: float, decay_rate: float) -> float:
    return -decay_rate * y


def exact_solution(t: float, y0: float, decay_rate: float) -> float:
    return y0 * math.exp(-decay_rate * t)


def rk4_step(t: float, y: float, h: float, decay_rate: float) -> float:
    k1 = rate_function(t, y, decay_rate)
    k2 = rate_function(t + h / 2, y + h * k1 / 2, decay_rate)
    k3 = rate_function(t + h / 2, y + h * k2 / 2, decay_rate)
    k4 = rate_function(t + h, y + h * k3, decay_rate)
    return y + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)


def simulate(y0: float, decay_rate: float, h: float, stop_time: float) -> float:
    steps = int(round(stop_time / h))
    y = y0
    for step in range(steps):
        t = step * h
        y = rk4_step(t, y, h, decay_rate)
    return y


def convergence_audit() -> list[ConvergenceRecord]:
    y0 = 100.0
    decay_rate = 0.35
    stop_time = 20.0
    exact_final = exact_solution(stop_time, y0, decay_rate)

    step_sizes = [1.0, 0.5, 0.25, 0.125]
    previous_error = None
    records: list[ConvergenceRecord] = []

    for h in step_sizes:
        numeric = simulate(y0, decay_rate, h, stop_time)
        error = abs(numeric - exact_final)
        ratio = "not_applicable" if previous_error is None else f"{previous_error / error:.4f}"

        records.append(
            ConvergenceRecord(
                step_size=h,
                steps=int(round(stop_time / h)),
                solver_method="fixed_step_rk4",
                final_numeric_value=numeric,
                final_exact_value=exact_final,
                final_absolute_error=error,
                error_ratio_to_previous=ratio,
                warning="Convergence evidence supports numerical reliability, not empirical validity."
            )
        )

        previous_error = error

    return records


records = convergence_audit()

output_dir = Path("outputs")
(output_dir / "tables").mkdir(parents=True, exist_ok=True)
(output_dir / "json").mkdir(parents=True, exist_ok=True)
(output_dir / "reports").mkdir(parents=True, exist_ok=True)

with (output_dir / "tables" / "convergence_audit.csv").open("w", newline="", encoding="utf-8") as handle:
    writer = csv.DictWriter(handle, fieldnames=asdict(records[0]).keys())
    writer.writeheader()
    for record in records:
        writer.writerow(asdict(record))

(output_dir / "json" / "convergence_audit.json").write_text(
    json.dumps([asdict(record) for record in records], indent=2),
    encoding="utf-8"
)

report_lines = [
    "# Error and Convergence Audit",
    "",
    "This audit compares fixed-step RK4 results against an exact exponential-decay solution.",
    "",
    "| Step size | Steps | Final absolute error | Error ratio to previous |",
    "|---:|---:|---:|---:|"
]

for record in records:
    report_lines.append(
        f"| {record.step_size} | {record.steps} | {record.final_absolute_error:.12e} | {record.error_ratio_to_previous} |"
    )

report_lines.append("")
report_lines.append("Convergence evidence should be interpreted as numerical evidence, not empirical proof.")

(output_dir / "reports" / "convergence_audit.md").write_text(
    "\n".join(report_lines) + "\n",
    encoding="utf-8"
)

print("Wrote error and convergence audit outputs.")

This workflow produces a refinement table that helps distinguish stable numerical behavior from unsupported confidence.

Back to top ↑

R Workflow: Step-Size Refinement Table

The R workflow below produces a step-size refinement table for the same benchmark problem.

rate_function <- function(t, y, decay_rate) {
  -decay_rate * y
}

exact_solution <- function(t, y0, decay_rate) {
  y0 * exp(-decay_rate * t)
}

rk4_step <- function(t, y, h, decay_rate) {
  k1 <- rate_function(t, y, decay_rate)
  k2 <- rate_function(t + h / 2, y + h * k1 / 2, decay_rate)
  k3 <- rate_function(t + h / 2, y + h * k2 / 2, decay_rate)
  k4 <- rate_function(t + h, y + h * k3, decay_rate)
  y + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)
}

simulate_rk4 <- function(y0, decay_rate, h, stop_time) {
  steps <- round(stop_time / h)
  y <- y0

  for (step in 0:(steps - 1)) {
    t <- step * h
    y <- rk4_step(t, y, h, decay_rate)
  }

  y
}

y0 <- 100
decay_rate <- 0.35
stop_time <- 20
exact_final <- exact_solution(stop_time, y0, decay_rate)
step_sizes <- c(1, 0.5, 0.25, 0.125)

records <- data.frame(
  step_size = numeric(),
  steps = integer(),
  solver_method = character(),
  final_numeric_value = numeric(),
  final_exact_value = numeric(),
  final_absolute_error = numeric(),
  warning = character()
)

for (h in step_sizes) {
  numeric_final <- simulate_rk4(y0, decay_rate, h, stop_time)
  records <- rbind(
    records,
    data.frame(
      step_size = h,
      steps = round(stop_time / h),
      solver_method = "fixed_step_rk4",
      final_numeric_value = numeric_final,
      final_exact_value = exact_final,
      final_absolute_error = abs(numeric_final - exact_final),
      warning = "Convergence evidence supports numerical reliability, not empirical validity."
    )
  )
}

records$error_ratio_to_previous <- c(
  NA,
  head(records$final_absolute_error, -1) / tail(records$final_absolute_error, -1)
)

dir.create("outputs/tables", recursive = TRUE, showWarnings = FALSE)

write.csv(
  records,
  "outputs/tables/r_step_size_refinement_audit.csv",
  row.names = FALSE
)

print(records)

This workflow keeps the refinement evidence in a table rather than only displaying a final figure.

Back to top ↑

Haskell Workflow: Typed Numerical Audit Records

Haskell can represent numerical reliability checks as typed records, making it harder to separate results from method metadata.

module Main where

data NumericalAuditRecord = NumericalAuditRecord
  { stepSize :: Double
  , solverMethod :: String
  , diagnosticType :: String
  , diagnosticResult :: String
  , interpretationWarning :: String
  } deriving (Show)

records :: [NumericalAuditRecord]
records =
  [ NumericalAuditRecord
      1.0
      "fixed_step_rk4"
      "step_size_refinement"
      "baseline coarse step"
      "Coarse numerical outputs should not be treated as verified."
  , NumericalAuditRecord
      0.5
      "fixed_step_rk4"
      "step_size_refinement"
      "refined comparison"
      "Refinement tests numerical behavior, not empirical validity."
  , NumericalAuditRecord
      0.25
      "fixed_step_rk4"
      "convergence_review"
      "additional refinement"
      "Convergence should be documented with assumptions and solver settings."
  , NumericalAuditRecord
      0.125
      "fixed_step_rk4"
      "diagnostic_review"
      "fine refinement"
      "Numerical confidence remains separate from model validity."
  ]

main :: IO ()
main =
  mapM_ print records

The typed workflow treats convergence evidence as a structured record rather than an informal comment.

Back to top ↑

SQL Workflow: Numerical Reliability Registry

SQL can document numerical reliability assumptions when simulations support dashboards, reports, model reviews, or governance workflows.

CREATE TABLE numerical_reliability_registry (
    reliability_key TEXT PRIMARY KEY,
    reliability_name TEXT NOT NULL,
    numerical_role TEXT NOT NULL,
    systems_modeling_role TEXT NOT NULL,
    review_warning TEXT NOT NULL
);

INSERT INTO numerical_reliability_registry VALUES
(
  'local_error',
  'Local error',
  'Error introduced by one numerical step.',
  'Helps evaluate step-level approximation quality.',
  'Small local error can still accumulate into important global error.'
);

INSERT INTO numerical_reliability_registry VALUES
(
  'global_error',
  'Global error',
  'Accumulated error across the simulation horizon.',
  'Shapes interpretation of trajectories, endpoints, and thresholds.',
  'Global error often matters more than a single-step estimate.'
);

INSERT INTO numerical_reliability_registry VALUES
(
  'stability',
  'Numerical stability',
  'Controls whether numerical perturbations grow or remain bounded.',
  'Helps distinguish solver artifact from system behavior.',
  'Unstable methods can create artificial oscillation or blow-up.'
);

INSERT INTO numerical_reliability_registry VALUES
(
  'convergence',
  'Convergence',
  'Checks whether outputs approach a stable result under refinement.',
  'Supports confidence that the numerical method is approximating the intended model.',
  'Convergence is not empirical validation.'
);

INSERT INTO numerical_reliability_registry VALUES
(
  'roundoff',
  'Round-off error',
  'Error from finite-precision arithmetic.',
  'Can matter in long simulations, ill-conditioned systems, or extreme scaling.',
  'Smaller step sizes do not always improve results indefinitely.'
);

INSERT INTO numerical_reliability_registry VALUES
(
  'diagnostics',
  'Solver diagnostics',
  'Record warnings, residuals, step behavior, and constraint checks.',
  'Supports reproducible review of numerical reliability.',
  'A completed solver run is not automatically a trustworthy result.'
);

SELECT
    reliability_name,
    numerical_role,
    systems_modeling_role,
    review_warning
FROM numerical_reliability_registry
ORDER BY reliability_key;

This registry ties numerical interpretation to local error, global error, stability, convergence, round-off, diagnostics, and review warnings.

Back to top ↑

GitHub Repository

The companion repository for this article is designed as a reproducible mathematical-modeling workspace. It supports error audits, convergence tables, step-size refinement workflows, RK4 benchmark comparisons, stability notes, diagnostic records, SQL governance tables, generated outputs, advanced mathematical audit reports, and reusable calculator scripts.

Back to top ↑

Interpretive Limits and Responsible Use

Stability, error, and convergence help evaluate numerical reliability, but they do not make a model empirically valid. A computation can be stable, accurate, and convergent while still depending on incomplete assumptions, poor data, wrong parameters, omitted mechanisms, or inappropriate boundaries.

Responsible use requires documentation. Preserve solver method, step size, grid resolution, tolerances, parameter values, initial conditions, benchmark comparisons, refinement results, warnings, residuals, constraint checks, and interpretation notes. Use diagnostics before using numerical output to support strong claims. Distinguish numerical confidence from real-world evidence.

The central question is not only “Did the result converge?” It is “What did it converge to, under what assumptions, with what numerical evidence, and what claims can responsibly follow?”

Back to top ↑

Back to top ↑

Further Reading

  • Atkinson, K.E. (1989) An Introduction to Numerical Analysis. 2nd edn. New York: Wiley.
  • Burden, R.L. and Faires, J.D. (2011) Numerical Analysis. 9th edn. Boston, MA: Brooks/Cole.
  • Butcher, J.C. (2016) Numerical Methods for Ordinary Differential Equations. 3rd edn. Chichester: Wiley.
  • Chapra, S.C. and Canale, R.P. (2015) Numerical Methods for Engineers. 7th edn. New York: McGraw-Hill Education.
  • Hairer, E., Nørsett, S.P. and Wanner, G. (1993) Solving Ordinary Differential Equations I: Nonstiff Problems. 2nd edn. Berlin: Springer.
  • Hairer, E. and Wanner, G. (1996) Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems. 2nd edn. Berlin: Springer.
  • Heath, M.T. (2018) Scientific Computing: An Introductory Survey. 2nd edn. Philadelphia, PA: Society for Industrial and Applied Mathematics.
  • Iserles, A. (2009) A First Course in the Numerical Analysis of Differential Equations. 2nd edn. Cambridge: Cambridge University Press.
  • Quarteroni, A., Sacco, R. and Saleri, F. (2007) Numerical Mathematics. 2nd edn. Berlin: Springer.
  • Massachusetts Institute of Technology (MIT) OpenCourseWare (2011) Introduction to Numerical Analysis. Cambridge, MA: MIT OpenCourseWare.

Back to top ↑

References

  • Atkinson, K.E. (1989) An Introduction to Numerical Analysis. 2nd edn. New York: Wiley.
  • Burden, R.L. and Faires, J.D. (2011) Numerical Analysis. 9th edn. Boston, MA: Brooks/Cole.
  • Butcher, J.C. (2016) Numerical Methods for Ordinary Differential Equations. 3rd edn. Chichester: Wiley.
  • Chapra, S.C. and Canale, R.P. (2015) Numerical Methods for Engineers. 7th edn. New York: McGraw-Hill Education.
  • Hairer, E., Nørsett, S.P. and Wanner, G. (1993) Solving Ordinary Differential Equations I: Nonstiff Problems. 2nd edn. Berlin: Springer.
  • Hairer, E. and Wanner, G. (1996) Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems. 2nd edn. Berlin: Springer.
  • Heath, M.T. (2018) Scientific Computing: An Introductory Survey. 2nd edn. Philadelphia, PA: Society for Industrial and Applied Mathematics.
  • Iserles, A. (2009) A First Course in the Numerical Analysis of Differential Equations. 2nd edn. Cambridge: Cambridge University Press.
  • Quarteroni, A., Sacco, R. and Saleri, F. (2007) Numerical Mathematics. 2nd edn. Berlin: Springer.

Back to top ↑

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top