關於eigenvalue 和 eigenvector 的問題 |
尚未結案
|
baby95baby95
一般會員 發表:0 回覆:4 積分:0 註冊:2007-09-22 發送簡訊給我 |
|
yana125
一般會員 發表:16 回覆:17 積分:6 註冊:2006-10-24 發送簡訊給我 |
我看了前輩們的討論之後
也試著去使用JAMA,TNT 然後參考cowbjt大大所提供的程式碼 但有問題 [code cpp] #include "jama_eig.h" //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Text = ""; TNT::Array2D< double > scatter_matrix(4,4); TNT::Array2D< double > eig_value_matrix2(4,4); TNT::Array1D< double > eig_value_matrix(4); scatter_matrix[0][0] = 3; scatter_matrix[0][1] = 4; scatter_matrix[0][2] = 2; scatter_matrix[0][3] = 10; scatter_matrix[1][0] = 4; scatter_matrix[1][1] = 12; scatter_matrix[1][2] = 5; scatter_matrix[1][3] = 7; scatter_matrix[2][0] = 2; scatter_matrix[2][1] = 5; scatter_matrix[2][2] = 21; scatter_matrix[2][3] = 5; scatter_matrix[3][0] = 10; scatter_matrix[3][1] = 7; scatter_matrix[3][2] = 5; scatter_matrix[3][3] = 13; for (int i=0; i < 4; i ) { for (int j=0; j < 4; j ) { Memo1->Text = Memo1->Text FloatToStr(scatter_matrix[i][j]) " "; } Memo1->Lines->Add(""); } Memo1->Lines->Add(""); JAMA::Eigenvalue eig(scatter_matrix); TNT::Array2D< double > eig_matrix(4,4); eig.getV(eig_matrix); for (int i=0; i < 4; i ) { for (int j=0; j < 4; j ) { Memo1->Text = Memo1->Text FloatToStr(eig_matrix[i][j]) " "; } Memo1->Lines->Add(""); } Memo1->Lines->Add(" ----------------------------------- "); eig.getRealEigenvalues(eig_value_matrix); for (int j=0; j < 4; j ) Memo1->Text = Memo1->Text FloatToStr(eig_value_matrix[j]) " "; Memo1->Lines->Add(""); } 會出現這樣的錯誤 [code cpp] [C Error] Unit1.cpp(58): E2102 Cannot use template 'JAMA::Eigenvalue [C Error] Unit1.cpp(58): E2379 Statement missing ; [C Error] Unit1.cpp(60): E2451 Undefined symbol 'eig' [/code] 不知道是不是有東西沒有include到 還是有東西沒加到 |
baby95baby95
一般會員 發表:0 回覆:4 積分:0 註冊:2007-09-22 發送簡訊給我 |
|
peterpeng
一般會員 發表:2 回覆:1 積分:0 註冊:2004-08-04 發送簡訊給我 |
===================引 用 yana125 文 章=================== 我看了前輩們的討論之後 也試著去使用JAMA,TNT 然後參考cowbjt大大所提供的程式碼 但有問題 [code cpp] #include "jama_eig.h" //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Text = ""; TNT::Array2D< double > scatter_matrix(4,4); TNT::Array2D< double > eig_value_matrix2(4,4); TNT::Array1D< double > eig_value_matrix(4); scatter_matrix[0][0] = 3; scatter_matrix[0][1] = 4; scatter_matrix[0][2] = 2; scatter_matrix[0][3] = 10; scatter_matrix[1][0] = 4; scatter_matrix[1][1] = 12; scatter_matrix[1][2] = 5; scatter_matrix[1][3] = 7; scatter_matrix[2][0] = 2; scatter_matrix[2][1] = 5; scatter_matrix[2][2] = 21; scatter_matrix[2][3] = 5; scatter_matrix[3][0] = 10; scatter_matrix[3][1] = 7; scatter_matrix[3][2] = 5; scatter_matrix[3][3] = 13; for (int i=0; i < 4; i ) { for (int j=0; j < 4; j ) { Memo1->Text = Memo1->Text FloatToStr(scatter_matrix[i][j]) " "; } Memo1->Lines->Add(""); } Memo1->Lines->Add(""); JAMA::Eigenvalue eig(scatter_matrix); TNT::Array2D< double > eig_matrix(4,4); eig.getV(eig_matrix); for (int i=0; i < 4; i ) { for (int j=0; j < 4; j ) { Memo1->Text = Memo1->Text FloatToStr(eig_matrix[i][j]) " "; } Memo1->Lines->Add(""); } Memo1->Lines->Add(" ----------------------------------- "); eig.getRealEigenvalues(eig_value_matrix); for (int j=0; j < 4; j ) Memo1->Text = Memo1->Text FloatToStr(eig_value_matrix[j]) " "; Memo1->Lines->Add(""); } 會出現這樣的錯誤 [code cpp] [C Error] Unit1.cpp(58): E2102 Cannot use template 'JAMA::Eigenvalue [C Error] Unit1.cpp(58): E2379 Statement missing ; [C Error] Unit1.cpp(60): E2451 Undefined symbol 'eig' [/code] 不知道是不是有東西沒有include到 還是有東西沒加到 [/code] 把下面這行 JAMA::Eigenvalue eig(scatter_matrix); 改成 JAMA::Eigenvalue< double > eig(scatter_matrix); |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |