में "स्मार्ट व्यवहार" बंद करें Matlab पर मुझे एक चीज़ पसंद नहीं है: यह कभी-कभी बहुत स्मार्ट होने की कोशिश करता है। उदाहरण के लिए, अगर मैंMatlab
a = -1; sqrt(a)
की तरह एक नकारात्मक वर्गमूल है मैटलैब एक त्रुटि फेंक नहीं है लेकिन जटिल संख्याओं को चुपचाप चला जाता है। ऋणात्मक लघुगणकों के लिए भी यही होता है। इससे अधिक जटिल एल्गोरिदम में त्रुटियों को ढूंढना मुश्किल हो सकता है।
ऐसा ही एक समस्या यह है कि Matlab "हल" चुपचाप गैर द्विघात रैखिक प्रणालियों निम्न उदाहरण में की तरह है:
A=eye(3,2); b=ones(3,1); x = A \ b
जाहिर x
A*x==b
संतुष्ट नहीं करता (यह बजाय एक कम से कम वर्ग समस्या का हल)।
क्या "सुविधाओं" को बंद करने की कोई संभावना है, या कम से कम इस मामले में मैटलैब एक चेतावनी संदेश प्रिंट करने दें? यह वास्तव में कई स्थितियों में बहुत मदद करता है।
मुझे आश्चर्य है कि लोग इस सवाल को क्यों कम करते हैं। मुझे लगता है, यह पूछने के लिए पूरी तरह से कानूनी है। इसके अलावा, मुझे यकीन है कि बहुत से लोग हैं जो वर्णित व्यवहार की वजह से सूक्ष्म बग की तलाश में समय खो चुके हैं। – Boris
जिस तरह से आपका प्रश्न पढ़ता है, वह कुछ ऐसा हो सकता है जैसे "मैंने वास्तव में उन दस्तावेज़ों को नहीं पढ़ा जो बताते हैं कि मैटलैब जटिल संख्या का समर्थन करता है, और यह बताता है कि बैकस्लैश ऑपरेटर क्या करता है। क्या मैं मैटलैब कर सकता हूं जो मैंने गलत तरीके से किया है, क्योंकि मैं वास्तव में दस्तावेज़ीकरण को पढ़ने में असमर्थता के बारे में निराश हूं? "। जबकि बैकस्लैश ऑपरेटर के साथ इस मुद्दे पर मैं आपसे असहमत हूं, मैं सहमत हूं कि जटिल संख्या किसी समस्या का संकेत हो सकती है। इस प्रकार यह अच्छा होगा अगर डीबगर में "dbstop if nan/inf" के अलावा "dbstop अगर जटिल" था। – Jonas
@ जोनास मैंने इस सवाल को इस तरह से तैयार करने की कोशिश की है कि पाठक के पास यह इंप्रेशन नहीं है, ऐसा लगता है जैसे मैं असफल रहा :(। आप सही हैं, दस्तावेज उस पर बिल्कुल स्पष्ट है। मुझे लगता है कि मैटलैब "ओवरस्यूज" ऑपरेटर जो बग का कारण बन सकता है और यह बुरा है।एक और जिसे अक्सर शुरुआती लोगों द्वारा गलत किया जाता है वह निम्न है: ए (गलत परिभाषित) फ़ंक्शन 'f = @ (x) x * ((x + 1)/x)' परिणाम देता है 'f ([1,2]) = [1.6,3.2] 'जबकि अधिकांश शुरुआती परिणाम [2,3]' की उम्मीद करेंगे। एक बड़े कार्यक्रम में ऐसी बग को खोजने में बहुत मुश्किल होती है। – Boris