# Mathematics Reference ## Table of Contents 1. [Linear Algebra](#linear-algebra) 2. [Elementary Math](#elementary-math) 3. [Calculus and Integration](#calculus-and-integration) 4. [Differential Equations](#differential-equations) 5. [Optimization](#optimization) 6. [Statistics](#statistics) 7. [Signal Processing](#signal-processing) 8. [Interpolation and Fitting](#interpolation-and-fitting) ## Linear Algebra ### Solving Linear Systems ```matlab % Ax = b x = A \ b; % Preferred method (mldivide) x = linsolve(A, b); % With options x = inv(A) * b; % Less efficient, avoid % Options for linsolve opts.LT = true; % Lower triangular opts.UT = true; % Upper triangular opts.SYM = true; % Symmetric opts.POSDEF = true; % Positive definite x = linsolve(A, b, opts); % xA = b x = b / A; % mrdivide % Least squares (overdetermined system) x = A \ b; % Minimum norm solution x = lsqminnorm(A, b); % Explicit minimum norm % Nonnegative least squares x = lsqnonneg(A, b); % x >= 0 constraint ``` ### Matrix Decompositions ```matlab % LU decomposition: A = L*U or P*A = L*U [L, U] = lu(A); % L may not be lower triangular [L, U, P] = lu(A); % P*A = L*U % QR decomposition: A = Q*R [Q, R] = qr(A); % Full decomposition [Q, R] = qr(A, 0); % Economy size [Q, R, P] = qr(A); % Column pivoting: A*P = Q*R % Cholesky: A = R'*R (symmetric positive definite) R = chol(A); % Upper triangular L = chol(A, 'lower'); % Lower triangular % LDL': A = L*D*L' (symmetric) [L, D] = ldl(A); % Schur decomposition: A = U*T*U' [U, T] = schur(A); % T is quasi-triangular [U, T] = schur(A, 'complex'); % T is triangular ``` ### Eigenvalues and Eigenvectors ```matlab % Eigenvalues e = eig(A); % Eigenvalues only [V, D] = eig(A); % V: eigenvectors, D: diagonal eigenvalues % A*V = V*D % Generalized eigenvalues: A*v = lambda*B*v e = eig(A, B); [V, D] = eig(A, B); % Sparse/large matrices (subset of eigenvalues) e = eigs(A, k); % k largest magnitude e = eigs(A, k, 'smallestabs'); % k smallest magnitude [V, D] = eigs(A, k, 'largestreal'); ``` ### Singular Value Decomposition ```matlab % SVD: A = U*S*V' [U, S, V] = svd(A); % Full decomposition [U, S, V] = svd(A, 'econ'); % Economy size s = svd(A); % Singular values only % Sparse/large matrices [U, S, V] = svds(A, k); % k largest singular values % Applications r = rank(A); % Rank (count nonzero singular values) p = pinv(A); % Pseudoinverse (via SVD) n = norm(A, 2); % 2-norm = largest singular value c = cond(A); % Condition number = ratio of largest/smallest ``` ### Matrix Properties ```matlab d = det(A); % Determinant t = trace(A); % Trace (sum of diagonal) r = rank(A); % Rank n = norm(A); % 2-norm (default) n = norm(A, 1); % 1-norm (max column sum) n = norm(A, inf); % Inf-norm (max row sum) n = norm(A, 'fro'); % Frobenius norm c = cond(A); % Condition number c = rcond(A); % Reciprocal condition (fast estimate) ``` ## Elementary Math ### Trigonometric Functions ```matlab % Radians y = sin(x); y = cos(x); y = tan(x); y = asin(x); y = acos(x); y = atan(x); y = atan2(y, x); % Four-quadrant arctangent % Degrees y = sind(x); y = cosd(x); y = tand(x); y = asind(x); y = acosd(x); y = atand(x); % Hyperbolic y = sinh(x); y = cosh(x); y = tanh(x); y = asinh(x); y = acosh(x); y = atanh(x); % Secant, cosecant, cotangent y = sec(x); y = csc(x); y = cot(x); ``` ### Exponentials and Logarithms ```matlab y = exp(x); % e^x y = log(x); % Natural log (ln) y = log10(x); % Log base 10 y = log2(x); % Log base 2 y = log1p(x); % log(1+x), accurate for small x [F, E] = log2(x); % F * 2^E = x y = sqrt(x); % Square root y = nthroot(x, n); % Real n-th root y = realsqrt(x); % Real square root (error if x < 0) y = pow2(x); % 2^x y = x .^ y; % Element-wise power ``` ### Complex Numbers ```matlab z = complex(a, b); % a + bi z = 3 + 4i; % Direct creation r = real(z); % Real part i = imag(z); % Imaginary part m = abs(z); % Magnitude p = angle(z); % Phase angle (radians) c = conj(z); % Complex conjugate [theta, rho] = cart2pol(x, y); % Cartesian to polar [x, y] = pol2cart(theta, rho); % Polar to Cartesian ``` ### Rounding and Remainders ```matlab y = round(x); % Round to nearest integer y = round(x, n); % Round to n decimal places y = floor(x); % Round toward -infinity y = ceil(x); % Round toward +infinity y = fix(x); % Round toward zero y = mod(x, m); % Modulo (sign of m) y = rem(x, m); % Remainder (sign of x) [q, r] = deconv(x, m); % Quotient and remainder y = sign(x); % Sign (-1, 0, or 1) y = abs(x); % Absolute value ``` ### Special Functions ```matlab y = gamma(x); % Gamma function y = gammaln(x); % Log gamma (avoid overflow) y = factorial(n); % n! y = nchoosek(n, k); % Binomial coefficient y = erf(x); % Error function y = erfc(x); % Complementary error function y = erfcinv(x); % Inverse complementary error function y = besselj(nu, x); % Bessel J y = bessely(nu, x); % Bessel Y y = besseli(nu, x); % Modified Bessel I y = besselk(nu, x); % Modified Bessel K y = legendre(n, x); % Legendre polynomials ``` ## Calculus and Integration ### Numerical Integration ```matlab % Definite integrals q = integral(fun, a, b); % Integrate fun from a to b q = integral(@(x) x.^2, 0, 1); % Example: integral of x^2 % Options q = integral(fun, a, b, 'AbsTol', 1e-10); q = integral(fun, a, b, 'RelTol', 1e-6); % Improper integrals q = integral(fun, 0, Inf); % Integrate to infinity q = integral(fun, -Inf, Inf); % Full real line % Multidimensional q = integral2(fun, xa, xb, ya, yb); % Double integral q = integral3(fun, xa, xb, ya, yb, za, zb); % Triple integral % From discrete data q = trapz(x, y); % Trapezoidal rule q = trapz(y); % Unit spacing q = cumtrapz(x, y); % Cumulative integral ``` ### Numerical Differentiation ```matlab % Finite differences dy = diff(y); % First differences dy = diff(y, n); % n-th differences dy = diff(y, n, dim); % Along dimension % Gradient (numerical derivative) g = gradient(y); % dy/dx, unit spacing g = gradient(y, h); % dy/dx, spacing h [gx, gy] = gradient(Z, hx, hy); % Gradient of 2D data ``` ## Differential Equations ### ODE Solvers ```matlab % Standard form: dy/dt = f(t, y) odefun = @(t, y) -2*y; % Example: dy/dt = -2y [t, y] = ode45(odefun, tspan, y0); % Solver selection: % ode45 - Nonstiff, medium accuracy (default choice) % ode23 - Nonstiff, low accuracy % ode113 - Nonstiff, variable order % ode15s - Stiff, variable order (try if ode45 is slow) % ode23s - Stiff, low order % ode23t - Moderately stiff, trapezoidal % ode23tb - Stiff, TR-BDF2 % With options options = odeset('RelTol', 1e-6, 'AbsTol', 1e-9); options = odeset('MaxStep', 0.1); options = odeset('Events', @myEventFcn); % Stop conditions [t, y] = ode45(odefun, tspan, y0, options); ``` ### Higher-Order ODEs ```matlab % y'' + 2y' + y = 0, y(0) = 1, y'(0) = 0 % Convert to system: y1 = y, y2 = y' % y1' = y2 % y2' = -2*y2 - y1 odefun = @(t, y) [y(2); -2*y(2) - y(1)]; y0 = [1; 0]; % [y(0); y'(0)] [t, y] = ode45(odefun, [0 10], y0); plot(t, y(:,1)); % Plot y (first component) ``` ### Boundary Value Problems ```matlab % y'' + |y| = 0, y(0) = 0, y(4) = -2 solinit = bvpinit(linspace(0, 4, 5), [0; 0]); sol = bvp4c(@odefun, @bcfun, solinit); function dydx = odefun(x, y) dydx = [y(2); -abs(y(1))]; end function res = bcfun(ya, yb) res = [ya(1); yb(1) + 2]; % y(0) = 0, y(4) = -2 end ``` ## Optimization ### Unconstrained Optimization ```matlab % Single variable, bounded [x, fval] = fminbnd(fun, x1, x2); [x, fval] = fminbnd(@(x) x.^2 - 4*x, 0, 5); % Multivariable, unconstrained [x, fval] = fminsearch(fun, x0); options = optimset('TolX', 1e-8, 'TolFun', 1e-8); [x, fval] = fminsearch(fun, x0, options); % Display iterations options = optimset('Display', 'iter'); ``` ### Root Finding ```matlab % Find where f(x) = 0 x = fzero(fun, x0); % Near x0 x = fzero(fun, [x1 x2]); % In interval [x1, x2] x = fzero(@(x) cos(x) - x, 0.5); % Polynomial roots r = roots([1 0 -4]); % Roots of x^2 - 4 = 0 % Returns [2; -2] ``` ### Least Squares ```matlab % Linear least squares: minimize ||Ax - b|| x = A \ b; % Standard solution x = lsqminnorm(A, b); % Minimum norm solution % Nonnegative least squares x = lsqnonneg(A, b); % x >= 0 % Nonlinear least squares x = lsqnonlin(fun, x0); % Minimize sum(fun(x).^2) x = lsqcurvefit(fun, x0, xdata, ydata); % Curve fitting ``` ## Statistics ### Descriptive Statistics ```matlab % Central tendency m = mean(x); % Arithmetic mean m = mean(x, 'all'); % Mean of all elements m = mean(x, dim); % Mean along dimension m = mean(x, 'omitnan'); % Ignore NaN values gm = geomean(x); % Geometric mean hm = harmmean(x); % Harmonic mean med = median(x); % Median mo = mode(x); % Mode % Dispersion s = std(x); % Standard deviation (N-1) s = std(x, 1); % Population std (N) v = var(x); % Variance r = range(x); % max - min iqr_val = iqr(x); % Interquartile range % Extremes [minv, mini] = min(x); [maxv, maxi] = max(x); [lo, hi] = bounds(x); % Min and max together ``` ### Correlation and Covariance ```matlab % Correlation R = corrcoef(X, Y); % Correlation matrix r = corrcoef(x, y); % Correlation coefficient % Covariance C = cov(X, Y); % Covariance matrix c = cov(x, y); % Covariance % Cross-correlation (signal processing) [r, lags] = xcorr(x, y); % Cross-correlation [r, lags] = xcorr(x, y, 'coeff'); % Normalized ``` ### Percentiles and Quantiles ```matlab p = prctile(x, [25 50 75]); % Percentiles q = quantile(x, [0.25 0.5 0.75]); % Quantiles ``` ### Moving Statistics ```matlab y = movmean(x, k); % k-point moving average y = movmedian(x, k); % Moving median y = movstd(x, k); % Moving standard deviation y = movvar(x, k); % Moving variance y = movmin(x, k); % Moving minimum y = movmax(x, k); % Moving maximum y = movsum(x, k); % Moving sum % Window options y = movmean(x, [kb kf]); % kb back, kf forward y = movmean(x, k, 'omitnan'); % Ignore NaN ``` ### Histograms and Distributions ```matlab % Histogram counts [N, edges] = histcounts(x); % Automatic binning [N, edges] = histcounts(x, nbins); % Specify number of bins [N, edges] = histcounts(x, edges); % Specify edges % Probability/normalized [N, edges] = histcounts(x, 'Normalization', 'probability'); [N, edges] = histcounts(x, 'Normalization', 'pdf'); % 2D histogram [N, xedges, yedges] = histcounts2(x, y); ``` ## Signal Processing ### Fourier Transform ```matlab % FFT Y = fft(x); % 1D FFT Y = fft(x, n); % n-point FFT (zero-pad/truncate) Y = fft2(X); % 2D FFT Y = fftn(X); % N-D FFT % Inverse FFT x = ifft(Y); X = ifft2(Y); X = ifftn(Y); % Shift zero-frequency to center Y_shifted = fftshift(Y); Y = ifftshift(Y_shifted); % Frequency axis n = length(x); fs = 1000; % Sampling frequency f = (0:n-1) * fs / n; % Frequency vector f = (-n/2:n/2-1) * fs / n; % Centered frequency vector ``` ### Filtering ```matlab % 1D filtering y = filter(b, a, x); % Apply IIR/FIR filter y = filtfilt(b, a, x); % Zero-phase filtering % Simple moving average b = ones(1, k) / k; y = filter(b, 1, x); % Convolution y = conv(x, h); % Full convolution y = conv(x, h, 'same'); % Same size as x y = conv(x, h, 'valid'); % Valid part only % Deconvolution [q, r] = deconv(y, h); % y = conv(q, h) + r % 2D filtering Y = filter2(H, X); % 2D filter Y = conv2(X, H, 'same'); % 2D convolution ``` ## Interpolation and Fitting ### Interpolation ```matlab % 1D interpolation yi = interp1(x, y, xi); % Linear (default) yi = interp1(x, y, xi, 'spline'); % Spline yi = interp1(x, y, xi, 'pchip'); % Piecewise cubic yi = interp1(x, y, xi, 'nearest'); % Nearest neighbor % 2D interpolation zi = interp2(X, Y, Z, xi, yi); zi = interp2(X, Y, Z, xi, yi, 'spline'); % 3D interpolation vi = interp3(X, Y, Z, V, xi, yi, zi); % Scattered data F = scatteredInterpolant(x, y, v); vi = F(xi, yi); ``` ### Polynomial Fitting ```matlab % Polynomial fit p = polyfit(x, y, n); % Fit degree-n polynomial % p = [p1, p2, ..., pn+1] % y = p1*x^n + p2*x^(n-1) + ... + pn+1 % Evaluate polynomial yi = polyval(p, xi); % With fit quality [p, S] = polyfit(x, y, n); [yi, delta] = polyval(p, xi, S); % delta = error estimate % Polynomial operations r = roots(p); % Find roots p = poly(r); % Polynomial from roots q = polyder(p); % Derivative q = polyint(p); % Integral c = conv(p1, p2); % Multiply polynomials [q, r] = deconv(p1, p2); % Divide polynomials ``` ### Curve Fitting ```matlab % Using fit function (Curve Fitting Toolbox or basic forms) % Linear: y = a*x + b p = polyfit(x, y, 1); a = p(1); b = p(2); % Exponential: y = a*exp(b*x) % Linearize: log(y) = log(a) + b*x p = polyfit(x, log(y), 1); b = p(1); a = exp(p(2)); % Power: y = a*x^b % Linearize: log(y) = log(a) + b*log(x) p = polyfit(log(x), log(y), 1); b = p(1); a = exp(p(2)); % General nonlinear fitting with lsqcurvefit model = @(p, x) p(1)*exp(-p(2)*x); % Example: a*exp(-b*x) p0 = [1, 1]; % Initial guess p = lsqcurvefit(model, p0, xdata, ydata); ```