万物皆对数
本文翻译自 Alex Kritchevsky 的博客文章,探索了对数、向量、维度和导数之间一些意想不到的深层联系。
原文:Everything Is Logarithms,发表于 2026 年 5 月 25 日。
序言:如果有人告诉你”万物皆对数”,你大概会以为他在谈论信息论或者某个工程近似公式。但 Alex Kritchevsky 走得更远——他试图证明,对数不仅仅是一个数学函数,而是一种极其基本的代数操作,潜藏在向量投影、偏导数、p-adic 赋值、维数运算甚至线性代数的基底下。这篇文章的数学难度偏高,但读下来的回报是:你会发现很多看似毫不相干的数学操作,其实在底层做着同一件事。
一些事物之间的联系,我还没有在别处见过。也许它们意味着什么?
无底对数
通常我们写对数时要带一个底数 b,表示:
log_b(x) = y ⟺ b^y = x
然后可以用换底公式:
log_c(x) = log_b(x) / log_b(c)
这可以从重排 b^{log_b(c)} = c 推导出来。
理解这个公式的一种方式是把它看作单位转换,类似于写 1 英里 = 5280 英尺 或 1 英尺 = 12 英寸。它的意思是:x 里有多少个 c?等于 x 里有多少个 b,除以 c 里有多少个 b。
这很简单,但不知为什么,这样想对数总是很困难。符号体系某种程度上……混淆了事情?具体来说,很难把 log_c(x) 读作”x 中有多少个 c“,因为这个英文表达应该对应符号 log_x(c),而不是 log_c(x)。”x 中 c 的因子数”稍微好一点,但还是觉得不对。
我找到了一种理解对数的方式,我认为能把这个事情变得更清晰,但你需要接受一种我称之为无底对数(baseless logarithm)的奇怪对象。它就是一个没有底的对数:
log(x)
我们把它视为一个抽象对象,而不是一个数字。然后我们把通常的”有底”对数写成两个这种无底对数的比值:
log_b(x) = log(x) / log(b)
注意,这已经是人们口语化使用的东西,比如在渐近公式中省略对数的底。但我并不是把它当作简写;把它视为一个实际的代数对象更为有用。
我们把 log(2) 解释为是单位”比特”。以比特为单位写 log(x) 就是将它分解为 log(2) 的倍数:
log(x) = log_2(x) * log(2)
那么对数的换底公式就不过是把同一个几何量用不同的单位写出来。例如,以 log(e) 为单位有时被称为”纳特”(nats):
log(x) = log_e(x) * log(e) = ln(x) nats
无底 log 在某种意义上是一个乘法版本的、在向量讨论中可能已经熟悉的对象。在向量中,通常区分点(points)和位移(displacements):一个位移向量 v 由两个点之差给出:v = P - Q。当我们把点看作有坐标时,这涉及到一个显式的原点选择 O,使得 v = (P - O) - (Q - O)。然后一个位移向量通过减去原点的因子来构造,v = v_P - v_Q。无底对数实现了同样的东西,但是用乘法:值 log(x) 可以被视为 log(x) = log_O(x) - log_O(1),对应一个未指定的原点选择;把它变成实际的数值需要将两个这样的对数相除来消去原点,log_b(x) = log(x)/log(b)。我把 log(x) 看作对应于 x 的点,把 log_b(x) 看作一旦你选择坐标系后相应的位移向量。点版本更加根本。
你可能会问:如果我们有无底对数 log(x),我们是否也有”无底指数”?通常 log_b(x) 可以写成类似 exp_b(log_b(x)) 的东西;有没有办法在不实际选择底数的情况下做到这一点,比如 exp(log(x)) 之类的?我认为答案一定是”没有”,因为我想不出让它有意义的办法。我们只能说,我们把一个对象——对数 log_b(x),即方程 b^y = x 的解——拆分成了两个对象,log(x) 和 log(b),它们各自没有”单位”,因此没有数值意义。
所以对数的作用有点像乘法向量,在这个意义上它们必须相对于一个”原点”、一个底数选择来定义。事实上,对数和向量之间有许多惊人的相似之处,我乐此不疲地阐述了一番:
对数就是向量
当以协变的方式做向量代数和微分几何时,我们区分抽象向量和在特定坐标系中的向量。
我个人的惯例是将抽象向量称为”几何”向量,总是用粗体写它们,v,而”坐标”向量,即它们在坐标中的值的元组,则在上面加一个箭头,如 v⃗。粗体几何向量总是无坐标的,而坐标向量只是数字或其他对象的集合。几何向量 v 可以写为它的坐标与基向量 ‘框架’ eᵢ 的点积:
v = v⃗ · e⃗ = vⁱ eᵢ
v 在基向量 eᵢ 上的投影可以通过将向量与基向量”测量”来得到(基向量不必是单位长度)。我喜欢把它写成除法,因为它的行为很像除法(虽然严格来说是伪除法):
vⁱ = v / eᵢ
这是我在这里非常非标准的向量除法符号。更常见的写法是用偏导数来投影微分 df 的分量,这也是伪除法操作(顺便说一句,这就是偏导数有点像除法但又不完全是的原因):
∂f/∂xⁱ = df / dxⁱ
我将两种形式都写出来,以便在它们之间翻译;我确实更喜欢我的向量除法版本,因为它避免了引入微分学中不相关的符号,但由于后者实际上是标准的,我应该把它包含进来以作比较。
假设 v 是一维的,v = v(x) eₓ。那么在”测量尺” eₓ 上的投影,会以 eₓ 的倍数来衡量它的长度:
v(x) = v / eₓ
再乘以 eₓ 就是”以 eₓ 为单位写 v“的含义:
v = v(x) eₓ
这里 eₓ 是单位”米”,v(x) 是以米为单位的 v 的值。当然,要实际计算 v(x),你必须首先有以单位表示的值——但显然这和之前对数的情况是同类事情,你可以把 v 和 eₓ 看作”无单位”的概念,通过几何比较,然后 v(x) 是它们在任意坐标系中的投影。
在微分中,这个操作是 f 的微分但限制到其 x 分量:∂f = (∂f/∂x) dx。这是一个完全有趣的对象,我相信是 x 坐标叶状结构上的协变导数(如果我没弄错的话),但通常不这样写。
无底对数在对数上执行的是同样的操作,其中 log(x) 扮演几何向量 v 的角色,log(b) 是单位向量或测量尺,扮演 eₓ 的角色。
在这个意义上,无底对数将数字写为坐标的方式,与测量尺将向量写为坐标的方式完全一样。
对数在不同单位中的等价性:
log(x) = log_a(x) log(a) = log_b(x) log(b)
与几何向量在不同单位中的等价性相同:
v = v_a e_a = v_b e_b
或:
v = (v / e_a) e_a = (v / e_b) e_b
而计算不同底数下对数比值的换底公式:
log_a(x) = log_b(x) * (log_b(a))⁻¹
完全类似于向量的坐标变换,其中 e_a 和 e_b 是同一个量的两个单位:
v_a = v_b * (e_b / e_a)
或:
∂f/∂a = (∂f/∂b) * (db/da)
偏导数的 ∂ 符号很不幸;它应该是 df/dxⁱ,以表明它是向量 df 的”xⁱ 分量”,或 ∂_x f,意为 ∂ 作用于 f 的 x 分量。更好的是 df / dxⁱ,而 ∂ 符号应该退休,但这似乎是一个太高的要求。
对数不允许而向量除法和微分符号轻易做到的,是单独谈论部分投影操作或偏导数。例如,如果 f(x,y),你只能谈论”全”对数,相对于单一单位的比值:
log_f(x,y)(z)
这等价于将一个向量写为单个基向量的倍数(如 Clifford/几何代数中):
v = v(x) e_x
或全导数:
df = (∂f/∂x) dx + (∂f/∂y) dy
但没有等价于偏微分操作的东西,没有一个”偏对数”能让你将一个数分解为:
log(x) = (log_x n) log(n) + (log_y n) log(m)
然而,我不断发现人们还是发明了对数上的投影/偏导数操作。例如,数论中的 p-adic 赋值(p-adic valuation):
v_p : ℕ → ℕ
对应于在对数基底中提取一个自然数的 log(p) 的系数:
log(n) = v₂(n) log(2) + v₃(n) log(3) + v₅(n) log(5) + ...
每个系数是一个正整数,v_p 只是取对应于 log(p) 的分量。显然,log(n) 表现得像一个向量(虽然由于系数在 ℕ 中,它严格来说是一个交换幺半群而不是向量空间……但它仍然具有向量的熟悉结构)。由于 v_p 是从这个对数中的”投影”,它仍然遵循对数恒等式,如 v_p(ab) = v_p(a) + v_p(b)。但没有一个真正好的符号来将它表达为投影,所以可悲的是,它有了一个你必须单独学习的独立命名法。
还有一种叫做算术导数(arithmetic derivative)的东西以及相应的偏导数,但据我所知,它并不完全相同,也不是我要找的东西。
同样的东西在有理数 ℚ 或根式 √ℚ(意指它是素因子的根式的乘积)上也适用,在这种情况下系数变为整数或有理数。(作为赠品,结果对象存在于一个实际的向量空间中。)
这些对数投影的另一个例子:在复分析中,一个亚纯函数 f 在点 z₀ 处的”消失阶”(order of vanishing)ord_z₀(f) 是该点处极点或零点的阶(零点类似于负极点)。也就是说,它是函数围绕该点的洛朗级数中最低次项的度数 n:
f(z) = a_n (z - z₀)ⁿ + a_{n+1} (z - z₀)^{n+1} + ...
(即,使得 f(z) / (z - z₀)ⁿ 在 z₀ 周围全纯的 n 的值)。这是用对数提取的:
n = ord_z₀(f) = lim_{z → z₀} log|f(z)| / log|z - z₀|
因为对于 z → z₀,log|f(z)| ≈ n log|z - z₀|,这支配了其他增长较慢的项。如果我们写 f(z) = (z - z₀)ⁿ g(z),其中 f 的其余部分满足 g(z₀) ≠ 0:
log f(z) = n log(z - z₀) + log g(z)
所以这是一个非常类似的操作:极限 lim_{z → z₀} 用于消去其余项,就像 ∂/∂x 用于消去偏导数中的项,提取出 df 的 dx 分量一样。
(我对复分析不是很擅长,所以对此我就说这么多。不过,这似乎很明显是基本上相同的操作。)
我们看到,无底对数 log(x) 的行为非常像向量 v 或微分 df,然后以底数表示对数,如 log_b(x),很像全导数 df/dx 或 Clifford 除法 v / e_x。缺失的是某种等价于偏导数/投影操作的东西,它仅投影到该分量上……但各个领域还是找到办法发明了它,无论是偏导数 ∂f/∂x,还是编造出 p-adic 赋值 v_p,或是复分析中的极限 lim log|f| / log|z - z₀|。尽管如此,这些相似之处都很可疑,我不禁觉得这里有某种统一的理论将这一切联系起来……但我还看不清它是什么。
为了发明一个像 ∂f/∂x 或 v_p 那样作用的 log_x,我们可以尝试的一种做法是将对数的值限制在特定空间中,例如整数或有理数。由于 log(p) 是线性无关的(这本质上等价于素因子分解的唯一性),你最终会得到像 log(1 + p) 这样的对象,它们在 ℤ 中没有值;将这些”清零”然后会得到类似于偏导数的东西。但我不知道这是否有用。当然在任何数值上下文中它都没什么帮助。
无论如何,继续说更多关于对数的事。
向量也是对数?
在微分几何中,人们将向量解释为 v = vⁱ ∂_i,写在偏导数算子 ∂_i 的基底中。这些然后可以用来创建离散平移,在各个坐标中移动:
exp(v) = exp(vⁱ ∂_i)
这里的偏导数是用来让它能作用于函数:
exp(v) f(x) = f(x + v)
这在泰勒展开的层面上也是成立的。我经常发现,抛开偏导数,直接把它们看作空间 X 上的平移算子更容易:
T_v(x) = x + v
(你也可以认为它作用于函数 f(x),但那感觉像是过度设计了。)
无论如何,这一切实际上所做的(至少在平直空间中)是将加法向量 v = vⁱ e_i 重写为乘法形式 exp(v) = Πᵢ exp(vⁱ),对应同一个操作。东西只是写法不同:它的项是相乘而不是相加,标量系数通过指数化而不是乘法来应用。向量空间的一个基现在包含每个坐标上的平移算子:
T_v = Πᵢ (T_{e_i})^{vⁱ}
(如果你恰好有一个极坐标形式的向量,如 v = r + iθ,那涉及的是第二层指数表示,通过 exp(r + iθ) = exp(r) exp(iθ),其中 θ 是旋转坐标的原点选择(旋转坐标也可能是多维的)。)
(在非平直空间中,这不那么简单,因为不同坐标的平移可能不对易;你仍然可以写成这种形式,但要复杂得多。)
这对我们意味着:看,向量也是对数!
v = log(T_v)
我不能确切说为什么,但似乎更好的方式是用无底对数来写它。我们通过认识到 T_v = e^{vⁱ ∂_i} 并将符号 e 视为平移的某种”通用”底数,剥离了符号 e 的数值含义,其中有 log(e) = 1。那么:
v = log(T_v) = vⁱ log(T_{e_i})
然后我们可以写 vⁱ = log(T_v) / log(T_{e_i})。这等价于自然对数的版本,但它避免了显式依赖于 e 的数值:任何对数的底数选择 log(T_v) / log(T_{e_i}) 都给出相同的向量概念,以 log 的指数化来表达,但现在我们明确表示 vⁱ 上的”单位”部分来自 T_{e_i} 本身的单位。
所以微分几何中的向量也可以看作对数,具体来说,是平移算子的对数。
常规乘法甚至可以被看作一个例子。像 a * b 这样的乘积可以被重写为在 log 坐标中的”平移”:
a * b = exp(log(a) + log(b))
我提到这个是因为它很可爱,但我无法想象这什么时候会有用。
对数就是导数?
这部分并不真正与其余部分连接;我只是想提一下,以便本文包含我所知道的每一个关于对数的有趣事实。
定义自然对数的一种方式是:
ln(x) = lim_{h → 0} (x^h - 1) / h
这可以通过重写 x = exp(ln x) 然后泰勒展开得到:
x^h = exp(h ln x) = 1 + h ln x + O(h²)
代入 x = e 会重现 exp 的泰勒级数:
e^h = 1 + h + h²/2! + ...
(x^h - 1)/h 这个 ln(x) 的公式类似于导数。为了明确这一点,我们可以写成:
ln(x) = d/dh [x^h] |_{h=0}
我喜欢这个形式的地方在于,它解释了 ln(x) 在微积分中所做的事是通过连接 x^h 和 ln(x) 来实现的。我一直觉得奇怪的是,对于 n ≠ -1,d/dx [x^n] = n x^{n-1} 是一个多项式,而当 n = -1 时它是对数函数。为什么对数像一个多项式?结果是,因为在很多方面 ln(x) 表现得像 x^0。具体来说,它是 x^h 的”有趣”部分,是它在 h = 0 周围的一阶近似:
x^h ≈ 1 + h ln(x)
纯属娱乐,试试用 d/dn:
d/dn [x^n] = ln(x) * x^n
对此我真的只想说这么多。但我想知道,本页中的一些其他想法是否会从通过 lim_{h → 0} (x^h - 1)/h 形式来解释中受益。
维数就是对数
另一个明显表现得像对数的东西是线性代数中的维数算子 dim。
比较:
dim(V ⊕ W) = dim(V) + dim(W)
(其中 dim 表示它作为域 F 上的向量空间的维数,并假设我们这里只讨论有限维空间)与:
log(a * b) = log(a) + log(b)
直和 ⊕ 对应于乘法 ×,这实际上只是一个符号意外,因为它在有限维向量空间上与直积相同;⊕ 符号反映了它作为集合将基相加的事实。
显然,⊕ 符号归功于 Bourbaki,因为在此之前一切都一团糟。此外,它恰好是一个余积(coproduct,这个概念后来才出现),而余积确实对应于集合上的加法,所以至少和加法有联系……但目前我认为这在很大程度上是一个错误。
与此同时,张量积 ⊗ 在集合上乘基底,但在算术上对应于一种你不太常见的”交换指数化” a ⊗ b = a^{log b},有时被称为交换超运算(commutative hyperoperation)。(因此,+ 和 × 之后的下一个”位移”操作是 a ⊗ b = exp(log(a) * log(b))。)
我有点不高兴,因为我从没见过有人指出 dim 就是一个对数,而它如此显然就是。也许我漏掉了什么?毕竟我完全忽略了无限维的情况。但我怀疑只是因为数学更愿意停留在比我更坚实的严格基础上,而这一切对我来说太随手而无法精确。我没有这样的顾虑,我喜欢推测事物之间被低估的联系,所以我觉得没问题:维数就是对数。
dim(V) 在有限 F 情况下表现得像 log 的简单原因如下。我们需要三个观察:
第一,向量空间的维数定义为其基的基数。单个向量 v ∈ V 可以被认为是一个函数 B_V → F 的选择,因为它为每个基向量 b ∈ B_V 分配一个系数 c(b) ∈ F。
第二,集合之间 A → B 的函数的基数由 |B|^|A| 给出,这就是为什么我们用符号 B^A 表示函数集。例如,A 的幂集,即 A 的所有可能子集的集合,被记为 2^A,因为它等价于函数 A → {0,1},其中给定子集被识别为映射到 1 的元素。
第三:将其应用于向量空间 V,我们可以将 F^{B_V} 解释为描述从选择的基底 B_V 到底层域 F 的函数集,它自然地具有基数 |F|^{|B_V|}。因此,其对数就是 V 在 F 上的维数:
dim_F(V) = |B_V| = log_{|F|}(|V|)
这在 V 是有限维且域 F 也是有限的情况下是字面意义上成立的。如果任一个是无限的,就不那么牢固了;然而,我倾向于认为,如果你以稍微更好的方式定义事物,这种形式的表达式在无限维的情况下也是字面意义上成立的。特别是,如果你想让像 |F|^{|B_V|} 这样的无限表达式有意义,你必须使用基数以外的东西来衡量事物的大小。我很确定正确的选择是有时被称为 numerosity(数量)的东西,尽管我不知道它和线性代数的其余部分有多兼容。改天再谈这个。
无论如何,即使你只把它视为有限域上有意义——在有限维集合的基数上——我觉得它从未出现是很奇怪的。这是如此自然的构造!也许它出现过而我错过了。但无论如何,我喜欢它,而且我恰好认为这里的对应关系比我刚才描述的更强大、更显著。
如果我们用”无底”对数重复上述过程,我们得到如下表达式:
log(V) = dim(V) * log(F)
使得:
dim(V) = log(V) / log(F)
这在我看来大体上没问题。我们必须小心的地方是张量积的定义。我们希望有如下情况:
log(V ⊗ W) = log(V) * log(W) / log(F)
但朴素的方法多了一个 log(F) 因子:
log(V ⊗ W) = log(V) * log(W)
问题在于,张量积的定义比仅仅乘基底更复杂一些。向量 v ⊗ w 不是向量 v 和 w 的笛卡尔积,而是笛卡尔积模掉其标量系数上的一个商,该商将两个标量 c₁, c₂ ∈ F 合并为一个 c₁c₂ ∈ F。由于这除去了一个 F 因子,我们必须对我们的 log 操作做同样的事情,以使基数匹配。这是通过指定一个 ⊗_F 操作,即”相对于域 F 的张量积”来实现的:
log(V ⊗_F W) = log(V) * log(W) / log(F)
这使得 dim(V ⊗ W) = dim(V) * dim(W) 成立。(我有时怀疑 ⊗ 定义中的商对大多数目的来说实际并不需要,这会有很好的副作用,让这一切更简单地运作,但让我们不深入讨论这个。)
定义:
dim(V) = log(V) / log(F)
似乎意味着我们可以相对于一个不同的底层对象(不是域 F)来取向量空间的维数/对数,并得到一个有意义的结果。例如,我的梦想是能够说这是如何构造一个具有”分数维数” 3/2 的向量空间:
dim_{ℚ}(V) = 3/2 ⟹ log_{|ℚ|}(|V|) = 3/2 ⟹ |V| = |ℚ|^{3/2} = |ℚ| * sqrt(|ℚ|)
这在基数的层面上或多或少可行(如果你允许有理数正是为了让你制作像 |ℚ|^{1/2} 这样的对象而发明的,它在非整除整数比率之间插值)。但很难想象如果你想让任何像”域”或”向量空间”及其通常公理的东西有意义,这应该如何运作。也许向量 v ∈ V 通过 dim_ℚ(V) = 3/2 被看作 ℚ 上的向量?但那样标量乘法如何工作?如果标量在 ℤ 中,它们有零因子,所以你不再在一个域中工作。而拥有维数 3/2 的向量意味着它由该伪域上的”半个”基向量张成?也许它的元素看起来像 (a, b√2)?必须尝试定义线性代数定理的版本,使其与这种分解兼容。目前不知道如何做到,但我怀疑如果有足够的想象力,是可以做到的,我希望在将来的某篇文章中尝试。
基底就是对数
向量空间的维数是其基底的基数。但就像我们使用 B^A 这样的表达式来表示集合之间的函数,因为它们在基数层面上受到尊重 |B^A| = |B|^|A|,我们不妨以同样的方式解释 dim 算子:如果 dim(V) 返回基底的基数,那么让我们说 bas(V) 返回基底本身,它恰好具有该基数。例如,如果一个向量空间 V 具有基底 B_V = {e₁, ..., e_n},我们可以写:
bas(V) = B_V = F^{dim(V)}
然后定义 dim(V) 为它的基数:
dim(V) = log_{|F|}(|bas(V)|)
为什么不呢?F 是一个满足 |F| = |F| 的对象,因此 |F^{dim(V)}| = |F|^{dim(V)}。(也可以让 dim 同时指代两种操作,也许,或者可能写大写 Log 表示同一件事。)也许把 F^{dim(V)} 当作一个集合指数化当指数是一个元组/笛卡尔积时有点奇怪,但调整事物使其工作应该很容易。
然而,有一个明显的问题。为什么这个特定的基选择会是 bas(V) 的值,既然 V 有非常多可能的有效基,没有理由选择其中一个?
也许更正确的方式是将 bas(V) 视为一个实际指向 V 的所有可能基的对象(我不确定它叫什么。有点像一个框架丛但只有一个基点?)我们可以给它坐标:空间 bas(V) 可以通过坐标 (B₀, g) 参数化,其中 B₀ 是一个任意的”原点”框架,g 是任意线性变换 g ∈ GL(V),即 V 的自同构。
技术术语是它是一个 GL(V)-torsor(GL(V)-扭子),因为原点 B₀ 的选择是任意的。这个概念从 Baez 那里更容易理解。这是那些我不喜欢的数学术语之一,因为它如此简单,不应该有一个特殊名字(更不应该有如此技术性的维基百科文章)。
我想我们应该写:
bas(V) = (V → V) × F^{dim(V)}
那么维数本身就是这个对象除以 GL(V) 的商的基数,它将是一个代表任意基底选择大小的泛型对象。
如果 bas(V) = B_V,那么应该有一个相反的操作,从基底重建向量空间。我们不妨将其等同于线性生成(linear span)操作:
span(B_V) = V
这不是通常定义 span 的方式。通常是:”span(B) 是(环境)向量空间 V 在(环境)域 F 上的子空间,包含向量 B 并且是最小维数的”。然而,要用代数方式解释它,我们并不真的想引用一个”环境”向量空间或域,因为它应该只是向量本身的操作。为此我们至少需要通过写下标 span_F 来显式指示底层域:
span_F(B_V) = V
所有这些肯定充斥着符号滥用,我不确定这是最好的思考方式。但我仍然想提出来,因为把算子 bas 和 span 看作 log 和 exp 的线性代数类比是很美的。
考虑在底数的意义上无底对数可能意味着什么也很有趣。在表达式:
dim(V) = log(V) / log(F)
中,log(V) 作为一个”基数”意味着什么?大概除以 log(F) 对应某种商……但我们需要一种解释 log(V) 本身的方式。也许是作为”V 的基数”?我不确定。我确实认为这里有某种东西,但它变得更加推测性,所以我留到下一次。
函数也是对数?
将 bas(V) 视为返回 V 的基底作为一个集合是一个通用过程的例子,据我所知这个过程没有一个确切的名称。它有点像范畴化(categorification),但不完全是。不同于为集合操作定位范畴,我们是为代数操作定位集合,并且实际上并没有引用范畴。所以我不确定。也许是”集合化”(setification)?或”结构化”(structurization)?我不知道。
这种”集合化”的标准例子是将自然数上的算术操作如 +、× 和 ^ 视为集合操作 ⊔(不交并)、×(笛卡尔积)和 →(函数 A → B)的投影。这对有限集合有效,因为这些操作尊重基数。(如前所述,我认为你必须将”基数”替换为类似”数量”(numerosity)的东西,使其在无限集合上优雅地工作,我还不知道这怎么做。)
这种思考方式的一个令人信服的理由是,集合化的算术操作实际上显式枚举了它们所描述的集合。例如,给定集合 A 和 B,你可以代数地展开 (A + B)²,变量稍后将等于 |A| 和 |B|:
(A + B)² = A² + 2AB + B²
然后在实际将变量设为 |A| 和 |B| 后,这正确地描述了基数中的关系:|A + B|² = |A|² + 2|A||B| + |B|²,所以函数 {0,1} → (A ⊔ B) 的数量是 |A|² + 2|A||B| + |B|²。有趣的是,它也描述了集合本身。展开和中的每一项恰好是四个可能的函数 {0,1} → (A ⊔ B) 之一,当我们将 A² 解释为映射 0 → A 和 1 → A 的函数时。此外,这些变量的赋值对应于函数的求值,例如设 A = 2 和 B = 3 得到 25,而设一个变量但保留另一个给出限制,例如 (2 + B)² = 4 + 4B + B² 设 |A| = 2。
如果变量的值不同于 |A|,这一切基本上也能工作,在这种情况下它们表示具有任意基数的未标记集合;然而,代数操作 (A + B)² = A² + 2AB + B² 不再有效,你必须使用二项式展开。
你可以对很多组合对象做类似的构造,尽管它们并不总是如此干净地对应代数操作。阶乘看起来像:
n! = (n/1) * ((n-1)/2) * ... * (1/n)
这枚举了 n 个元素的 n! 个排列。组合看起来像:
C(n,k) = (n/k) * ((n-1)/(k-1)) * ... * ((n-k+1)/1)
这枚举了 n 个元素的 k 元素组合;这里 k! 对应于除以 S_k。除以排列数实现了避免重复计数的商,而 C 是一个新变量,表示执行这个商(我不确定这是否是最佳写法)。注意,虽然所有这些变量最终都会等于 |A|,但将它们作为独立变量保留了步骤间的有意义信息。
我怀疑每个算术恒等式都有某种等价的集合化表达式。我也注意到,当你将这些集合表达式映射回算术时,有很多信息被丢失了。例如,你消除了导致相同基数的所有可能的商之间的区别。可能那里有很多有趣的结构。
无论如何,为了我们的目的,我想对其中一件事做一个观察。当我们将函数视为集合时,我们通常将它们描绘为”关系”:一个函数 f: A → B 被建模为集合:
f = {(a, b) : f(a) = b} ⊆ A × B
例如我们例子中的 A²。这个集合恰好具有基数 |A|,尽管不清楚这有什么用处。
现在考虑之前的 log(A^B) = B * log(A)。如果 A^B 应该描述从 B 到 A 的一个函数,那为什么它不集合化为像 B × A 这样的东西,具有基数 |B| * |A|?
也许你看到我往哪里走了。A^B 具有基数 |A|^|B|,因为它是一个函数。然而,它的对数看起来更接近它作为一个关系的表示:
log(A^B) = B * log(A)
它很像 B × A,但也可疑地不同。此外,它没有基数,因为我们需要除以一个底数,但当我们这样做时,似乎我们选择的任何底数都必须给出基数 |B| * |A|。我们怎么理解这个?
思考了一段时间后,我仍然不觉得我有一个好的解释,但我认为我们应该把它看作等价于 B × A,只是 A 和 B 写在一个不同的基底中,所以它更像是 log(A^B) 和 B × A 之间的比较,而不是数值表达式之间的比较。基数为 |B| * |A| 并不重要,因为谈论函数的基数是没有意义的。log 的作用只是将 A^B 从乘法代数转换为加法代数,但这两个对象应该是同构的并被视为相同,至少在基数没有意义的情况下是这样。
我对这部分不太确定,如果找到更好的解释,可能会回来重写。无论如何,我认为有趣(或有趣的是)log(A^B) 给出了至少类似于函数作为关系表示的东西。万物皆对数?
万物皆对数
我们讨论的是数学中最简单、最良好行为的对数版本,加法实代数 (ℝ, +) 和乘法实代数 (ℝ⁺, ×) 之间的同构。当然,数学中还有比这更复杂的对数,比如复数对数 log: ℂ → ℂ,或其更混乱的亲戚,如矩阵的对数。但我怀疑这些是概念的混淆。在 ℂ 上的对数中真正发生的事情是,角度实际上取值 θ ∈ S¹,而不是 θ ∈ ℝ,这具有不同的拓扑,而奇怪的行为源于不尊重这一点。一组不同的约定会将问题移出对数,移入值本身的定义中。不幸的是,今天事物不是这样定义的,所以你不得不处理它——但在我看来,这似乎不是对数的错。
无论如何,本文中的讨论忽略了这些情况,假设 log 确实是一个同构:它只是一种将在乘法形式中表达的东西重新以加法形式表达的方式。这恰好对应于你在数学中学到的许多操作,比如线性代数中的 dim 算子、数论中的 v_p 操作(在某种程度上)以及微积分中的全导数(也在某种程度上)。
所有这些看起来非常不同的事物似乎在某种程度上都是相同基本原语的实例。尽管这些关联来自我的某种……数字命理学……但我无法摆脱这种感觉:这一切太干净了而不可能没有意义。也许数学需要清理这一切:我们在某种程度上因为把所有冗余埋在符号中而只见树木不见森林;实际上只有少数基本操作,它们在每个地方被不同地书写,而所有模式被伪装起来使得一切都比需要的难得多。我怀疑我在本文中写下的这些模式不应该感觉像是我必须为自己重新发现的东西。它们自然地来自每个人都学到的材料。
我也不断发现物理学的数学似乎最终得到很多相同的结构。我第一次注意到这些模式是在量子力学的算子表述中,因为它似乎对数学施加了某种本体论。我想知道这是否是因为物理学在告诉我们事物”应该如何做”。由于在物理学中,数学是我们通过它观察现实的人类透镜,数学不能将自己的观点强加于事物如何做,而你意外强加的任何观点最终都会与物理学的要求相冲突。
这就是广义协变性概念背后的思想——对象的属性独立于我们用来表达它们的坐标,因此关于现实的有意义的定理最终以无坐标的方式表达。同样的哲学应用于线性代数或微分几何,导致它们的协变表述,这些表述无可争议地比坐标中的形式”更好”。
无底对数,在数学上似乎有些荒谬,是这种纯粹在数学术语上应用的一个例子。它基本上说的是,从乘法到加法代数表示的同一个东西的同构,独立于这些代数上的单位选择,但它的大部分属性与单位无关。就像几何向量的概念独立于它在特定坐标系上的投影一样。与此同时,一堆带有其他符号的其他东西基本上是与对数相同的操作,或与之密切相关。
当你将广义协变性推向极致时,你最终会要求所有数学以协变的方式表述,作为你所测量的一个东西与你所测量的另一个东西之间的显式关系。例如,我们想当然地认为 |A| 具有某个基数,但实际上基数是集合的我们度量的一个属性,我们必须清楚我们是如何做的,因为这一切都相对于这些度量的”坐标系”。这样的表述对于找到关于数学如何运作的为什么问题的答案是必要的,关于在人类定义和集合论或范畴论或任何框架之外”真正”发生了什么。本文中的观察并不很深,但在我看来,它们是指向该表述的许多线索之一。但我还看不清它。
| « Further Meditation on Taylor Series | ▲ Home |
