钾肥喵的窝

我在 CODING 部署的 Hexo 博客

0%

符号表

  • \(\mathbb{A}\) 多项式, 最高次数为 \(n-1(n=2^{k})\), 系数表示为 \(a_{i}x^{i}\)
  • \(\mathbb{A}(x)\) 多项式 \(\mathbb{A}\)\(x\) 处的点值
  • \({_{0}\mathbb{A}}, {_{1}\mathbb{A}}\) 多项式 \(\mathbb{A}\) 的偶数次项和奇数次项
  • \(\mathbb{A} \circ \mathbb{B}\) 将两个多项式对应位进行 \(\circ\) (加 \(+\), 减 \(-\), 乘 \(*\)) 操作 (系数表示为 \(a_{i}\circ b_{i}\))
  • \(\mathbb{A} \circ \mathbb{B}\) 将两个多项式进行 \(\circ\) (乘 \(\times\), 异或 \(\oplus\), 或 \(\&\), 与 \(|\)) 卷积
  • \((\mathbb{A}, \mathbb{B})\) 将两个多项式进行拼接操作
  • \(\mathcal{F}, \mathcal{F}^{-1}\) 快速傅里叶变换及其逆变换
  • \(\mathcal{N}, \mathcal{N}^{-1}\) 快速数论变换及其逆变换
  • \(\mathcal{W}, \mathcal{W}^{-1}\) 快速沃尔什变换及其逆变换
  • \(\mathcal{M}, \mathcal{M}^{-1}\) 快速莫比乌斯变换及其逆变换
阅读全文 »

本系列参考自 Quaternions for Computer Graphics, 四元数与三维旋转视觉SLAM十四讲(第二版)

四元数到旋转矩阵的转换

\[ \begin{align*} \boldsymbol{q_{a}}\boldsymbol{q_{b}} = L(q_{a})q_{b} &=\begin{bmatrix} s_{a} &-x_{a} &-y_{a} &-z_{a} \\ x_{a} &s_{a} &-z_{a} &y_{a} \\ y_{a} &z_{a} &s_{a} &-x_{a} \\ z_{a} &-y_{a} &x_{a} &s_{a} \end{bmatrix} \begin{bmatrix}s_{b}\\ x_{b}\\ y_{b}\\ z_{b}\end{bmatrix} \\ \boldsymbol{q_{a}}\boldsymbol{q_{b}} = R(q_{b})q_{a} &=\begin{bmatrix} s_{b} &-x_{b} &-y_{b} &-z_{b} \\ x_{b} &s_{b} &z_{b} &-y_{b} \\ y_{b} &-z_{b} &s_{b} &x_{b} \\ z_{b} &y_{b} &-x_{b} &s_{b} \end{bmatrix} \begin{bmatrix}s_{a}\\ x_{a}\\ y_{a}\\ z_{a}\end{bmatrix} \end{align*} \]

由此可得:

\[ \begin{align*} pvp^{-1} &=R(p^{-1})L(p)v \\ &=\begin{bmatrix} s &x &y &z \\ -x &s &-z &y \\ -y &z &s &-x \\ -z &-y &x &s \end{bmatrix} \begin{bmatrix} s &-x &-y &-z \\ x &s &-z &y \\ y &z &s &-x \\ z &-y &x &s \end{bmatrix} \begin{bmatrix}0\\ x_{v}\\ y_{v}\\ z_{v}\end{bmatrix}\\ &= \begin{bmatrix} 1 &0 &0 &0 \\ 0 &1-2(y^{2}+z^{2}) &2(xy-sz) &2(xz+sy) \\ 0 &2(xy+sz) &1-2(x^{2}+z^{2}) &2(yz-sx) \\ 0 &2(xz-sy) &2(yz+sx) &1-2(x^{2}+y^{2}) \end{bmatrix} \begin{bmatrix}0\\ x_{v}\\ y_{v}\\ z_{v}\end{bmatrix} \end{align*} \]

忽略第一行和第一列就得到了旋转矩阵:

\[ R=\begin{bmatrix} 1-2(y^{2}+z^{2}) &2(xy-sz) &2(xz+sy) \\ 2(xy+sz) &1-2(x^{2}+z^{2}) &2(yz-sx) \\ 2(xz-sy) &2(yz+sx) &1-2(x^{2}+y^{2}) \end{bmatrix} \]

阅读全文 »

本系列参考自 Quaternions for Computer Graphics, 四元数与三维旋转视觉SLAM十四讲(第二版)

复数的旋转

首先来研究一下复数是怎么旋转的.

首先把复数乘法写成矩阵形式:

\[ z_{1}z_{2}=\begin{bmatrix} a &-b\\ b & a \end{bmatrix}\begin{bmatrix} c\\ d \end{bmatrix} \]

如果 \(z_{1}\) 的模长为 \(k\), 我们可以把上式改写:

\[ z_{1}z_{2}=k\begin{bmatrix} \cos{\theta} &-\sin{\theta}\\ \sin{\theta} & \cos{\theta} \end{bmatrix}\begin{bmatrix} c\\ d \end{bmatrix} \]

熟悉的东西是不是出现了! 没错, 旋转矩阵! 实际上, 复数乘法不但实现了旋转操作(逆时针旋转 \(\arctan{\frac{a}{b}}\)), 还实现了缩放操作(即前面的系数 \(k\)).

阅读全文 »

本系列参考自 Quaternions for Computer Graphics视觉SLAM十四讲(第二版)

小历史

复数是否存在三维等价物? 这个问题吸引力很多数学家来研究.

我们知道, 二维复数可以用 \(a+bi\) 表示, 于是 Hamilton 猜想三维复数可以用 \(a+bi+cj\) 的形式表示, 但无法解决三维复数乘法的封闭性. 十多年后, 他在散步时找到了解决方案: 三维不行就用四维.

四元数的定义

四元数相当于加强版的复数, 它有一个 实部 和三个 虚部. 下式中的 \(\mathrm{i,j,k}\) 是四元数 \(\boldsymbol{q}\) 的三个虚部.

\[ \boldsymbol{q}=q_{0}+q_{1}\mathrm{i}+q_{2}\mathrm{j}+q_{3}\mathrm{k} \]

四元数的三个虚部满足如下关系:

\[ \begin{cases} \mathrm{i}^{2}=\mathrm{j}^{2}=\mathrm{k}^{2}=-1 \\ \mathrm{ij}=\mathrm{k}, \quad \mathrm{ji}=-\mathrm{k} \\ \mathrm{jk}=\mathrm{i}, \quad \mathrm{kj}=-\mathrm{i} \\ \mathrm{ki}=\mathrm{j}, \quad \mathrm{ik}=-\mathrm{j} \end{cases} \]

参考复平面, 把 \(\mathrm{i,j,k}\) 看作坐标轴, 可以用标量和向量表示四元数:

\[ \boldsymbol{q}=\begin{bmatrix}s, \boldsymbol{v}\end{bmatrix}^{T}, \qquad s=q_{0}\in\mathbb{R}, \qquad \boldsymbol{v}=\begin{bmatrix}q_{1}, q_{2}, q_{3}\end{bmatrix}^{T}\in\mathbb{R}^{3} \]

阅读全文 »

旋转矩阵

这部分内容在图形学和线性代数中已经接触过了, 这里就不赘述了.

欧氏变换

这里关注一个小的思考题: 欧氏变换中两个平移向量为什么坐标上不是相反数?

简而言之就是因为旋转操作的影响, 两个方向相反的向量体现在坐标上并不是相反数关系, 简单推导如下:

首先很容易得到一对坐标变换公式(符号定义与书中一致): \[ \begin{cases} \boldsymbol{a_{1}} = \boldsymbol{R_{12}}\boldsymbol{a_{2}} + \boldsymbol{t_{12}} \\ \boldsymbol{a_{2}} = \boldsymbol{R_{21}}\boldsymbol{a_{1}} + \boldsymbol{t_{21}} \end{cases} \]

于是就有:

\[ \begin{gather*} \boldsymbol{a_{1}} = \boldsymbol{R_{12}}\boldsymbol{a_{2}} + \boldsymbol{t_{12}} \\ \Downarrow\\ \boldsymbol{R_{21}}\boldsymbol{a_{1}} = \boldsymbol{R_{21}}\boldsymbol{R_{12}}\boldsymbol{a_{2}} + \boldsymbol{R_{21}}\boldsymbol{t_{12}} \\ = \boldsymbol{I}\boldsymbol{a_{2}} + \boldsymbol{R_{21}}\boldsymbol{t_{12}} \\ \Downarrow\\ \boldsymbol{a_{2}} = \boldsymbol{R_{21}}\boldsymbol{a_{1}} - \boldsymbol{R_{21}}\boldsymbol{t_{12}} \end{gather*} \]

从而: \(\boldsymbol{t_{21}} = -\boldsymbol{R_{21}}\boldsymbol{t_{12}}\), 这个结论在公式 (3.14) 中也有体现

阅读全文 »

一些符号

狄拉克符号

狄拉克符号有两种态矢量: \(\langle\cdot|\)\(|\cdot\rangle\), 它们分别被称为左矢右矢, 代表着行向量和列向量

以下是一些常见的表示:

\[ \begin{align*} |0\rangle &= \begin{bmatrix}1 \\ 0\end{bmatrix}, \\ |1\rangle &= \begin{bmatrix}0 \\ 1\end{bmatrix}, \\ |+\rangle &= \frac{1}{\sqrt{2}}\Big(|0\rangle+|1\rangle\Big) = &\frac{1}{\sqrt{2}}\begin{bmatrix}1 \\ 1\end{bmatrix}, \\ |-\rangle &= \frac{1}{\sqrt{2}}\Big(|0\rangle-|1\rangle\Big) = &\frac{1}{\sqrt{2}}\begin{bmatrix}1 \\ -1\end{bmatrix} \end{align*} \]

\(\langle a |\)\(| b \rangle\) 的内积可简记作: \(\langle a | b \rangle\)

张量积

每个量子比特都是一个向量空间, 因此不能简单的相乘, 张量积就是从各个向量空间创建新的向量空间的操作, 其符号为 \(\otimes\)

\[ \begin{align*} \begin{bmatrix}a \\ b\end{bmatrix} \otimes \begin{bmatrix}c \\ d\end{bmatrix} = \begin{bmatrix} a\begin{bmatrix}c \\ d\end{bmatrix} \\\\ b\begin{bmatrix}c \\ d\end{bmatrix} \end{bmatrix} = \begin{bmatrix}ac \\ ad \\ bc \\ bd\end{bmatrix} \end{align*} \]

阅读全文 »

什么是期权

期权是投资者约定在未来买入或者卖出某项资产的权利.

这里的权利就是期权与期货的最大不同: 期权可以选择行使权利或者不行使权利.

期权主要分两种类型: 看涨期权(Call)和看跌期权(Put), 分别对应以某一固定价格买入卖出资产的权利.

看涨期权的收益=相关市场价-执行价-溢价; 看跌期权的收益=执行价-相关市场价-溢价. (此处的溢价就是购买期权的费用)

而根据行使权利的时间限制又可以把期权分为美式期权(到期日之前任意交易日都可)和欧式期权(只能在到期日行使权利), 二者的共同点是如果不行使权利, 在到期后都自动作废.

阅读全文 »

保持在页面底端

用尽各种方法都不行, 最后用了一个比较脏的方法: 放两个透明按钮, 通过循环设置焦点的方法让浏览器自动滚动到焦点处.

1
2
<button @ref="myrefA" style="background:transparent; border-width:0px; outline:none; width:1px; height:1px;"></button>
<button @ref="myrefB" style="background:transparent; border-width:0px; outline:none; width:1px; height:1px;"></button>
1
2
3
4
5
6
7
8
9
10
11
private ElementReference myrefA;
private ElementReference myrefB;

async void Function()
{
// do something ...
await myrefA.FocusAsync();
StateHasChanged();
await myrefB.FocusAsync();
StateHasChanged();
}
阅读全文 »