约当标准形

约当块的函数

怎么把一个函数 f(如 exp、sqrt 或多项式)作用到矩阵上?在单个约当块上,答案优美而显式:f(J_k(lambda)) 是上三角的,对角线上是 f(lambda),往上的各条超对角线依次是 f'(lambda)、f''(lambda)/2!、...——即 f 在 lambda 处的泰勒系数。

把 J 写成 lambda*I + N,其中 N 是幂零移位(N^k = 0)。则形式上 f(J) = sum(j>=0)f^{(j)}(lambda)/j! * N^j,由于 N^k = 0,这个和在 k 项后终止。因为 N^j 在第 j 条超对角线上为 1,所以 f(J) 的 (p,q) 元在 q >= p 时为 f^{(q-p)}(lambda)/(q-p)!,对角线以下为 0。只有 f(lambda), f'(lambda), ..., f^{(k-1)}(lambda) 这些值有关系。

这是矩阵函数演算的引擎。要对一般 A 计算 f(A):换到约当基使 A = P J P^-1,用上面的泰勒公式逐块作用 f,再共轭回去:f(A) = P f(J) P^-1。只要 f 在每个特征值附近解析(且所需导数存在),它就成立。

正是这条注意点让约当形在此不可或缺:对一个亏损(defective)矩阵,你确实需要导数,而不只是值 f(lambda)。一个仅仅可对角化的矩阵只会在每个特征值上用 f(lambda);超对角线上的那些导数项,恰恰是非对角线上的 1 留下的印记。

f(J_3(lambda)) = [f(lambda) f'(lambda) f''(lambda)/2; 0 f(lambda) f'(lambda); 0 0 f(lambda)]

大小为 3 的块的函数:f 在 lambda 处的泰勒系数沿各条超对角线上升。

两个函数给出相同的 f(A),当且仅当它们在每个特征值的值以及前(块大小减 1)阶导数上都一致。

又称
holomorphic functional calculus on a block约当块上的函数演算約當塊上的函數演算