2013-09-28 7 views
5

अगर मैं SymPy पूछने के लिए विलक्षण मैट्रिक्सजब मैं प्रतीकात्मक मैट्रिक्स को पंक्ति-कम करता हूं तो SymPy मुझे गलत जवाब क्यों देता है?

nu = Symbol('nu') 
lamb = Symbol('lambda') 
A3 = Matrix([[-3*nu, 1, 0, 0], 
      [3*nu, -2*nu-1, 2, 0], 
      [0, 2*nu, (-1 * nu) - lamb - 2, 3], 
      [0, 0, nu + lamb, -3]]) 
print A3.rref() 

तो यह रिटर्न पहचान मैट्रिक्स

(Matrix([ 
[1, 0, 0, 0], 
[0, 1, 0, 0], 
[0, 0, 1, 0], 
[0, 0, 0, 1]]), [0, 1, 2, 3]) 

जो इसे नहीं करना चाहिए पंक्ति-कम करने, के बाद से मैट्रिक्स विलक्षण है। SymPy मुझे गलत जवाब क्यों दे रहा है और मुझे सही जवाब देने के लिए मैं इसे कैसे प्राप्त कर सकता हूं?

मैं जानता हूँ कि SymPy जानता मैट्रिक्स विलक्षण है, क्योंकि जब मैं A3.inv() के लिए पूछना है, यह इसके अलावा

raise ValueError("Matrix det == 0; not invertible.") 

देता है, जब मैं मैट्रिक्स से भेड़ का बच्चा निकाल सकते हैं (स्थापित करने के बराबर भेड़ का बच्चा = 0)

(Matrix([ 
[1, 0, 0, -1/nu**3], 
[0, 1, 0, -3/nu**2], 
[0, 0, 1, -3/nu], 
[0, 0, 0,  0]]), [0, 1, 2]) 

जो मुझे विश्वास है कि इस समस्या को केवल एक से अधिक चर के साथ होता है:, SymPy सही जवाब देता है।

संपादित करें: दिलचस्प बात यह है कि जब मैं rref() तर्क "सरलीकृत = सही" पास करता हूं तो मुझे सही जवाब मिल गया है। मुझे अभी भी पता नहीं है कि ऐसा क्यों है।

+0

ध्यान दें कि यह अब SymPy के विकास संस्करण में सही ढंग से काम करता है। – moorepants

उत्तर

1

आरएफई एल्गोरिदम मूल रूप से यह बताने की क्षमता की आवश्यकता है कि मैट्रिक्स के तत्व समान रूप से शून्य हैं या नहीं। SymPy में, simplify=True विकल्प एल्गोरिदम के प्रासंगिक चरण में प्रविष्टियों को सरल बनाने के लिए SymPy को निर्देश देता है। प्रतीकात्मक प्रविष्टियों के साथ, यह आवश्यक है, क्योंकि आप आसानी से प्रतीकात्मक अभिव्यक्तियां प्राप्त कर सकते हैं जो समान रूप से शून्य हैं लेकिन जो x*(x - 1) - x**2 + x जैसे स्वचालित रूप से सरल नहीं होते हैं। विकल्प डिफ़ॉल्ट रूप से बंद है क्योंकि सामान्य रूप से इस तरह के सरलीकरण महंगा हो सकता है, इसके माध्यम से simplify (तर्कसंगत कार्यों के लिए, cancel का उपयोग करें) से कम सामान्य सरलीकृत फ़ंक्शन में गुजरकर नियंत्रित किया जा सकता है। यहां डिफ़ॉल्ट रूप से स्मार्ट हो सकता है।

संबंधित मुद्दे

 संबंधित मुद्दे