2015-04-12 73 views
1

如何提高犰狳複數矩陣乘法結果的精度。它接近4位小數[這是結果(35.9682,-150.246)]的一個例子],但我想要精確到小數點後8位。由於犰狳複雜矩陣乘法早期逼近

+0

這是常見問題。您可以隨時增加打印輸出的**精度**超出您所看到的默認值。 –

+0

@Dirk Eddelbuettel,我該怎麼做?在我的matlab代碼中,我的複數矩陣乘法具有10或更多的精度,但在我的armadillo C++中,早期逼近確實影響結果。感謝 –

+0

您仍然混淆了打印精度與計算精度。在這裏沒有_early approximation_。 –

回答

2

正如你似乎不相信我在評論中說:

#include <armadillo> 

using namespace std; 
using namespace arma; 

int main(int argc, char** argv) { 
    mat A = randu<mat>(4,5); 
    mat B = randu<mat>(4,5); 

    mat C = A*B.t(); 
    cout << C << endl; 

    cout.precision(11); 
    cout.setf(ios::fixed); 
    C.raw_print(cout, "With increased precisions:"); 

    return 0; 
} 

這確實如預期:

[email protected]:/tmp$ g++ -o eze eze.cpp -larmadillo -lblas -llapack 
[email protected]:/tmp$ ./eze 
    0.9713 1.3566 0.7946 1.6896 
    1.2593 1.1457 0.9011 1.6260 
    1.1954 0.8484 1.0444 1.6753 
    1.6225 1.5009 1.2935 2.2019 

With increased precisions: 
0.97126557882 1.35660885673 0.79462856896 1.68955180769 
1.25933041551 1.14565671740 0.90105251304 1.62595390611 
1.19543745264 0.84844286454 1.04436441020 1.67528315350 
1.62246223165 1.50087016389 1.29351914350 2.20190979625 
[email protected]:/tmp$ 

士氣:打印精度是幾乎從來沒有計算精度爲

+0

謝謝,Dirk Eddelbuettel –

+0

由於您在這裏似乎是新手,現在a)接受答案(只有您看到的點擊標記)和/或b)upvote(點擊向上三角形) 。 –

+0

@DirkEddelbuettel不認爲OP可以upvote(低代表),但應(最終)接受它,因爲的確可以解決問題。 – vsoftco