2011-08-09 19 views
14

मैं मैथमैटिका अभिव्यक्तियों को आंतरिक रूप से कैसे प्रदर्शित किया जाता है, इस बारे में गहरी समझ हासिल करने की कोशिश कर रहा हूं, और गणित में Level कमांड के तर्क से परेशान हूं। हम निम्न इनपुट है:आप गणित में नकारात्मक स्तर की व्याख्या कैसे करते हैं?

In[1]:= a = z*Sin[x + y] + z1*Cos[x1 + y1] 

Out[1]= z1 Cos[x1 + y1] + z Sin[x + y] 

In[2]:= FullForm[a] 

Out[2]= Plus[Times[z1,Cos[Plus[x1,y1]]],Times[z,Sin[Plus[x,y]]]] 

In[3]:= TreeForm[a] 

हम मिल निम्नलिखित पेड़:

tree form of expression a, above

अगर हम स्तर 4 वापस जाने के लिए मेथेमेटिका पूछना ही, हम पाते हैं:

In[4]:= Level[a,{4}] 
Out[4]= {x1,y1,x,y} 

मैं समझें कि हम "स्टेम" (स्तर 0 पर प्लस ऑपरेटर) से 4 स्तर नीचे हैं। वास्तव में, मुझे लगता है कि मैं समझता हूं कि सकारात्मक सूचकांक हमेशा पेड़ की स्टेम स्थिति के संबंध में होते हैं। (मुझे उम्मीद है कि मैं इसके बारे में सही हूं ??)

इसके विपरीत, जब आप ऋणात्मक स्तर की मांग करते हैं, तो कोई सामान्य संदर्भ बिंदु नहीं है (उपरोक्त तने की तरह), क्योंकि पेड़ की विभिन्न शाखाएं अलग-अलग लंबाई होती हैं । इसलिए, यदि आप केवल स्तर -1 प्रदान करने के लिए मेथेमेटिका से पूछते हैं, हम पाते हैं:

In[6]:= Level[a,{-1}] 
Out[6]= {z1,x1,y1,z,x,y} 

मैं, इस उत्पादन से आश्चर्यचकित था जब मैं अनुमान लगाया था कि मैं मिलना चाहिए वापस {x1, y1, x, y} (z1 बिना & z)। लेकिन ठीक है, अगर मैं इसे समझने की कोशिश करता हूं, तो मुझे "प्रत्येक शाखा का अंत" मतलब है। यह इतना है, तो मैं Level[a,{-2}] उम्मीद करेंगे वापस जाने के लिए:

{z1*Cos[x1+y1],z*Sin[x+y],x1+y1,x+y} 

लेकिन, यह नहीं है कि मैं क्या वापस मेथेमेटिका पैदावार मिलता है,:

In[8]:= Level[a,{-2}] 
Out[8]= {x1+y1,x+y} 

तो, अब मैं उलझन में हूँ, और डॉन ' नकारात्मक स्तर के उत्पादन को समझने का एक सतत तरीका नहीं देखते हैं।

क्या इस विषय को समझने का एक सतत, आसान तरीका है? क्या कोई निश्चित "सही" तरीका है जो मुझे पेड़ की संरचना पढ़ना चाहिए?

"लंबे समय से चलने वाले प्रश्न" के लिए खेद है, लेकिन मुझे उम्मीद है कि आप समझेंगे कि मैं क्या पूछ रहा हूं।

उत्तर

14

आप docs को देखें, तो वे कहते हैं:

एक नकारात्मक स्तर -n गहराई n के साथ expr के सभी भागों के होते हैं।

तो ऋणात्मक स्तर संदर्भ बिंदु से गिना नहीं जाता है, लेकिन उप-अभिव्यक्तियों की गहराई के आधार पर परिभाषित किया जाता है। z1*Cos[x1+y1] गहराई 4 है, इसलिए जब आप Level[..., {-2}] के लिए पूछते हैं तो यह वापस नहीं किया जाता है।

+7

संक्षिप्त और स्पष्ट - +1। मैं इसमें जोड़ दूंगा, घुमावदार ब्रेसिज़ के बिना वह स्तर चश्मा (जैसे 'स्तर [expr, -d]' गहराई के सभी उप-अभिव्यक्तियों का वर्णन * कम से कम * 'd', 'स्तर [expr, {1 के बराबर) , -d}]। यह हमें गैर-तुच्छ तरीकों से सकारात्मक और नकारात्मक स्तरों को गठबंधन करने की अनुमति देता है। उदाहरण के लिए, यह: 'स्तर [ए, {2, -2}]' नीचे दिए गए स्तरों पर केवल उप-अभिव्यक्तियां लौटाएगा और स्तर '2', * और * गहराई * कम से कम *' 2' सहित। –

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