मैं लैपैक और सी ++/फोरट्रान इंटरफेसिंग के साथ शुरुआत कर रहा हूं। मैक ओएस-एक्स शेर पर LAPACK/BLAS का उपयोग करके मुझे रैखिक समीकरणों और eigenvalues समस्याओं को हल करने की आवश्यकता है। ओएस-एक्स शेर अनुकूलित बीएलएएस और लैपैक पुस्तकालयों (इन/यूएसआर/lib) प्रदान करता है और मैं इन पुस्तकालयों को नेटलिब से डाउनलोड करने के बजाय जोड़ रहा हूं।एलएपीएक्स को समझना सी ++ में एक साधारण उदाहरण के साथ
मेरा प्रोग्राम (नीचे पुन: उत्पादित) संकलित और ठीक चल रहा है, लेकिन यह मुझे गलत जवाब दे रहा है। मैंने वेब और स्टैकओवरफ्लो में शोध किया है और इस मुद्दे को अलग-अलग प्रारूपों में सी ++ और फोरट्रान स्टोर सरणी (पंक्ति प्रमुख बनाम कॉलम प्रमुख) में कैसे निपटना पड़ सकता है। हालांकि, जैसा कि आप मेरे उदाहरण में देखेंगे, मेरे उदाहरण के लिए सरल सरणी सी ++ और फोर्टन में समान दिखनी चाहिए। वैसे भी यहाँ जाता है।
चलें कहते हैं कि हम निम्न रेखीय प्रणाली को हल करना चाहते:
x + y = 2
एक्स - y = 0
समाधान है (एक्स, वाई) = (1,1)। अब मैं इस LAPACK का उपयोग कर हल करने के लिए के रूप में
// LAPACK test code
#include<iostream>
#include<vector>
using namespace std;
extern "C" void dgetrs(char *TRANS, int *N, int *NRHS, double *A,
int *LDA, int *IPIV, double *B, int *LDB, int *INFO);
int main()
{
char trans = 'N';
int dim = 2;
int nrhs = 1;
int LDA = dim;
int LDB = dim;
int info;
vector<double> a, b;
a.push_back(1);
a.push_back(1);
a.push_back(1);
a.push_back(-1);
b.push_back(2);
b.push_back(0);
int ipiv[3];
dgetrs(&trans, &dim, &nrhs, & *a.begin(), &LDA, ipiv, & *b.begin(), &LDB, &info);
std::cout << "solution is:";
std::cout << "[" << b[0] << ", " << b[1] << ", " << "]" << std::endl;
std::cout << "Info = " << info << std::endl;
return(0);
}
इस प्रकार इस कोड को संकलित किया गया था इस प्रकार की कोशिश की:
g++ -Wall -llapack -lblas lapacktest.cpp
इस चल रहा, हालांकि, मैं के रूप में समाधान प्राप्त (-2,2) जो स्पष्ट रूप से गलत है। मैंने अपने मैट्रिक्स a
की पंक्ति/कॉलम पुन: व्यवस्था के सभी संयोजनों का प्रयास किया है। यह भी देखें कि a
का मैट्रिक्स प्रतिनिधित्व पंक्ति और कॉलम स्वरूपों में समान होना चाहिए। मुझे लगता है कि काम करने के लिए यह सरल उदाहरण मिलना मुझे लापैक के साथ शुरू कर देगा और किसी भी मदद की सराहना की जाएगी।
क्या LAPACK पुस्तकालय आप उपयोग कर रहे हैं और यह 64 बिट कोड है? – Anycorn
मैं /usr/lib/liblapack.dylib और /usr/lib/libblas.dylib का उपयोग कर रहा हूं जो मैक ओएस-एक्स शेर पर मूल रूप से मौजूद है। मैंने कोई बाहरी लैपैक/बीएलएएस पुस्तकालय स्थापित नहीं किया है। – RDK
उदाहरण में, आप एक सममित मैट्रिक्स को हल कर रहे हैं ताकि आपके पास पंक्ति-प्रमुख या कॉलम-प्रमुख हो, तो आपको कोई अंतर दिखाई नहीं देगा। – SirGuy