编程资源
数学建模常用编程语言、工具库、代码模板和速查表,助你高效实现模型
🎯 交互式代码演示
点击下方代码块,实时查看运行结果可视化
📄 Python 代码
from scipy.optimize import linprog
import numpy as np
# 目标函数: max 3x + 4y → min -3x - 4y
c = [-3, -4]
# 约束条件
A = [[2, 1], [1, 2]]
b = [100, 100]
# 求解
result = linprog(c, A_ub=A, b_ub=b, bounds=[(0, None), (0, None)])
print(f"最优解: x={result.x[0]:.2f}, y={result.x[1]:.2f}")
print(f"最大收益: {-result.fun:.2f}")
📊 运行结果可视化
点击「运行」查看可视化结果
将展示可行域、最优解点和目标函数等高线
NumPy
科学计算基础库,提供多维数组对象和各种数学函数
Pandas
数据处理和分析库,提供DataFrame数据结构
Matplotlib
数据可视化库,绘制各种静态、动态图表
SciPy
科学计算工具集,优化、积分、插值、信号处理
Scikit-learn
机器学习库,提供各种算法和模型评估工具
NetworkX
图论和网络分析库,处理复杂网络结构
📄 线性规划求解示例
Python
from scipy.optimize import linprog
import numpy as np
# 定义目标函数系数 (最小化问题)
c = [-3, -4] # max 3x + 4y 转换为 min -3x - 4y
# 不等式约束: A_ub @ x <= b_ub
A = [[2, 1], # 2x + y <= 100
[1, 2]] # x + 2y <= 100
b = [100, 100]
# 变量范围
x_bounds = (0, None)
y_bounds = (0, None)
# 求解
result = linprog(c, A_ub=A, b_ub=b,
bounds=[x_bounds, y_bounds],
method='highs')
print(f"最优解: x={result.x[0]:.2f}, y={result.x[1]:.2f}")
print(f"最大收益: {-result.fun:.2f}")
print(f"求解状态: {'成功' if result.success else '失败'}")
📄 数据可视化示例
Python
import matplotlib.pyplot as plt
import numpy as np
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建图形
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
# 子图1: 线图
axes[0].plot(x, y1, label='sin(x)', color='#b85c2a')
axes[0].plot(x, y2, label='cos(x)', color='#1a6e6a')
axes[0].set_title('三角函数')
axes[0].legend()
axes[0].grid(True, alpha=0.3)
# 子图2: 散点图
np.random.seed(42)
x_scatter = np.random.randn(100)
y_scatter = np.random.randn(100)
axes[1].scatter(x_scatter, y_scatter, alpha=0.6, c='#b85c2a')
axes[1].set_title('随机散点')
axes[1].set_xlabel('X轴')
axes[1].set_ylabel('Y轴')
plt.tight_layout()
plt.savefig('output.png', dpi=300, bbox_inches='tight')
plt.show()
📝 NumPy 速查表
np.array([1,2,3])
创建数组
np.zeros((3,3))
零矩阵
np.ones((3,3))
全1矩阵
np.eye(3)
单位矩阵
np.dot(A, B)
矩阵乘法
np.linalg.inv(A)
矩阵求逆
np.linalg.eig(A)
特征值分解
np.mean(arr)
平均值
Optimization Toolbox
优化工具箱,求解线性规划、非线性规划、整数规划
Statistics Toolbox
统计工具箱,回归分析、假设检验、概率分布
Curve Fitting Toolbox
曲线拟合工具箱,数据拟合和插值
📄 MATLAB 线性规划
MATLAB
% 目标函数系数 (最小化)
f = [-3; -4]; % max 3x + 4y
% 不等式约束 A*x <= b
A = [2, 1;
1, 2];
b = [100; 100];
% 变量下界
lb = [0; 0];
% 求解
[x, fval] = linprog(f, A, b, [], [], lb);
fprintf('最优解: x=%.2f, y=%.2f\n', x(1), x(2));
fprintf('最大收益: %.2f\n', -fval);
📐 常用数学公式
$x^2 + y^2 = z^2$
上标
$x_{i,j}$
下标
$\frac{a}{b}$
分数
$\sum_{i=1}^{n}$
求和
$\int_{a}^{b}$
积分
$\alpha, \beta$
希腊字母
$\rightarrow$
箭头
$\infty$
无穷
📄 论文模板片段
LaTeX
\documentclass[12pt,a4paper]{article}
\usepackage[UTF8]{ctex}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage{graphicx}
\usepackage{booktabs}
\title{数学建模论文标题}
\author{团队成员}
\date{\today}
\begin{document}
\maketitle
\begin{abstract}
本文针对XXX问题,建立了XXX模型...
\end{abstract}
\section{问题重述}
\section{模型假设}
\begin{enumerate}
\item 假设一
\item 假设二
\end{enumerate}
\section{符号说明}
\begin{table}[h]
\centering
\begin{tabular}{ccc}
\toprule
符号 & 含义 & 单位 \\
\midrule
$x$ & 决策变量 & 个 \\
$v$ & 速度 & m/s \\
\bottomrule
\end{tabular}
\end{table}
\end{document}