全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:14002
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

關於eigenvalue 和 eigenvector 的問題

尚未結案
baby95baby95
一般會員


發表:0
回覆:4
積分:0
註冊:2007-09-22

發送簡訊給我
#32 引用回覆 回覆 發表時間:2007-09-28 08:10:14 IP:140.116.xxx.xxx 訂閱
後來經過一些測試和上網收尋  確定是stack overflow的問題  
因為式子中我不斷的呼叫重複函式 造成堆疊太大 而導致錯誤
所以並不是jama的問題 真是誤會大了~~~

現再正採用另一種方始來寫這種遞迴~~感謝
yana125
一般會員


發表:16
回覆:17
積分:6
註冊:2006-10-24

發送簡訊給我
#33 引用回覆 回覆 發表時間:2007-12-20 00:06:29 IP:203.68.xxx.xxx 訂閱
我看了前輩們的討論之後
也試著去使用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' without specifying specialization parameters
[C Error] Unit1.cpp(58): E2379 Statement missing ;
[C Error] Unit1.cpp(60): E2451 Undefined symbol 'eig'
[/code]
不知道是不是有東西沒有include到
還是有東西沒加到
[/code]
baby95baby95
一般會員


發表:0
回覆:4
積分:0
註冊:2007-09-22

發送簡訊給我
#34 引用回覆 回覆 發表時間:2007-12-20 14:09:58 IP:140.116.xxx.xxx 訂閱
真是不好意思  因為之前問題已解決 但是一直沒有上來回覆 真是非常的抱歉
由於小弟用到的方法是區域成長法 所以在函式中必須不斷的呼叫種子成長的函式
才會造成stack overflow (一直重複呼叫相同函式)
現今已改用另一種方法來紀錄種子編號 所以該問題並不是jama物件上的問題
只是當初並沒有仔細考慮到堆疊上的負擔

在此感謝熱心的大大們~~~
peterpeng
一般會員


發表:2
回覆:1
積分:0
註冊:2004-08-04

發送簡訊給我
#35 引用回覆 回覆 發表時間:2009-05-15 17:04:50 IP:118.169.xxx.xxx 訂閱

===================引 用 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' without specifying specialization parameters
[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] [>>]
系統時間:2024-04-25 8:27:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!