【问题标题】:I want to calculate the eigenvalues of a 2x2 matrix in Mathematica where the matrix elements are functions我想在 Mathematica 中计算 2x2 矩阵的特征值,其中矩阵元素是函数
【发布时间】:2020-07-16 18:31:22
【问题描述】:

我对 Mathematica 还很陌生。我想计算 2x2 矩阵的特征值,其中矩阵元素是 2 个变量的函数。我正在使用的代码如下:

\[Phi] = Pi/4, t1 = 1, t2 = 1/3, U;
f1[k1_, k2_] := Cos[\[Phi] + Sqrt[3] * k2] + Cos[\[Phi] - 3 k1/2 - Sqrt[3] k2/2] + Cos[\[Phi] + 3 k1/2 - Sqrt[3] k2/2], f1[k1_, k2_] := Cos[\[Phi] - Sqrt[3] * k2] + Cos[\[Phi] + 3 k1/2 + Sqrt[3] k2/2] + Cos[\[Phi] - 3 k1/2 + Sqrt[3] k2/2];
g[k1_, k2_] := Exp[-\[ImaginaryJ] k1] + 2 Cos[Sqrt[3]* k2/2] Exp[-\[ImaginaryJ]  k1/2];
mat[k1_, k2_] = {{U - 2 *t2 * f1, t1*g}, {t1*Conjugate[g],  2 *t2 * f2 - U}};
Eigenvalues[mat]

从代码中可以看出,我有三个函数 f1、f2 和 g,它们有两个参数 k1 和 k2,并给出了它们的形式。我需要对角化的矩阵是 mat。我需要以分析形式获得特征值,然后在 k1 和 k2 上绘制它们。但是在这段代码 sn-p 之后,当我尝试运行它时,我什么也没有得到,即没有任何输出。我该如何解决这个问题?

【问题讨论】:

    标签: matrix wolfram-mathematica eigenvalue


    【解决方案1】:
    f1[k1_, k2_] := Cos[ϕ + Sqrt[3]*k2] + Cos[ϕ - 3 k1/2 - Sqrt[3] k2/2] +
       Cos[ϕ + 3 k1/2 - Sqrt[3] k2/2]
    
    f1[k1_, k2_] := Cos[ϕ - Sqrt[3]*k2] + Cos[ϕ + 3 k1/2 + Sqrt[3] k2/2] +
       Cos[ϕ - 3 k1/2 + Sqrt[3] k2/2]
    
    g[k1_, k2_] := Exp[-\[ImaginaryJ] k1] +
       2 Cos[Sqrt[3]*k2/2] Exp[-\[ImaginaryJ] k1/2];
    
    mat[k1_, k2_] := {{U - 2*t2*f1, t1*g}, {t1*Conjugate[g], 2*t2*f2 - U}}
    
    form = Eigenvalues[{{a, b}, {c, d}}]
    

    {1/2 (a + d - Sqrt[a^2 + 4 b c - 2 a d + d^2]), 1/2 (a + d + Sqrt[a^2 + 4 b c - 2 a d + d^2])}

    ϕ = Pi/4;
    t1 = 1;
    t2 = 1/3;
    
    {{a, b}, {c, d}} = mat[k1, k2]
    

    {{-((2 f1)/3) + U, g}, {共轭[g], (2 f2)/3 - U}}

    FullSimplify[form]
    

    {1/3 (-f1 + f2 - Sqrt[(f1 + f2 - 3 U)^2 + 9 g 共轭[g]]), 1/3 (-f1 + f2 + Sqrt[(f1 + f2 - 3 U)^2 + 9 g 共轭[g]])}

    【讨论】:

      【解决方案2】:

      仔细比较这个,一个字一个字,你有什么

      ϕ=Pi/4;t1=1;t2=1/3;
      f1[k1_,k2_]:=Cos[ϕ+Sqrt[3]*k2]+Cos[ϕ-3 k1/2-Sqrt[3] k2/2]+Cos[ϕ+3 k1/2-Sqrt[3] k2/2];
      f2[k1_,k2_]:=Cos[ϕ-Sqrt[3]*k2]+Cos[ϕ+3 k1/2+Sqrt[3] k2/2]+Cos[ϕ-3 k1/2+Sqrt[3] k2/2];
      g[k1_,k2_]:=Exp[-\[ImaginaryJ] k1]+2 Cos[Sqrt[3]*k2/2] Exp[-\[ImaginaryJ] k1/2];
      mat[k1_,k2_]:={{U-2*t2*f1[k1,k2],t1*g[k1,k2]},{t1*Conjugate[g[k1,k2]],2*t2*f2[k1,k2]-U}};
      Eigenvalues[mat[k1,k2]]
      

      然后非常仔细地检查输出以尝试验证它是否正确。

      【讨论】:

      • FullSimplify[Eigenvalues[mat[k1,k2]]] 在我的设置中花费了大约 100 秒。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多