2010-11-29 12 views
5

क्या आईफोन प्लेटफ़ॉर्म पर नीचे दिए गए मैट्रिक्स को हल करने के कोड नमूने हैं। हकीकत में असली मैट्रिक्स बहुत बड़ा है (लगभग 100 चर)। चूंकि यह सरल रैखिक बीजगणित है, मुझे नहीं लगता कि कोड जटिल है, मैंने गणित पुस्तकालय संकुल और LAPACK के बारे में भी सुना है लेकिन उन्हें कोई भी उदाहरण नहीं मिल रहा है जहां उन्हें लागू किया गया है।ओबीजेसी में मुलिटल लीनियर समीकरणों को हल करने के तरीके को दिखाते हुए कोई भी कोड उदाहरण?

यदि कोई भी प्रत्येक चर को हल करने के लिए मैट्रिक्स बनाने से कैसे किसी उदाहरण या ट्यूटोरियल के बारे में जानता है तो यह वास्तव में एक टन धन्यवाद की सराहना की जाएगी।

____   ____ 
|     | 
| 4 3 -1 | 2 | 
| -2 3 8 | 0 | 
| 0 2 6 | -1 | 
|____   ____| 
+0

मी कृपया: http://stackoverflow.com/questions/769/solving-a-linear-equation – zellus

+0

का संभावित डुप्लिकेट मैंने देखा। मुझे पता है कि किस विधि का उपयोग करना है, बस इसे प्रोग्राम कैसे करें। यही कारण है कि मैं आधार रेखा स्थापित करने के लिए एक नमूना खोजना चाहता हूं। – John

+0

$ LANGUAGE में एट अल। के न्यूमेरिकल तरीके इस विषय के लिए एक अच्छा पठन है। – thiton

उत्तर

4

भूल जाते हैं कि ऑब्जेक्टिव-सी वस्तु उन्मुख एक्सटेंशन के एक समूह के साथ सी है मत करो। आप किसी भी सी लाइब्रेरी में आईएपी एप्लीकेशन में ड्रॉप कर सकते हैं, जिसमें लैपैक भी शामिल है।

यदि आप LAPACK के लिए कुछ उद्देश्य-सी रैपर कक्षाएं लिखना चाहते हैं, तो मुझे यकीन है कि LAPACK प्रोजेक्ट टीम पैच को स्वीकार करने में बहुत खुश होगी।

+0

उदाहरण के लिए खोज रहे हैं, यह काफी सालों से है क्योंकि मैंने रैखिक बीजगणित का उपयोग किया और मेरी याददाश्त को ताज़ा करने की आवश्यकता है। मुझे अब LAPACK का उपयोग करना अच्छा लगेगा क्योंकि यह अब एकीकृत है लेकिन मुझे कोई नमूना नहीं मिल रहा है। – John

3

क्लैपैक के साथ रैखिक सिस्टम को हल करने के लिए यहां कुछ उदाहरण कोड दिया गया है, ऐप्पल के LAPACK के कार्यान्वयन, जो आईओएस 4.0 और बाद में उपलब्ध है।

#define N 3 
#define NRHS 1 
#define LDA N 
#define LDB N 

void solve_system() { 
    __CLPK_integer n = N, nrhs = NRHS, lda = LDA, ldb = LDB, info; 
    __CLPK_integer ipiv[N]; 

    __CLPK_real a[LDA * N] = { 
     4, -2, 0, 
     3, 3, 2, 
     -1, 8, 6, 
    }; 

    __CLPK_real b[LDB * NRHS] = { 
     2, 0, -1, 
    }; 

    // Solve A * x = b 
    sgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info); 

    if(info > 0) { 
     // A is singular; solution is not unique. 
    } 

    print_matrix(N, NRHS, b); 
} 

void print_matrix(size_t rows, size_t columns, __CLPK_real *mat) { 
    for(size_t r = 0; r < rows; ++r) { 
     for(size_t c = 0; c < columns; ++c) { 
      printf("%6.2f ", mat[r * columns + c]); 
     } 
     printf("\n"); 
    } 
} 

यह LAPACK समारोह SGESV, रैखिक प्रणालियों को सुलझाने के लिए एक "चालक" समारोह का उपयोग करता है। ध्यान दें कि डेटा कॉलम-प्रमुख प्रारूप में प्रदान किया जाता है, क्योंकि एलएपीएक्स मूल रूप से फोरट्रान में लिखा गया था, जो कॉलम-प्रमुख प्रारूप में बहु-आयामी सरणी संग्रहीत करता है। __CLPK_integer और __CLPK_real क्रमश: long और float के लिए टाइपपीफ हैं।

+1

ध्यान दें कि आपको LACKACK फ़ंक्शंस का उपयोग करने के लिए एक्सेलेरेट.फ्रेमवर्क और '# आयात <त्वरण/त्वरण.h>' से लिंक करने की आवश्यकता होगी। – warrenm