सूचकांक अंकन

From alpha
Jump to navigation Jump to search

गणित और कंप्यूटर प्रोग्रामिंग में, इंडेक्स नोटेशन का उपयोग संख्याओं की एक सरणी के तत्वों को निर्दिष्ट करने के लिए किया जाता है। सूचकांकों का उपयोग कैसे किया जाता है इसकी औपचारिकता विषय के अनुसार भिन्न होती है। विशेष रूप से, किसी सूची, वेक्टर या मैट्रिक्स के तत्वों को संदर्भित करने के लिए अलग-अलग तरीके हैं, यह इस बात पर निर्भर करता है कि कोई प्रकाशन के लिए एक औपचारिक गणितीय पत्र लिख रहा है या जब कोई कंप्यूटर प्रोग्राम लिख रहा है।

गणित में

सबस्क्रिप्ट का उपयोग करके सरणी के तत्वों को संदर्भित करने के लिए यह अक्सर गणित में सहायक होता है। सबस्क्रिप्ट पूर्णांक या चर (गणित) हो सकते हैं। सरणी सामान्य रूप से टेंसर का रूप लेती है, क्योंकि इन्हें बहु-आयामी सरणियों के रूप में माना जा सकता है। विशेष (और अधिक परिचित) मामले वेक्टर (ज्यामिति) (1d सरणियाँ) और मैट्रिक्स (गणित) (2d सरणियाँ) हैं।

निम्नलिखित केवल अवधारणा के लिए एक परिचय है: इंडेक्स नोटेशन का उपयोग गणित में अधिक विस्तार से किया जाता है (विशेष रूप से टेन्सर # ऑपरेशन के प्रतिनिधित्व और हेरफेर में)। अधिक विवरण के लिए मुख्य लेख देखें।

एक आयामी सरणियाँ (वैक्टर)

एक सदिश को एक पंक्ति सदिश या स्तंभ सदिश के रूप में लिखकर संख्याओं की एक सरणी के रूप में माना जाता है (जो भी उपयोग किया जाता है वह सुविधा या संदर्भ पर निर्भर करता है):

इंडेक्स नोटेशन केवल a लिखकर सरणी के तत्वों के संकेत की अनुमति देता हैi, जहां सूचकांक i को n-आयामों के कारण 1 से n तक चलने के लिए जाना जाता है।[1] उदाहरण के लिए, वेक्टर दिया गया:

तो कुछ प्रविष्टियाँ हैं

.

अंकन को गणित और भौतिकी में सदिशों पर लागू किया जा सकता है। निम्नलिखित वेक्टर समीकरण

सदिश के तत्वों (उर्फ घटकों) के संदर्भ में भी लिखा जा सकता है, अर्थात

जहां सूचकांक मानों की दी गई श्रेणी लेते हैं। यह अभिव्यक्ति समीकरणों के एक सेट का प्रतिनिधित्व करती है, प्रत्येक सूचकांक के लिए एक। यदि सदिशों में से प्रत्येक में n तत्व हैं, जिसका अर्थ है i = 1,2,…n, तो समीकरण स्पष्ट रूप से हैं

इसलिए, सूचकांक संकेतन के लिए एक कुशल आशुलिपि के रूप में कार्य करता है

  1. एक समीकरण के लिए सामान्य संरचना का प्रतिनिधित्व करना,
  2. जबकि व्यक्तिगत घटकों पर लागू होता है।

द्वि-आयामी सरणियाँ

मैट्रिक्स ए के तत्वों को दो सबस्क्रिप्ट या इंडेक्स के साथ वर्णित किया गया है।

दो या दो से अधिक आयामों में संख्याओं के सरणियों का वर्णन करने के लिए एक से अधिक इंडेक्स का उपयोग किया जाता है, जैसे मैट्रिक्स के तत्व, (दाईं ओर की छवि भी देखें);

एक मैट्रिक्स ए की प्रविष्टि दो सूचकांकों का उपयोग करके लिखी जाती है, i और j, सूचकांकों को अलग करने के लिए या बिना अल्पविराम के: aijया एi,j, जहां पहली सबस्क्रिप्ट पंक्ति संख्या है और दूसरी स्तंभ संख्या है। गुणन का उपयोग गुणन के अंकन के रूप में भी किया जाता है; यह भ्रम का स्रोत हो सकता है। उदाहरण के लिए, यदि

तो कुछ प्रविष्टियाँ हैं

.

9 से बड़े सूचकांकों के लिए, कॉमा-आधारित अंकन बेहतर हो सकता है (उदाहरण के लिए, a3,12 के बजाय एक312).

मैट्रिक्स समीकरण सदिश समीकरणों के समान ही लिखे जाते हैं, जैसे

मैट्रिसेस के तत्वों (उर्फ घटकों) के संदर्भ में

i और j के सभी मानों के लिए। पुनः यह व्यंजक समीकरणों के एक समुच्चय का प्रतिनिधित्व करता है, प्रत्येक अनुक्रमणिका के लिए एक। यदि मैट्रिसेस में प्रत्येक में m पंक्तियाँ और n कॉलम हैं, तो इसका अर्थ है i = 1, 2, …, m और j = 1, 2, …, n, तो mn समीकरण हैं।

बहु-आयामी सरणियाँ

अंकन तत्वों के बहु-आयामी सरणियों के लिए एक स्पष्ट सामान्यीकरण की अनुमति देता है: टेंसर। उदाहरण के लिए,

कई समीकरणों के एक सेट का प्रतिनिधित्व।

टेन्सर विश्लेषण में, कॉन्ट्रावेरिएंट संस्थाओं से कोवैरिएंट को अलग करने के लिए सबस्क्रिप्ट्स के बजाय सुपरस्क्रिप्ट्स का उपयोग किया जाता है, सहप्रसरण और वैक्टरों के कॉन्ट्रोवर्सी और सूचकांकों को ऊपर उठाना और घटाना देखें।

कंप्यूटिंग में

कई प्रोग्रामिंग भाषाओं में, इंडेक्स नोटेशन एक ऐरे के तत्वों को संबोधित करने का एक तरीका है। इस विधि का उपयोग किया जाता है क्योंकि यह असेंबली भाषा में इसे कैसे लागू किया जाता है, इसके सबसे करीब है, जिससे पहले तत्व का पता आधार के रूप में उपयोग किया जाता है, और तत्व आकार के एक बहु (सूचकांक) का उपयोग सरणी के अंदर पता करने के लिए किया जाता है।

उदाहरण के लिए, यदि पूर्णांकों की एक सरणी कंप्यूटर की मेमोरी के क्षेत्र में 3000 पते (आधार पता) के साथ मेमोरी सेल से शुरू होती है, और प्रत्येक पूर्णांक चार कोशिकाओं (बाइट्स) पर कब्जा कर लेता है, तो इस सरणी के तत्व मेमोरी में हैं स्थान 0x3000, 0x3004, 0x3008, …, 0x3000 + 4(n − 1) (शून्य-आधारित संख्या पर ध्यान दें)। सामान्य तौर पर, बेस एड्रेस b और एलिमेंट साइज s वाले एरे के ith एलिमेंट का एड्रेस होता है b + is.

कार्यान्वयन विवरण

C (प्रोग्रामिंग लैंग्वेज) में हम उपरोक्त को इस प्रकार लिख सकते हैं *(base + i) (सूचक रूप) या base[i] (एरे इंडेक्सिंग फॉर्म), जो बिल्कुल समतुल्य है क्योंकि सी मानक सरणी इंडेक्सिंग फॉर्म को पॉइंटर फॉर्म में परिवर्तन के रूप में परिभाषित करता है। संयोग से, चूंकि सूचक जोड़ विनिमेय है, यह अस्पष्ट अभिव्यक्तियों जैसे कि अनुमति देता है 3[base] जो बराबर है base[3].[2]


बहुआयामी सरणियाँ

चीजें तब और दिलचस्प हो जाती हैं जब हम एक से अधिक इंडेक्स वाली सरणियों पर विचार करते हैं, उदाहरण के लिए, एक द्वि-आयामी तालिका। हमारे पास तीन संभावनाएं हैं:

  • दो में से एक इंडेक्स की गणना करके द्वि-आयामी सरणी को एक-आयामी बनाएं
  • एक एक आयामी सरणी पर विचार करें जहां प्रत्येक तत्व एक और एक आयामी सरणी है, यानी सरणियों की एक सरणी
  • मूल सरणी की प्रत्येक पंक्ति के पतों की सरणी को होल्ड करने के लिए अतिरिक्त संग्रहण का उपयोग करें, और मूल सरणी की पंक्तियों को अलग-अलग एक-आयामी सरणियों के रूप में संग्रहीत करें

C में, तीनों विधियों का उपयोग किया जा सकता है। जब पहली विधि का उपयोग किया जाता है, तो प्रोग्रामर यह तय करता है कि सरणी के तत्वों को कंप्यूटर की मेमोरी में कैसे व्यवस्थित किया जाता है, और प्रत्येक तत्व के स्थान की गणना करने के लिए सूत्र प्रदान करता है। दूसरी विधि का उपयोग तब किया जाता है जब प्रत्येक पंक्ति में तत्वों की संख्या समान होती है और प्रोग्राम लिखे जाने के समय ज्ञात होती है। प्रोग्रामर सरणी की घोषणा करता है, कहता है, तीन कॉलम लिखकर उदा। elementtype tablename[][3];. एक तब सरणी के किसी विशेष तत्व को लिखकर संदर्भित करता है tablename[first index][second index]. कंपाइलर प्रत्येक पंक्ति द्वारा कब्जा की गई मेमोरी कोशिकाओं की कुल संख्या की गणना करता है, वांछित पंक्ति का पता खोजने के लिए पहली अनुक्रमणिका का उपयोग करता है, और फिर पंक्ति में वांछित तत्व का पता लगाने के लिए दूसरी अनुक्रमणिका का उपयोग करता है। जब तीसरी विधि का उपयोग किया जाता है, तो प्रोग्रामर टेबल को पॉइंटर्स की एक सरणी के रूप में घोषित करता है, जैसे कि elementtype *tablename[];. जब प्रोग्रामर बाद में किसी विशेष तत्व को निर्दिष्ट करता है tablename[first index][second index], संकलक पहली अनुक्रमणिका द्वारा निर्दिष्ट पंक्ति के पते को देखने के लिए निर्देश उत्पन्न करता है, और दूसरी अनुक्रमणिका द्वारा निर्दिष्ट तत्व के पते की गणना करते समय इस पते को आधार के रूप में उपयोग करता है।

शून्य मल्टी3x3f (फ्लोट परिणाम [] [3], कास्ट फ्लोट ए [][3], कास्ट फ्लोट बी [] [3])
{
  इंट आई, जे, के;
  के लिए (मैं = 0; मैं <3; ++i) {
    के लिए (जे = 0; जे <3; ++ जे) {
      परिणाम [मैं] [जे] = 0;
      के लिए (के = 0; के <3; ++ के)
        परिणाम [i] [जे] + = ए [i] [के] * बी [के] [जे];
    }
  }
}

अन्य भाषाओं में

पास्कल जैसी अन्य प्रोग्रामिंग भाषाओं में, सूचकांक 1 से शुरू हो सकते हैं, इसलिए मेमोरी के एक ब्लॉक में इंडेक्सिंग को एक साधारण रेखीय परिवर्तन द्वारा स्टार्ट-एट-1 एड्रेसिंग स्कीम में फिट करने के लिए बदला जा सकता है - इस योजना में, iवें का मेमोरी स्थान बेस एड्रेस b वाला एलिमेंट और एलिमेंट साइज s है b + (i − 1)s.

संदर्भ

  1. An introduction to Tensor Analysis: For Engineers and Applied Scientists, J.R. Tyldesley, Longman, 1975, ISBN 0-582-44355-5
  2. Programming with C++, J. Hubbard, Schaum's Outlines, McGraw Hill (USA), 1996, ISBN 0-07-114328-9
  • Programming with C++, J. Hubbard, Schaum's Outlines, McGraw Hill (USA), 1996, ISBN 0-07-114328-9
  • Tensor Calculus, D.C. Kay, Schaum's Outlines, McGraw Hill (USA), 1988, ISBN 0-07-033484-6
  • Mathematical methods for physics and engineering, K.F. Riley, M.P. Hobson, S.J. Bence, Cambridge University Press, 2010, ISBN 978-0-521-86153-3