6.2 用迹求特征多项式

这篇具有很好参考价值的文章主要介绍了6.2 用迹求特征多项式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  迹,英文为trace,是一个从矩阵到数域的映射。对于一个 n × n n\times n n×n的方阵来说,存在 n n n个迹函数,分别称为1阶迹,2阶迹……n阶迹。k阶迹的定义是矩阵的所有k阶主子式的和。这个定义难以用数学公式来表示,k阶迹的符号是 t r [ k ] ( A ) tr^{[k]}(A) tr[k](A)我就以求一个四阶矩阵的2阶迹为例子来说明下吧。
A = ( 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 ) t r [ 2 ] ( A ) = ∣ 1 5 2 6 ∣ + ∣ 1 9 3 11 ∣ + ∣ 1 13 4 16 ∣ + ∣ 6 10 7 11 ∣ + ∣ 6 14 8 16 ∣ + ∣ 11 15 12 16 ∣ = 80 A=\begin{pmatrix}1 & 5 & 9 & 13\\ 2 & 6 & 10 & 14\\ 3 & 7 & 11 & 15\\ 4 & 8 & 12 & 16\\ \end{pmatrix}\\ tr^{[2]}(A)\\= \begin{vmatrix}1 & 5\\ 2 & 6\\ \end{vmatrix}+ \begin{vmatrix}1 & 9\\ 3 & 11\\ \end{vmatrix}+ \begin{vmatrix}1 & 13\\ 4 & 16\\ \end{vmatrix}+\\ \begin{vmatrix}6 & 10\\ 7 & 11\\ \end{vmatrix}+ \begin{vmatrix}6 & 14\\ 8 & 16\\ \end{vmatrix}+ \begin{vmatrix}11 & 15\\ 12 & 16\\ \end{vmatrix}\\ =80 A= 12345678910111213141516 tr[2](A)= 1256 + 13911 + 141316 + 671011 + 681416 + 11121516 =80
  求迹特别麻烦,需要用到二项组合树算法或递归算法。
  特别注意:0阶迹被特别定义为1,就像0的阶乘定义为1一样。

特征多项式系数

  特征多项式的系数,假设次数为 k k k,那么系数就是 ( − 1 ) n − k t r [ n − k ] ( A ) (-1)^{n-k}tr^{[n-k]}(A) (1)nktr[nk](A),所以特征多项式就是:
Δ A ( λ ) = ∑ k = 0 n ( − 1 ) n − k t r [ n − k ] ( A ) λ k \Delta_A(\lambda)=\sum^n_{k=0}(-1)^{n-k}tr^{[n-k]}(A)\lambda^{k} ΔA(λ)=k=0n(1)nktr[nk](A)λk
  比如上述的矩阵的特征多项式就是:
A = ( 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 ) t r [ 0 ] ( A ) = 1 t r [ 1 ] ( A ) = 34 t r [ 2 ] ( A ) = 80 t r [ 3 ] ( A ) = 0 t r [ 4 ] ( A ) = 0 Δ A ( λ ) = λ 4 − 34 λ 3 + 80 λ 2 A= \begin{pmatrix}1 & 5 & 9 & 13\\ 2 & 6 & 10 & 14\\ 3 & 7 & 11 & 15\\ 4 & 8 & 12 & 16\\ \end{pmatrix}\\ tr^{ [0] } (A)= 1\\ tr^{ [1] } (A)= 34\\ tr^{ [2] } (A)= 80\\ tr^{ [3] } (A)= 0\\ tr^{ [4] } (A)= 0\\ \Delta_A(\lambda)=\lambda^4-34\lambda^3+80\lambda^2 A= 12345678910111213141516 tr[0](A)=1tr[1](A)=34tr[2](A)=80tr[3](A)=0tr[4](A)=0ΔA(λ)=λ434λ3+80λ2

python实现

  我贴的只是局部代码,完整代码在GIT上。文章来源地址https://www.toymoban.com/news/detail-472069.html

    def trace(self, k):
        if k == 0:
            return 1
        result = 0
        # 求k阶主子式,需要用到所有的组合
        n = len(self.__lines)
        indices = [i for i in range(n)]
        import com.youngthing.mathalgorithm.combinatorics.binomial_combination_tree as bct

        combinations = bct.combinations(indices, k)
        for combination in combinations:
            # 组成一个新矩阵

            # 比如1 3 5代表原矩阵的1,3,5行与1,3,5列
            sub_matrix = self.main_sub_matrix(combination)
            result += sub_matrix.determinant()
        return result

    def main_sub_matrix(self, combination):
        k = len(combination)
        array = [[0 for _ in range(k)] for _ in range(k)]
        # i 列
        for i in range(k):
            # i 行
            for j in range(k):
                array[i][j]= self.__lines[combination[i]][combination[j]]
        return Matrix(array)

    def characteristic_polynomial(self):
        n = len(self.__lines)
        from com.youngthing.mathalgorithm.interpolation.horner_polynominal import HornerPolynomial
        polynomial= [0 for _ in range(n+1)]
        for i in range(n+1):
            trace = self.trace(i)
            print("tr^{",f"[{i}]","}",f"({i})=",trace)
            polynomial[i] = (-1) ** i * trace
        return HornerPolynomial(polynomial)

到了这里,关于6.2 用迹求特征多项式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • P4725 【模板】多项式对数函数(多项式 ln)

    洛谷P4725 【模板】多项式对数函数(多项式 ln) 题目大意 给你一个 n − 1 n-1 n − 1 次多项式 A ( x ) A(x) A ( x ) ,求一个   m o d   x n bmod x^n mod x n 下的多项式 B ( x ) B(x) B ( x ) ,满足 B ( x ) ≡ ln ⁡ A ( x ) B(x)equiv ln A(x) B ( x ) ≡ ln A ( x ) 。 在   m o d   998244353 bmod 998244353 mo

    2024年02月03日
    浏览(56)
  • 用链表表示多项式,并实现多项式的加法运算

    输入格式: 输入在第一行给出第一个多项式POLYA的系数和指数,并以0,0 结束第一个多项式的输入;在第二行出第一个多项式POLYB的系数和指数,并以0,0 结束第一个多项式的输入。 输出格式: 对每一组输入,在一行中输出POLYA+POLYB和多项式的系数和指数。 输入样例: 输出样例: 本

    2024年02月07日
    浏览(71)
  • 【C 数据结构】 用单链表存储一元多项式,并实现两个多项式相加运算。

    本次代码纯c语言,可以支持输入两个多项式的项式、系数、指数。 实验目的: 1 掌握单链表的基本工作原理; 2 实现链式存储下的两个多项式的相加。 实验步骤 1 定义链式存储的数据结构 2 完成多项式的初始化,即给多项式赋初值 3 完成多项式的输出 4 实现多项式的相加及结

    2024年02月06日
    浏览(49)
  • 牛顿插值法、拉格朗日插值法、三次插值、牛顿插值多项式、拉格朗日插值多项式

    两点式线性插值 调用Matlab库函数 拉格朗日二次插值: 牛顿二次插值 结果分析:通过对比不同插值方法,可以看到在一定范围内(高次会出现龙格现象),插值次数越高,截断误差越小(插值结果越接近于真实函数值);同时,对于相同次数的插值,由于不同的插值方法它们

    2024年02月11日
    浏览(48)
  • 多项式拟合

    文章内容部分参考: 建模算法入门笔记-多项式拟合(附源码) - 哔哩哔哩 (bilibili.com) (9条消息) 数学建模——人口预测模型 公有木兮木恋白的博客-CSDN博客 数学建模人口预测模型 多项式拟合是数据拟合的一种,与插值有一定区别(插值要求曲线经过给定的点,拟合不一定经

    2024年02月04日
    浏览(55)
  • Matlab 多项式拟合

    corrcoef函数 corrcoef函数用来计算矩阵相关系数。 (1)、corrcoef(x):若x为一个矩阵,返回的则是一个相关系数矩阵。 (2)、corrcoef(x,y):计算列向量x、y的相关系数,要求x、y具有相等的元素个数。如果x、y是矩阵,那么corrcoef函数会将其转换为列向量,相当于corrcoef([x(:),y(:)])。   p

    2024年02月11日
    浏览(51)
  • 多项式乘法逆

    前置知识:NTT学习笔记(快速数论变换) 情景代入 洛谷P4238 【模板】多项式乘法逆 给定一个多项式 f ( x ) f(x) f ( x ) ,求 g ( x ) g(x) g ( x ) ,满足 f ( x ) × g ( x ) ≡ 1 ( m o d x n ) f(x)times g(x)equiv 1pmod{x^n} f ( x ) × g ( x ) ≡ 1 ( mod x n ) 。系数对 998244353 998244353 998244353 取模。 1 ≤

    2024年02月02日
    浏览(47)
  • Jacobi正交多项式

    注:本文的内容主要根据文末中的参考文档[1,2,3]中的内容进行整理完成。 设 I = [ − 1 , 1 ] I=[-1,1] I = [ − 1 , 1 ] 是实轴上的标准区间,定义在 I I I 上的正函数: ω α , β ( x ) = ( 1 − x ) α ( 1 + x ) β , α − 1 , β − 1 omega_{alpha,beta}(x)=(1-x)^{alpha}(1+x)^{beta}, alpha-1,beta-1 ω α , β

    2024年02月13日
    浏览(44)
  • 多项式承诺:KZG

    参考文献: Merkle, R. ”Protocols for Public Key Cryptosystems.” Proc. 1980 Symp. on Security and Privacy, IEEE Computer Society (April 1980), 122-133. Benaloh J, Mare M. One-way accumulators: A decentralized alternative to digital signatures[C]//Workshop on the Theory and Application of of Cryptographic Techniques. Springer, Berlin, Heidelberg, 1993

    2024年02月04日
    浏览(56)
  • 多项式混沌展开法

    多项式混沌采用多项式基组合成随机空间,来描述和传播随机变量的不确定性。本质是利用正交多项式的优异性能,通过随机变量的输入到响应的映射过程建立代理模型。该方法收敛性好,使用方便,能较好的适用于复杂的系统。但是该方法理论难度高,多元情况下正交多项

    2023年04月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包