第一天:小四门概述与基础知识

1.1 小四门概述

小四门,即高等数学、线性代数、概率论与数理统计、离散数学,是大学理工科学生必须掌握的四大基础课程。它们相互关联,共同构成了数学的基础体系。

1.2 高等数学

高等数学是研究微积分、级数、常微分方程等内容的数学分支。它是小四门中的核心课程,为后续学习提供必要的数学工具。

1.2.1 微积分

微积分主要包括微分和积分两部分,是高等数学的核心内容。以下是一个简单的微分例子:

import numpy as np

# 定义一个函数
def f(x):
    return x**2

# 求导
def derivative(f, x, h=0.01):
    return (f(x + h) - f(x)) / h

# 计算 f(x) 在 x=1 处的导数
result = derivative(f, 1)
print("f'(1) =", result)

1.2.2 积分

积分是微分的逆运算,用于求解曲线下的面积、体积等问题。以下是一个简单的积分例子:

from scipy.integrate import quad

# 定义一个函数
def f(x):
    return x**2

# 计算积分
result, error = quad(f, 0, 1)
print("积分结果 =", result)

1.3 线性代数

线性代数研究向量、矩阵、行列式等概念,以及它们之间的运算。它是小四门中的另一门核心课程。

1.3.1 向量与矩阵

向量可以表示为行向量或列向量,矩阵是由多个向量组成的二维数组。以下是一个简单的向量与矩阵运算例子:

import numpy as np

# 定义一个向量
v = np.array([1, 2, 3])

# 定义一个矩阵
A = np.array([[1, 2], [3, 4]])

# 向量与矩阵乘积
result = np.dot(v, A)
print("向量与矩阵乘积 =", result)

1.3.2 行列式

行列式是矩阵的一个数值特征,用于判断矩阵的秩、求解线性方程组等。以下是一个简单的行列式计算例子:

import numpy as np

# 定义一个矩阵
A = np.array([[1, 2], [3, 4]])

# 计算行列式
result = np.linalg.det(A)
print("行列式 =", result)

1.4 概率论与数理统计

概率论与数理统计是研究随机现象和数据的数学分支。它们在各个领域都有广泛的应用。

1.4.1 概率论

概率论主要研究随机事件的发生规律。以下是一个简单的概率计算例子:

import random

# 抛掷硬币,计算正面向上的概率
def coin_toss():
    return random.choice([0, 1])

# 进行1000次抛掷,计算正面向上的次数
heads = sum(coin_toss() for _ in range(1000))
probability = heads / 1000
print("正面向上的概率 =", probability)

1.4.2 数理统计

数理统计主要研究数据的收集、整理、分析、解释和推断。以下是一个简单的描述性统计例子:

import numpy as np

# 定义一个数据集
data = np.array([1, 2, 3, 4, 5])

# 计算均值
mean = np.mean(data)
print("均值 =", mean)

# 计算标准差
std_dev = np.std(data)
print("标准差 =", std_dev)

1.5 离散数学

离散数学研究离散结构的数学分支,如集合、关系、函数、图论等。

1.5.1 集合

集合是由不同元素组成的无序整体。以下是一个简单的集合运算例子:

# 定义两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 集合的并集
union = set1 | set2
print("并集 =", union)

# 集合的交集
intersection = set1 & set2
print("交集 =", intersection)

# 集合的差集
difference = set1 - set2
print("差集 =", difference)

1.5.2 关系

关系是集合中元素之间的联系。以下是一个简单的关系例子:

# 定义一个关系
R = {(1, 2), (2, 3), (3, 4)}

# 判断元素是否在关系中
print(1 in R)  # 输出:True
print(4 in R)  # 输出:False

第二天:小四门进阶知识

2.1 高等数学进阶

2.1.1 多元函数微积分

多元函数微积分是研究多元函数的微分和积分的数学分支。以下是一个简单的多元函数微积分例子:

import numpy as np

# 定义一个多元函数
def f(x, y):
    return x**2 + y**2

# 计算偏导数
def partial_derivative(f, x, y, h=0.01):
    return (f(x + h, y) - f(x, y)) / h

# 计算 f(x, y) 在点 (1, 1) 处的偏导数
result = partial_derivative(f, 1, 1)
print("偏导数 =", result)

2.1.2 常微分方程

常微分方程是研究函数及其导数之间关系的数学分支。以下是一个简单的常微分方程例子:

import numpy as np
from scipy.integrate import odeint

# 定义一个常微分方程
def model(y, t):
    dydt = -y
    return dydt

# 求解常微分方程
t = np.linspace(0, 10, 100)
y0 = 1
solution = odeint(model, y0, t)
print("解 =", solution)

2.2 线性代数进阶

2.2.1 特征值与特征向量

特征值与特征向量是矩阵的重要性质,用于求解线性方程组、矩阵分解等问题。以下是一个简单的特征值与特征向量例子:

import numpy as np

# 定义一个矩阵
A = np.array([[2, 1], [1, 2]])

# 计算特征值与特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
print("特征值 =", eigenvalues)
print("特征向量 =", eigenvectors)

2.2.2 矩阵分解

矩阵分解是将矩阵分解为多个简单矩阵的数学方法。以下是一个简单的矩阵分解例子:

import numpy as np

# 定义一个矩阵
A = np.array([[1, 2], [3, 4]])

# QR分解
Q, R = np.linalg.qr(A)
print("Q =", Q)
print("R =", R)

2.3 概率论与数理统计进阶

2.3.1 随机变量与概率分布

随机变量是表示随机现象的数学模型。概率分布描述了随机变量的取值规律。以下是一个简单的概率分布例子:

import numpy as np
import matplotlib.pyplot as plt

# 定义一个随机变量
random_variable = np.random.normal(0, 1, 1000)

# 绘制概率密度函数
plt.hist(random_variable, bins=30, density=True)
plt.title("概率密度函数")
plt.xlabel("随机变量")
plt.ylabel("概率密度")
plt.show()

2.3.2 参数估计与假设检验

参数估计是利用样本数据估计总体参数的方法。假设检验是判断总体参数是否满足某个假设的方法。以下是一个简单的参数估计与假设检验例子:

import numpy as np
from scipy import stats

# 定义一个数据集
data = np.array([1, 2, 3, 4, 5])

# 参数估计
mean_estimate = np.mean(data)
print("均值估计 =", mean_estimate)

# 假设检验
t_statistic, p_value = stats.ttest_1samp(data, 3)
print("t统计量 =", t_statistic)
print("p值 =", p_value)

2.4 离散数学进阶

2.4.1 图论

图论研究图的结构、性质和算法。以下是一个简单的图论例子:

import networkx as nx

# 创建一个图
G = nx.Graph()
G.add_edge(1, 2)
G.add_edge(2, 3)
G.add_edge(3, 1)

# 绘制图
nx.draw(G, with_labels=True)
plt.show()

2.4.2 编码与密码学

编码与密码学是研究信息表示和传输安全的数学分支。以下是一个简单的编码例子:

# 定义一个编码函数
def encode(data, key):
    return [(data[i] + key) % 256 for i in range(len(data))]

# 定义一个解码函数
def decode(data, key):
    return [(data[i] - key) % 256 for i in range(len(data))]

# 编码和解码
data = [1, 2, 3, 4, 5]
key = 2
encoded_data = encode(data, key)
decoded_data = decode(encoded_data, key)

print("编码前 =", data)
print("编码后 =", encoded_data)
print("解码后 =", decoded_data)

第三天:小四门综合应用

3.1 高等数学与线性代数结合

3.1.1 最优化问题

最优化问题是寻找函数的最大值或最小值。以下是一个简单的最优化问题例子:

import numpy as np
from scipy.optimize import minimize

# 定义一个目标函数
def objective(x):
    return x[0]**2 + x[1]**2

# 定义一个约束条件
def constraint(x):
    return x[0] + x[1] - 1

# 求解最优化问题
result = minimize(objective, [0, 0], constraints={'type': 'eq', 'fun': constraint})
print("最优解 =", result.x)

3.1.2 线性规划

线性规划是求解线性目标函数在线性约束条件下的最优解的方法。以下是一个简单的线性规划例子:

import numpy as np
from scipy.optimize import linprog

# 定义一个目标函数
c = np.array([-1, -2])

# 定义一个系数矩阵
A = np.array([[1, 2], [2, 1]])

# 定义一个右侧向量
b = np.array([4, 4])

# 求解线性规划问题
result = linprog(c, A_ub=A, b_ub=b, method='highs')

print("最优解 =", result.x)

3.2 概率论与数理统计结合

3.2.1 估计总体均值

估计总体均值是利用样本数据估计总体均值的方法。以下是一个简单的估计总体均值例子:

import numpy as np
from scipy import stats

# 定义一个数据集
data = np.array([1, 2, 3, 4, 5])

# 估计总体均值
mean_estimate = stats.ttest_1samp(data, np.mean(data))[0]

print("估计的总体均值 =", mean_estimate)

3.2.2 假设检验

假设检验是判断总体参数是否满足某个假设的方法。以下是一个简单的假设检验例子:

import numpy as np
from scipy import stats

# 定义一个数据集
data = np.array([1, 2, 3, 4, 5])

# 假设检验
t_statistic, p_value = stats.ttest_1samp(data, 3)

print("t统计量 =", t_statistic)
print("p值 =", p_value)

3.3 离散数学与其他学科结合

3.3.1 编码与信息论

编码与信息论是研究信息表示、传输和处理的数学分支。以下是一个简单的编码与信息论例子:

import numpy as np
from scipy import stats

# 定义一个数据集
data = np.array([1, 2, 3, 4, 5])

# 计算信息熵
entropy = stats.entropy(stats.mode(data).mode)

print("信息熵 =", entropy)

3.3.2 图论与网络科学

图论与网络科学是研究网络结构、性质和算法的数学分支。以下是一个简单的图论与网络科学例子:

import networkx as nx

# 创建一个图
G = nx.Graph()
G.add_edge(1, 2)
G.add_edge(2, 3)
G.add_edge(3, 1)

# 计算图的度分布
degree_distribution = nx.degree_distribution(G)

print("度分布 =", degree_distribution)

第四天:小四门综合实践

4.1 实践项目一:线性回归

线性回归是研究变量之间线性关系的统计方法。以下是一个简单的线性回归例子:

import numpy as np
from sklearn.linear_model import LinearRegression

# 定义一个数据集
X = np.array([[1, 2], [2, 3], [3, 4]])
y = np.array([1, 2, 3])

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X, y)

# 预测
y_pred = model.predict([[4, 5]])

print("预测值 =", y_pred)

4.2 实践项目二:聚类分析

聚类分析是将数据划分为若干个类别的统计方法。以下是一个简单的聚类分析例子:

import numpy as np
from sklearn.cluster import KMeans

# 定义一个数据集
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])

# 创建KMeans聚类模型
model = KMeans(n_clusters=2)

# 训练模型
model.fit(X)

# 预测
labels = model.predict(X)

print("聚类结果 =", labels)

4.3 实践项目三:决策树

决策树是利用树形结构进行分类和回归的机器学习方法。以下是一个简单的决策树例子:

import numpy as np
from sklearn.tree import DecisionTreeClassifier

# 定义一个数据集
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 1, 0, 1, 0])

# 创建决策树模型
model = DecisionTreeClassifier()

# 训练模型
model.fit(X, y)

# 预测
y_pred = model.predict([[4, 5]])

print("预测值 =", y_pred)

通过以上四天的学习,相信你已经掌握了小四门的核心知识。在今后的学习和工作中,不断巩固和应用所学知识,将有助于你在各个领域取得更好的成绩。