Functions

Chapter 1: Introduction

Chapter 2: Square linear systems

Chapter 3: Overdetermined linear systems

Chapter 4: Roots of nonlinear equations

FundamentalsNumericalComputation.levenbergFunction
levenberg(f,x₁,tol)

Use Levenberg's quasi-Newton iteration to find a root of the system f, starting from x₁, with tol as the stopping tolerance in both step size and residual norm. Returns the history of root estimates as a vector of vectors.

FundamentalsNumericalComputation.newtonMethod
newton(f,dfdx,x₁)

Use Newton's method to find a root of f starting from x₁, where dfdx is the derivative of f. Returns a vector of root estimates.

FundamentalsNumericalComputation.newtonsysMethod
newtonsys(f,jac,x₁)

Use Newton's method to find a root of a system of equations, starting from x₁. The functions f and `jac should return the residual vector and the Jacobian matrix, respectively. Returns the history of root estimates as a vector of vectors.

Chapter 5: Piecewise interpolation

FundamentalsNumericalComputation.trapezoidMethod
trapezoid(f,a,b,n)

Apply the trapezoid integration formula for integrand f over interval [a,b], broken up into n equal pieces. Returns the estimate, a vector of nodes, and a vector of integrand values at the nodes.

Chapter 6: Initial-value problems for ODEs

FundamentalsNumericalComputation.ab4Method
ab4(ivp,n)

Apply the Adams-Bashforth 4th order method to solve the given IVP using n time steps. Returns a vector of times and a vector of solution values.

FundamentalsNumericalComputation.am2Method
am2(ivp,n)

Apply the Adams-Moulton 2nd order method to solve given IVP using n time steps. Returns a vector of times and a vector of solution values.

FundamentalsNumericalComputation.ie2Method
ie2(ivp,n)

Apply the Improved Euler method to solve the given IVP using n time steps. Returns a vector of times and a vector of solution values.

FundamentalsNumericalComputation.rk23Method
rk23(ivp,tol)

Apply an adaptive embedded RK formula pair to solve given IVP with estimated error tol. Returns a vector of times and a vector of solution values.

FundamentalsNumericalComputation.rk4Method
rk4(ivp,n)

Apply the common Runge-Kutta 4th order method to solve the given IVP using n time steps. Returns a vector of times and a vector of solution values.

Chapter 7: Matrix analysis

Chapter 8: Krylov methods in linear algebra

FundamentalsNumericalComputation.arnoldiMethod
arnoldi(A,u,m)

Perform the Arnoldi iteration for A starting with vector u, out to the Krylov subspace of degree m. Returns the orthonormal basis (m+1 columns) and the upper Hessenberg H of size m+1 by m.

FundamentalsNumericalComputation.gmresMethod
gmres(A,b,m)

Do m iterations of GMRES for the linear system A*x=b. Returns the final solution estimate x and a vector with the history of residual norms. (This function is for demo only, not practical use.)

FundamentalsNumericalComputation.inviterMethod
inviter(A,s,numiter)

Perform numiter inverse iterations with the matrix A and shift s, starting from a random vector. Returns a vector of eigenvalue estimates and the final eigenvector approximation.

FundamentalsNumericalComputation.poweriterMethod
poweriter(A,numiter)

Perform numiter power iterations with the matrix A, starting from a random vector. Returns a vector of eigenvalue estimates and the final eigenvector approximation.

FundamentalsNumericalComputation.sprandsymMethod
sprandsym(n,density,λ)
sprandsym(n,density,rcond)

Construct a randomized n by n symmetric sparse matrix of approximate density density. For vector λ, the matrix has eigenvalues as prescribed by λ. For scalar rcond, the matrix has condition number equal to 1/rcond.

Chapter 9: Global function approximation

FundamentalsNumericalComputation.ccintMethod
ccint(f,n)

Perform Clenshaw-Curtis integration for the function f on n+1 nodes in [-1,1]. Returns the integral estimate and a vector of the nodes used. Note: n must be even.

FundamentalsNumericalComputation.glintMethod
glint(f,n)

Perform Gauss-Legendre integration for the function f on n nodes in (-1,1). Returns the integral estimate and a vector of the nodes used.

FundamentalsNumericalComputation.intdeMethod
intde(f,h,M)

Perform doubly-exponential integration of function f over (-Inf,Inf), using discretization size h and truncation point M. Returns the integral estimate and a vector of the nodes used.

FundamentalsNumericalComputation.intsingMethod
intsing(f,h,δ)

Integrate function f (possibly singular at 1 and -1) over [-1+δ,1-δ] using discretization size h. Returns the integral estimate and a vector of the nodes used.

Chapter 10: Boundary-value problems

FundamentalsNumericalComputation.bvpMethod
bvp(phi,xspan,lval,lder,rval,rder,init)

Use finite differences to solve a two-point boundary value problem. The ODE is u'' = phi(x,u,u') for x in xspan. Specify a function value or derivative at the left endpoint using lval and lder, respectively, and similarly for the right endpoint using rval and rder. (Use an empty array to denote an unknown quantity.) The value init is an initial guess for whichever value is missing at the left endpoint.

Returns vectors for the nodes and the values of u.

FundamentalsNumericalComputation.bvplinMethod
bvplin(p,q,r,xspan,lval,rval,n)

Use finite differences to solve a linear bopundary value problem. The ODE is u''+p(x)u'+q(x)u = r(x) on the interval xspan, with endpoint function values given as lval and rval. There will be n+1 equally spaced nodes, including the endpoints.

Returns vectors of the nodes and the solution values.

FundamentalsNumericalComputation.diffchebMethod
diffcheb(n,xspan)

Compute Chebyshev differentiation matrices on n+1 points in the interval xspan. Returns a vector of nodes and the matrices for the first and second derivatives.

FundamentalsNumericalComputation.diffmat2Method
diffmat2(n,xspan)

Compute 2nd-order-accurate differentiation matrices on n+1 points in the interval xspan. Returns a vector of nodes and the matrices for the first and second derivatives.

FundamentalsNumericalComputation.femMethod
fem(c,s,f,a,b,n)

Use a piecewise linear finite element method to solve a two-point boundary value problem. The ODE is (c(x)u')' + s(x)u = f(x) on the interval [a,b], and the boundary values are zero. The discretization uses n equal subintervals.

Return vectors for the nodes and the values of u.

FundamentalsNumericalComputation.shootMethod
shoot(phi,xspan,lval,lder,rval,rder,init)

Use the shooting method to solve a two-point boundary value problem. The ODE is u'' = phi(x,u,u') for x in xspan. Specify a function value or derivative at the left endpoint using lval and lder, respectively, and similarly for the right endpoint using rval and rder. (Use an empty array to denote an unknown quantity.) The value init is an initial guess for whichever value is missing at the left endpoint.

Returns vectors for the nodes, the values of u, and the values of u'.

Chapter 11: Diffusion equations

FundamentalsNumericalComputation.diffperMethod
diffper(n,xspan)

Construct 2nd-order differentiation matrices for functions with periodic end conditions, using n unique nodes in the interval xspan. Returns a vector of nodes and the matrices for the first and second derivatives.

Chapter 12: Advection equations

Chapter 13: Two-dimensional problems

FundamentalsNumericalComputation.poissonfdMethod
poissonfd(f,g,m,xspan,n,yspan)

Solve Poisson's equation on a rectangle by finite differences. Function f is the forcing function and function g gives the Dirichlet boundary condition. The rectangle is the tensor product of intervals xspan and yspan, and the discretization uses m+1 and n+1 points in the two coordinates.

Returns matrices of the grid solution values and the coordinate functions.

FundamentalsNumericalComputation.rectdiscMethod
rectdisc(m,xspan,n,yspan)

Construct matrices and helpers for finite-difference discretization of a rectangle that is the tensor product of intervals xspan and yspan, using m+1 and n+1 points in the two coordinates.