feat: 增加曲率算法

This commit is contained in:
ViperEkura 2026-04-07 17:49:29 +08:00
parent 98b52ea99b
commit 52a21a3cc8
2 changed files with 78 additions and 0 deletions

View File

@ -0,0 +1,15 @@
## 图论常见算法
### Dijkstra算法
用于求解单个源最短路问题:
1. 初始化将所有顶点的距离设为正无穷源顶点设为0
2. 迭代:从源顶点出发,遍历所有边,更新顶点的距离;
3. 检验:检查是否存在负权重环,如果有则返回错误;
4. 返回:返回所有顶点的距离。
### Bellman-Ford算法
### Bellman-Ford算法

View File

@ -0,0 +1,63 @@
# 曲率的定义
## 1. 平面曲线的曲率
### 曲率定义
曲率是曲线的切线方向相对于弧长的变化率,表示经过单位弧长时转过多少角度,定义为:
$$\kappa = \frac{d\theta}{ds}$$
其中:
- $\theta$ 是曲线的切线与水平方向的夹角(切线角)
- $s$ 是曲线的弧长
### 直观理解
对于圆来说,曲率是恒定的:
- 半径为 $R$ 的圆,其曲率为 $\kappa = \frac{1}{R}$
- 半径越小,曲率越大,弯曲越厉害
### 计算公式
对于常见的曲线来说,其一般形式可以经过如下方式求得:
$$
\begin{aligned}
\tan \theta &= \frac{dy}{dx} \\
\frac{d}{dx}\left(\tan \theta\right) \cdot \frac{d\theta}{dx} &= \frac{d^2y}{dx^2} \\
\frac{d\theta}{dx} &= \frac{\frac{d^2y}{dx^2}}{1 + \left(\frac{dy}{dx}\right)^2} \\
\kappa &= \frac{d\theta}{ds} \\
&= \frac{d\theta / dx}{ds / dx} \\
&= \frac{\frac{d^2y}{dx^2}}{\left[1 + \left(\frac{dy}{dx}\right)^2\right]^{3/2}} \\
\end{aligned}
$$
对于参数方程的形式:
$$
\begin{cases}
x = x(t) \\
y = y(t)
\end{cases}
$$
其一般形式可以通过以下方式求解:
$$
\begin{aligned}
\frac{dy}{dx} &= \frac{dy / dt}{dx / dt} \\
&= \frac{y'}{x'} \\
\frac{d^2y}{dx^2} &= \frac{d}{dx}\left(\frac{dy}{dx}\right) \\
&= \frac{d\left(\frac{dy}{dx} \right) / dt}{dx / dt} \\
&= \frac{d\left(\frac{y'}{x'} \right) / dt}{dx / dt} \\
&= \frac{\frac{y''x' - y'x''}{(x')^2}}{x'}
= \frac{y''x' - y'x''}{(x')^3} \\
\kappa
&= \frac{\frac{d^2y}{dx^2}}{\left[1 + \left(\frac{dy}{dx}\right)^2\right]^{3/2}} \\
&= \frac{\frac{y''x' - y'x''}{(x')^3}}{\left[1 + \left(\frac{y'}{x'}\right)^2\right]^{3/2}} \\
&= \frac{y''x' - y'x''}{(x')^3} \cdot \frac{(x')^{3}}{(x'^2 + y'^2)^{3/2}} \\
&= \frac{y''x' - y'x''}{(x'^2 + y'^2)^{3/2}}
\end{aligned}
$$