二次型简介
二次型就是可以用二元参数表示的多项式,系数用二次型矩阵表示,这个二次型矩阵很值得研究。
- 二次型矩阵可以表示二次曲线

-
二次型矩阵一定是实对称矩阵,这意味着它可以被正交对角化。
为什么要被正交对角化呢?这是因为,如果要在合同变换前后保持二次型全等不变,变换矩阵需要满足QTQ=E,即Q是正交矩阵。
这样的话,我们只要使用特征值分解并且确保向量正交化,就可以轻松完成对角化,进而完成标准化,获得我们所需的信息
-
二次型矩阵的合同变换可以转化为标准型,且不同基向量组下表示同一个二次型的实对称矩阵是一组合同矩阵。其中对应的合同变换矩阵是对应的基变换矩阵,他一定可逆。
-
下面开始椭圆标准化和求长短轴的过程:
我们从给定的二次型方程(椭圆)开始:
ax2+2bxy+cy2=1
这个方程是一个二次型,可以写成矩阵形式:
Q(x,y)=[xy][abbc][xy]=1
这里的系数矩阵是对称矩阵:
A=[abbc]
我们希望通过合同对角化(正交变换)将这个矩阵转化为对角矩阵,从而得到标准椭圆的形式。这样就可以得到长短轴。
假设矩阵 A 的特征向量分别为 v1 和 v2,则矩阵 P 由这两个特征向量组成,且:
P=[v1v2]
如果我们使用矩阵 P 进行坐标变换,即令新的坐标 x′ 为:
x′=P−1x
那么,经过坐标变换后,二次型方程变为:
x′TΛx′=1
其中 Λ=diag(λ1,λ2) 是对角矩阵,包含了二次型的特征值。
λ112x1′2+λ212x2′2=1
这意味着:
- 长轴的半长轴 a=λ11,
- 短轴的半长轴 b=λ21.
为了对角化矩阵 A,我们首先求解其特征值和特征向量。特征值 λ1 和 λ2 是矩阵 A 的解,满足以下特征方程:
det(A−λI)=0
即:
det[a−λbbc−λ]=0
计算行列式:
(a−λ)(c−λ)−b2=0
展开后得到:
λ2−(a+c)λ+(ac−b2)=0
这个方程的解就是矩阵 ( A ) 的特征值 ( \lambda_1 ) 和 ( \lambda_2 ),分别为:
λ1,λ2=2(a+c)±(a+c)2−4(ac−b2)
这两个特征值即为二次型的主轴方向上的系数,它们决定了椭圆的长短轴。
1 2 3 4 5 6 7 8
| float det = (cov.x * cov.z - cov.y * cov.y); if (det == 0.0f) return; float det_inv = 1.f / det; float3 conic = { cov.z * det_inv, -cov.y * det_inv, cov.x * det_inv }; float mid = 0.5f * (cov.x + cov.z); float lambda = mid + sqrt(max(0.01f, mid * mid - det)); float my_radius = extent * sqrt(lambda);
|
二次型与线性变换的区别
线性变换和二次型的矩阵,虽然都叫矩阵,但它们的性质是完全不同的。
线性变换作为张量是一个(1,1)型张量,而二次型是一个(0,2)型张量。这才造成了它们在基变换下的变换规则不同。前者是V∗和V的张量积,后者是V∗和V∗的张量积。