以下是MATLAB中核心算法及其数学方程式的系统总结,涵盖数值计算、优化、微分方程、机器学习等领域,结合实现函数与数学原理分类说明:
一、数值计算方法
1. 线性方程组求解
直接法
- LU分解:
A = LU
,解Ly = b
,Ux = y
[L, U] = lu(A); x = U \ (L \ b); % 矩阵分解求解
- QR分解(超定方程组):
\min \|Ax - b\|_2
→Rx = Q^Tb
[Q, R] = qr(A); x = R \ (Q' * b); % 最小二乘解
- LU分解:
迭代法(大规模稀疏矩阵)
- 共轭梯度法(CG):
x^{(k+1)} = x^{(k)} + \alpha_k p_k
,\alpha_k = \frac{r_k^T r_k}{p_k^T A p_k}
x = pcg(A, b, tol, max_iter); % 对称正定矩阵专用
- 共轭梯度法(CG):
2. 非线性方程求解
- 单变量方程:
f(x) = 0
→ 二分法或牛顿迭代法f = @(x) x + exp(x) - 5; x_sol = fzero(f, 1); % 初值1附近搜索
- 多变量方程组:
F(x) = 0
→ 信赖域法(Trust-region)F = @(x) [x(1)^2 + x(2)^2 - 1; sin(x(1)) - x(2)]; x_sol = fsolve(F, [0,0]); % 数值求解
3. 数值微积分
- 自适应高斯-克朗罗德积分:
\int_a^b f(x)dx \approx \sum w_i f(x_i)
q = integral(@(x) sin(x)./x, 0, Inf); % 振荡函数积分
- 中心差分微分:
f'(x) \approx \frac{f(x+h) - f(x-h)}{2h}
h = 1e-5; df = (f(x+h) - f(x-h)) / (2*h); % 截断误差O(h²)
二、优化算法
1. 线性规划(LP)
\min c^T x \quad \text{s.t.} \quad A x \leq b, \quad A_{eq} x = b_{eq}
c = [2; 1]; A = [1, 1; -1, 2]; b = [4; 1];
x = linprog(c, A, b); % 内点法求解
2. 非线性规划(NLP)
- 有约束优化:
\min f(x) \quad \text{s.t.} \quad g(x) \leq 0
f = @(x) -x(1)*x(2)*x(3); % 最大化体积→最小化负体积 nonlcon = @(x) deal([], 2*(x(1)*x(2)+x(1)*x(3)+x(2)*x(3))-24); % 表面积约束 x_opt = fmincon(f, [1,1,1], [], [], [], [], [0,0,0], [], nonlcon); % SQP算法
3. 整数规划(MIP)
\min c^T x \quad \text{s.t.} \quad x_i \in \mathbb{Z}
intcon = [1,2]; % 指定x1,x2为整数
x = intlinprog(c, intcon, A, b); % 分支定界法
三、微分方程求解
1. 常微分方程(ODE)
- 初值问题:
\frac{dy}{dt} = f(t,y), \quad y(t_0) = y_0
f = @(t,y) -2*y; % dy/dt = -2y [t, y] = ode45(f, [0, 3], 1); % Runge-Kutta法
- 边值问题:
y'' = f(x,y,y'), \quad y(a) = \alpha, \quad y(b) = \beta
sol = bvp4c(@(x,y) [y(2); -y(1)], @(ya,yb) [ya(1); yb(1)-1], solinit); % 打靶法
2. 偏微分方程(PDE)
c(x,t,u) \frac{\partial u}{\partial t} = \nabla \cdot (f \nabla u) + s
sol = pdepe(m, @pdefun, @icfun, @bcfun, xmesh); % 有限差分法
四、统计与拟合算法
1. 回归分析
- 线性回归:
Y = X\beta + \varepsilon
→\hat{\beta} = (X^T X)^{-1} X^T Y
beta = regress(Y, X); % 最小二乘估计
- 非线性拟合:
y = f(x, \beta) + \varepsilon
→ Levenberg-Marquardt优化modelfun = @(b,x) b(1)*exp(b(2)*x); % 指数拟合 beta = nlinfit(x, y, modelfun, [1, -0.1]); % 迭代求解
2. 概率分布
- 分布拟合:
pd = fitdist(data, 'Normal'); % 最大似然估计
- 假设检验:
[h, p] = ttest2(data1, data2); % 双样本t检验(h=1拒绝原假设)
五、特殊函数与信号处理
1. 特殊函数计算
函数 | MATLAB调用 | 数学形式 |
---|---|---|
贝塞尔函数 | besselj(n, x) |
J_n(x) |
伽马函数 | gamma(x) |
\Gamma(x) |
误差函数 | erf(x) |
\frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt |
2. 傅里叶变换
F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i\omega t} dt
Y = fft(signal); P1 = abs(Y/L); % 频谱分析
六、机器学习算法
1. 监督学习
- 支持向量机(SVM):
\min \frac{1}{2} \|w\|^2 + C \sum \xi_i
SVMModel = fitcsvm(X, y, 'KernelFunction', 'rbf'); % 核函数选择
- 决策树:
信息增益最大化I(D) - \sum \frac{|D_i|}{|D|} I(D_i)
tree = fitctree(X, y); view(tree, 'Mode', 'graph'); % 可视化树结构
2. 无监督学习
- K均值聚类:
\min \sum_{i=1}^k \sum_{x \in C_i} \|x - \mu_i\|^2
[idx, C] = kmeans(X, 3); % 聚类数为3
- 主成分分析(PCA):
\max_{w} w^T \Sigma w \quad \text{s.t.} \quad \|w\|=1
[coeff, score] = pca(X); % 降维与特征提取
七、深度学习框架
1. 网络构建
layers = [
imageInputLayer([28 28 1]) % 输入层
convolution2dLayer(5, 20) % 卷积层
reluLayer % ReLU激活
fullyConnectedLayer(10) % 全连接层
softmaxLayer % 分类层
classificationLayer]; % 输出层
数学原理:卷积运算 (I * K)_{ij} = \sum_m \sum_n I_{i+m,j+n} K_{m,n}
2. 模型训练
options = trainingOptions('sgdm', ...
'InitialLearnRate', 0.01, ...
'MaxEpochs', 10);
net = trainNetwork(trainImages, trainLabels, layers, options); % SGD优化
反向传播方程:\frac{\partial L}{\partial w} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial w}
(链式法则)
⚡ 八、算法实现技巧
- 稀疏矩阵处理
A \in \mathbb{R}^{n \times n}
非零元少 → 节省存储与计算S = sparse(A); x = S \ b; % 专用求解器加速
- 向量化编程
避免循环,使用矩阵运算:% 非向量化(慢) for i = 1:n, y(i) = sin(x(i)); end % 向量化(快) y = sin(x);
- GPU加速
gpuX = gpuArray(X); gpuY = fft(gpuX); % GPU并行计算
总结
MATLAB的算法体系覆盖数值计算(矩阵分解、微积分)、优化(LP/NLP/MIP)、微分方程(ODE/PDE)、数据科学(回归/聚类/PCA)及AI(SVM/CNN)五大领域。其优势在于:
- 数学基础扎实:如LU分解解线性系统、Runge-Kutta法解ODE;
- 工程整合强:优化与微分方程求解嵌入物理建模(如弹簧系统);
- AI部署便捷:从SVM分类到CNN图像识别无缝衔接。
更多实现细节可参考:
- 数值计算:MATLAB数值计算案例分析
- 深度学习:MATLAB深度学习框架教程