Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的特征库+;给出错误C2660:&x27;本征::矩阵基<;派生的>;::特征值';:函数不接受2个参数 #包括 #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间特征; 使用名称空间std; void main() { int i,j; 浮点数S=2.5,g=1,B=1,H=1,D=1,E=1,g,Sz1,Sz2,Sz3,Sz4,Kp,Kpp,Km,Kmm,E1,E2; Sz1=-S; Sz2=-S; G=G*B*H; G=1; MatrixXf火腿(6,6); 对于(i=1;i_C++_Eigen_Eigenvalue - Fatal编程技术网

C++ C+中的特征库+;给出错误C2660:&x27;本征::矩阵基<;派生的>;::特征值';:函数不接受2个参数 #包括 #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间特征; 使用名称空间std; void main() { int i,j; 浮点数S=2.5,g=1,B=1,H=1,D=1,E=1,g,Sz1,Sz2,Sz3,Sz4,Kp,Kpp,Km,Kmm,E1,E2; Sz1=-S; Sz2=-S; G=G*B*H; G=1; MatrixXf火腿(6,6); 对于(i=1;i

C++ C+中的特征库+;给出错误C2660:&x27;本征::矩阵基<;派生的>;::特征值';:函数不接受2个参数 #包括 #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间特征; 使用名称空间std; void main() { int i,j; 浮点数S=2.5,g=1,B=1,H=1,D=1,E=1,g,Sz1,Sz2,Sz3,Sz4,Kp,Kpp,Km,Kmm,E1,E2; Sz1=-S; Sz2=-S; G=G*B*H; G=1; MatrixXf火腿(6,6); 对于(i=1;i,c++,eigen,eigenvalue,C++,Eigen,Eigenvalue,而言,下面的代码使用Ubuntu/Linaro下的g++4.7.3和libeigen3 dev包编译并运行 代码中的问题: 不要为特征值提供参数 不是索引范围1…大小,而是0…大小-1(我通过将Ham(I,j)替换为Ham(I-1,j-1) 特征值的返回类型是VectorXcf而不是VectorXf #包括 #包括 //#包括 #包括 #包括 #包括 #包括 使用名称空间特征; 使用名称空间std; int main() { int i,j; 浮点数S=2.5,g=1,B=1,H=1,D=1,

而言,下面的代码使用Ubuntu/Linaro下的g++4.7.3和libeigen3 dev包编译并运行

代码中的问题:

  • 不要为特征值提供参数
  • 不是索引范围1…大小,而是0…大小-1(我通过将
    Ham(I,j)
    替换为
    Ham(I-1,j-1)
  • 特征值的返回类型是VectorXcf而不是VectorXf

  • #包括
    #包括
    //#包括
    #包括
    #包括
    #包括
    #包括
    使用名称空间特征;
    使用名称空间std;
    int main()
    {
    int i,j;
    浮点数S=2.5,g=1,B=1,H=1,D=1,E=1,g,Sz1,Sz2,Sz3,Sz4,Kp,Kpp,Km,Kmm,E1,E2;
    Sz1=-S;
    Sz2=-S;
    G=G*B*H;
    G=1;
    MatrixXf火腿(6,6);
    
    对于(i=1;我非常感谢Tobias。代码现在正在Visual Studio上运行。
    #include <iostream>
    #include <math.h>
    #include <conio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <dense>
    #include <Eigenvalues> 
    
    using namespace Eigen;
    using namespace std;
    
    void main()
    {
        int i, j;
        float S = 2.5, g = 1, B = 1, H = 1, D = 1, E = 1, G, Sz1, Sz2, Sz3, Sz4, Kp, Kpp, Km, Kmm, E1, E2;
    
        Sz1 = -S;
        Sz2 = -S;
        G = g * B * H;
        G = 1;
    
        MatrixXf Ham(6, 6);
    
        for (i = 1; i <= 2 * S + 1; i++)
        {
            Sz2 = -S;
            for (j = 1; j <= 2 * S + 1; j++)
            {
                E1 = 0;
                Kp = 0;
                E2 = 0;
                Kpp = 0;
                Km = 0;
                Kmm = 0;
    
                Sz3 = Sz2;
                Sz4 = Sz2;
    
                if (i == j)
                {
                    Ham(i, j) = (G * Sz2) + D * (Sz2 * Sz2 - (1 / 3) * S * (S + 1));
                }
                else
                {
                    Kp = sqrt(S * (S + 1) - Sz3 * (Sz3 + 1));
                    Sz3 = Sz3 + 1;
                    Kpp = sqrt(S * (S + 1) - Sz3 * (Sz3 + 1));
                    Sz3 = Sz3 + 1;
    
                    if (Sz3 == Sz1)
                    {
                        E1 = Kp * Kpp;
                    }
                    else
                    {
                        E1 = 0;
                    }
    
                    Km = sqrt(S * (S + 1) - Sz4 * (Sz4 - 1));
                    Sz4 = Sz4 - 1;
                    Kmm = sqrt(S * (S + 1) - Sz4 * (Sz4 - 1));
                    Sz4 = Sz4 - 1;
    
                    if (Sz4 == Sz1)
                    {
                        E2 = Km * Kmm;
                    }
                    else
                    {
                        E2 = 0;
                    }
                    Ham(i, j) = (E1 + E2) / 2;
                }
                Sz2 = Sz2 + 1;
            }
            Sz1 = Sz1 + 1;
        }
    
        VectorXf eivals = Ham.eigenvalues(6, 6);
        cout << "The eigenvalues of the Hamiltonian matrix are:" << endl << eivals << endl;
    
        system("pause");
    }
    
    Derived = Eigen::Matrix<float, -1, -1>
    
    #include <iostream>
    #include <math.h>
    // #include <conio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <eigen3/Eigen/Dense>
    #include <eigen3/Eigen/Eigenvalues> 
    
    using namespace Eigen;
    using namespace std;
    
    int main()
    {
        int i, j;
        float S = 2.5, g = 1, B = 1, H = 1, D = 1, E = 1, G, Sz1, Sz2, Sz3, Sz4, Kp, Kpp, Km, Kmm, E1, E2;
    
        Sz1 = -S;
        Sz2 = -S;
        G = g * B * H;
        G = 1;
    
        MatrixXf Ham(6, 6);
    
        for (i = 1; i <= 2 * S + 1; i++)
        {
            Sz2 = -S;
            for (j = 1; j <= 2 * S + 1; j++)
            {
                E1 = 0;
                Kp = 0;
                E2 = 0;
                Kpp = 0;
                Km = 0;
                Kmm = 0;
    
                Sz3 = Sz2;
                Sz4 = Sz2;
    
                if (i == j)
                {
                    Ham(i-1, j-1) = (G * Sz2) + D * (Sz2 * Sz2 - (1 / 3) * S * (S + 1));
                }
                else
                {
                    Kp = sqrt(S * (S + 1) - Sz3 * (Sz3 + 1));
                    Sz3 = Sz3 + 1;
                    Kpp = sqrt(S * (S + 1) - Sz3 * (Sz3 + 1));
                    Sz3 = Sz3 + 1;
    
                    if (Sz3 == Sz1)
                    {
                        E1 = Kp * Kpp;
                    }
                    else
                    {
                        E1 = 0;
                    }
    
                    Km = sqrt(S * (S + 1) - Sz4 * (Sz4 - 1));
                    Sz4 = Sz4 - 1;
                    Kmm = sqrt(S * (S + 1) - Sz4 * (Sz4 - 1));
                    Sz4 = Sz4 - 1;
    
                    if (Sz4 == Sz1)
                    {
                        E2 = Km * Kmm;
                    }
                    else
                    {
                        E2 = 0;
                    }
                    Ham(i-1, j-1) = (E1 + E2) / 2;
                }
                Sz2 = Sz2 + 1;
            }
            Sz1 = Sz1 + 1;
        }
    
        VectorXcf eivals = Ham.eigenvalues();
    
        cout << "The eigenvalues of the Hamiltonian matrix are:" << endl << eivals << endl;
    
    
    
        system("pause");
    }