सूचकांक संकेतन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Manner of referring to elements of arrays or tensors}}
{{Short description|Manner of referring to elements of arrays or tensors}}
{{for|सापेक्षता सिद्धांत और अमूर्त बीजगणित में ''सूचकांक संकेतन'', या ''सांकेतिक संकेतन''|आइंस्टीन संकेतन|अमूर्त सूचकांक संकेतन}}
{{for|सापेक्षता सिद्धांत और अमूर्त बीजगणित में ''सूचकांक संकेतन'', या ''सांकेतिक संकेतन''|आइंस्टीन संकेतन|अमूर्त सूचकांक संकेतन}}
गणित और [[[[कंप्यूटर प्रोग्राम]]िंग]] में, इंडेक्स नोटेशन का उपयोग संख्याओं की सरणी के तत्वों को निर्दिष्ट करने के लिए किया जाता है। सूचकांकों का उपयोग कैसे किया जाता है इसकी औपचारिकता विषय के अनुसार भिन्न होती है। विशेष रूप से, किसी सूची, वेक्टर या मैट्रिक्स के तत्वों को संदर्भित करने के लिए अलग-अलग तरीके हैं, यह इस पर निर्भर करता है कि कोई प्रकाशन के लिए औपचारिक गणितीय पेपर लिख रहा है या जब कोई कंप्यूटर प्रोग्राम लिख रहा है।
गणित और [[कंप्यूटर प्रोग्राम|कंप्यूटर प्रोग्रामिंग]] में, '''सूचकांक संकेतन''' का उपयोग संख्याओं की सरणी के तत्वों को निर्दिष्ट करने के लिए किया जाता है। सूचकांकों का उपयोग कैसे किया जाता है इसकी औपचारिकता विषय के अनुसार भिन्न होती है। विशेष रूप से, किसी सूची, सदिश या आव्यूह के तत्वों को संदर्भित करने के लिए भिन्न-भिन्न विधि हैं, यह इस पर निर्भर करता है कि कोई प्रकाशन के लिए औपचारिक गणितीय पेपर लिख रहा है या जब कोई कंप्यूटर प्रोग्राम लिख रहा है।


==गणित में==
==गणित में==
Line 7: Line 7:
{{Main|रिक्की कैलकुलस|टेन्सर}}
{{Main|रिक्की कैलकुलस|टेन्सर}}


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


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


===-आयामी सरणियाँ (वेक्टर)===
===-आयामी सरणियाँ (सदिश)===


{{main|सदिश (गणित और भौतिकी)}}
{{main|सदिश (गणित और भौतिकी)}}


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


:<math>\mathbf{a} = \begin{pmatrix}
:<math>\mathbf{a} = \begin{pmatrix}
Line 25: Line 25:
     a_1 & a_2 & \cdots & a_n
     a_1 & a_2 & \cdots & a_n
\end{pmatrix}</math>
\end{pmatrix}</math>
इंडेक्स नोटेशन केवल लिखकर सरणी के तत्वों को इंगित करने की अनुमति देता है<sub>i</sub>, जहां n-आयामों के कारण सूचकांक i को 1 से n तक चलने के लिए जाना जाता है।<ref>An introduction to Tensor Analysis: For Engineers and Applied Scientists, J.R. Tyldesley, Longman, 1975, {{ISBN|0-582-44355-5}}</ref>
सूचकांक संकेतन केवल a<sub>i</sub> लिखकर सरणी के तत्वों को प्रदर्शित करने की अनुमति देता है, जहां n-आयामों के कारण सूचकांक i को 1 से n तक चलने के लिए जाना जाता है।<ref>An introduction to Tensor Analysis: For Engineers and Applied Scientists, J.R. Tyldesley, Longman, 1975, {{ISBN|0-582-44355-5}}</ref>
उदाहरण के लिए, वेक्टर दिया गया:
 
उदाहरण के लिए, सदिश दिया गया है:


:<math>\mathbf{a} = \begin{pmatrix}
:<math>\mathbf{a} = \begin{pmatrix}
   10 & 8 & 9 & 6 & 3 & 5 \\  
   10 & 8 & 9 & 6 & 3 & 5 \\  
\end{pmatrix}</math>
\end{pmatrix}</math>
फिर कुछ प्रविष्टियाँ हैं
तब कुछ प्रविष्टियाँ हैं:


:<math>a_1 = 10,\, a_2 = 8,\, \cdots,\, a_6 = 5 </math>.
:<math>a_1 = 10,\, a_2 = 8,\, \cdots,\, a_6 = 5 </math>.


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


:<math>\mathbf{a} + \mathbf{b} = \mathbf{c}</math>
:<math>\mathbf{a} + \mathbf{b} = \mathbf{c}</math>
वेक्टर के तत्वों (उर्फ घटकों) के संदर्भ में भी लिखा जा सकता है, अर्थात
सदिश के तत्वों (घटकों) के संदर्भ में भी लिखा जा सकता है, अर्थात;


:<math> a_i + b_i = c_i </math>
:<math> a_i + b_i = c_i </math>
जहां सूचकांक मूल्यों की निश्चित श्रृंखला लेते हैं। यह अभिव्यक्ति समीकरणों के सेट का प्रतिनिधित्व करती है, प्रत्येक सूचकांक के लिए यदि प्रत्येक सदिश में n तत्व हैं, जिसका अर्थ है i = 1,2,…n, तो समीकरण स्पष्ट रूप से हैं
जहां सूचकांक मूल्यों की निश्चित श्रृंखला लेते हैं। यह अभिव्यक्ति समीकरणों के प्रत्येक सूचकांक के लिए समुच्चय का प्रतिनिधित्व करती है। यदि प्रत्येक सदिश में n तत्व हैं, जिसका अर्थ है i = 1,2,…n, तो समीकरण स्पष्ट रूप से हैं:


:<math>\begin{align}
:<math>\begin{align}
Line 49: Line 50:
   a_n + b_n &= c_n
   a_n + b_n &= c_n
\end{align}</math>
\end{align}</math>
इसलिए, सूचकांक अंकन कुशल आशुलिपि के रूप में कार्य करता है
इसलिए, सूचकांक अंकन कुशल आशुलिपि के रूप में कार्य करता है:
#समीकरण की सामान्य संरचना का प्रतिनिधित्व करना,
#किसी समीकरण की सामान्य संरचना का प्रतिनिधित्व करना है।
#जबकि व्यक्तिगत घटकों पर लागू होता है।
#जबकि व्यक्तिगत घटकों पर प्रारम्भ होता है।


===द्वि-आयामी सरणियाँ===
===द्वि-आयामी सरणियाँ===
[[File:Matrix.svg|thumb|247px|right|मैट्रिक्स ए के तत्वों को दो सबस्क्रिप्ट या सूचकांक के साथ वर्णित किया गया है।]]
[[File:Matrix.svg|thumb|247px|right|आव्यूह '''A''' के तत्वों को दो सबस्क्रिप्ट या सूचकांक के साथ वर्णित किया गया है।]]
{{main|आव्यूह (गणित)}}
{{main|आव्यूह (गणित)}}
{{see also|डायडिक्स}}
{{see also|डायडिक्स}}


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


:<math>\mathbf{A} = \begin{pmatrix}
:<math>\mathbf{A} = \begin{pmatrix}
Line 66: Line 67:
   a_{m1} & a_{m2} & \cdots & a_{mn} \\
   a_{m1} & a_{m2} & \cdots & a_{mn} \\
\end{pmatrix}</math>
\end{pmatrix}</math>
मैट्रिक्स A की प्रविष्टि दो सूचकांकों, मान लीजिए ''i'' और ''j'' का उपयोग करके लिखी जाती है, सूचकांकों को अलग करने के लिए अल्पविराम के साथ या उसके बिना: ''a<sub>ij</sub>या <sub>i,j</sub>, जहां पहली सबस्क्रिप्ट पंक्ति संख्या है और दूसरी कॉलम संख्या है। गुणन का उपयोग गुणन के लिए संकेतन के रूप में भी किया जाता है; यह भ्रम का स्रोत हो सकता है. उदाहरण के लिए, यदि''
आव्यूह A की प्रविष्टि दो सूचकांकों, मान लीजिए i और j का उपयोग करके लिखी जाती है, सूचकांकों को भिन्न करने के लिए अल्पविराम के साथ या उसके बिना: a<sub>ij</sub> या a<sub>i,j</sub>'','' जहां प्रथम सबस्क्रिप्ट पंक्ति संख्या है और दूसरी स्तंभ संख्या है। गुणन के लिए अंकन के रूप में जक्सटापोजिशन का भी उपयोग किया जाता है; यह भ्रम का स्रोत हो सकता है। उदाहरण के लिए, यदि;


:<math>\mathbf{A} = \begin{pmatrix}
:<math>\mathbf{A} = \begin{pmatrix}
Line 74: Line 75:
   6 & 0 & 5  
   6 & 0 & 5  
\end{pmatrix}</math>
\end{pmatrix}</math>
फिर कुछ प्रविष्टियाँ हैं
तब कुछ प्रविष्टियाँ हैं:


:<math>a_{11} = 9,\, a_{12} = 8,\, a_{21} = 1,\, \cdots,\, a_{23} = 7,\, \cdots </math>.
:<math>a_{11} = 9,\, a_{12} = 8,\, a_{21} = 1,\, \cdots,\, a_{23} = 7,\, \cdots </math>.


9 से बड़े सूचकांकों के लिए, अल्पविराम-आधारित अंकन बेहतर हो सकता है (उदाहरण के लिए, a<sub>3,12</sub> के अतिरिक्त <sub>312</sub>).
9 से बड़े सूचकांकों के लिए, अल्पविराम-आधारित अंकन उत्तम हो सकता है (उदाहरण के लिए, a<sub>3,12</sub> के अतिरिक्त <sub>312</sub>)


[[मैट्रिक्स समीकरण]] वेक्टर समीकरणों के समान ही लिखे जाते हैं, जैसे
[[मैट्रिक्स समीकरण|आव्यूह समीकरण]] सदिश समीकरणों के समान ही लिखे जाते हैं, जैसे;


:<math> \mathbf{A} + \mathbf{B} = \mathbf{C} </math>
:<math> \mathbf{A} + \mathbf{B} = \mathbf{C} </math>
मैट्रिक्स के तत्वों (उर्फ घटकों) के संदर्भ में
आव्यूह के तत्वों (उर्फ घटकों) के संदर्भ में इस प्रकार है:


:<math> A_{ij} + B_{ij} = C_{ij} </math>
:<math> A_{ij} + B_{ij} = C_{ij} </math>
i और j के सभी मानों के लिए। पुनः यह अभिव्यक्ति समीकरणों के सेट का प्रतिनिधित्व करती है, प्रत्येक सूचकांक के लिए यदि मैट्रिक्स में प्रत्येक में m पंक्तियाँ और n कॉलम हैं, तो इसका अर्थ है {{nowrap|''i'' {{=}} 1, 2, …, ''m''}} और {{nowrap|''j'' {{=}} 1, 2, …, ''n''}}, तो mn समीकरण हैं।
i और j के सभी मानों के लिए पुनः यह अभिव्यक्ति समीकरणों के प्रत्येक सूचकांक के लिए समुच्चय का प्रतिनिधित्व करती है। यदि आव्यूह में प्रत्येक में m पंक्तियाँ और n स्तंभ हैं, तो इसका अर्थ है {{nowrap|''i'' {{=}} 1, 2, …, ''m''}} और {{nowrap|''j'' {{=}} 1, 2, …, ''n''}}, तो mn समीकरण हैं।


===बहुआयामी सरणियाँ===
===बहुआयामी सरणियाँ===
Line 93: Line 94:
{{see also|टेंसर की शास्त्रीय प्रक्रिया }}
{{see also|टेंसर की शास्त्रीय प्रक्रिया }}


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


:<math> A_{i_1 i_2 \cdots } + B_{i_1 i_2 \cdots} = C_{i_1 i_2 \cdots} </math>
:<math> A_{i_1 i_2 \cdots } + B_{i_1 i_2 \cdots} = C_{i_1 i_2 \cdots} </math>
कई समीकरणों के सेट का प्रतिनिधित्व करना।
कई समीकरणों के समुच्चय का प्रतिनिधित्व करना।


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


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


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


==कार्यान्वयन विवरण==
==कार्यान्वयन विवरण==
C (प्रोग्रामिंग भाषा) में हम उपरोक्त को इस प्रकार लिख सकते हैं {{code|*(base + i)}} (सूचक प्रपत्र) या {{code|base[i]}} (सरणी अनुक्रमण प्रपत्र), जो बिल्कुल समतुल्य है क्योंकि सी मानक सरणी अनुक्रमण प्रपत्र को सूचक प्रपत्र में परिवर्तन के रूप में परिभाषित करता है। संयोगवश, चूंकि सूचक जोड़ क्रमविनिमेय है, यह अस्पष्ट अभिव्यक्तियों जैसे कि अनुमति देता है {{code|3[base]}} जो के बराबर है {{code|base[3]}}.<ref>Programming with C++, J. Hubbard, Schaum's Outlines, McGraw Hill (USA), 1996, {{ISBN|0-07-114328-9}}</ref>
सी प्रोग्रामिंग लैंग्वेज में हम उपरोक्त को {{code|*(base + i)}} (पॉइंटर फॉर्म) या {{code|base[i]}} (एरे इंडेक्सिंग फॉर्म) के रूप में लिख सकते हैं, जो बिल्कुल समतुल्य है क्योंकि सी मानक एरे इंडेक्सिंग फॉर्म को पॉइंटर फॉर्म में परिवर्तन के रूप में परिभाषित करता है। संयोगवश, चूंकि सूचक जोड़ क्रमविनिमेय है, यह {{code|3[base]}} जैसे अस्पष्ट अभिव्यक्तियों की अनुमति देता है जो {{code|base[3]}} के समान है।<ref>Programming with C++, J. Hubbard, Schaum's Outlines, McGraw Hill (USA), 1996, {{ISBN|0-07-114328-9}}</ref>
===बहुआयामी सरणियाँ===
===बहुआयामी सरणियाँ===
चीजें तब और अधिक दिलचस्प हो जाती हैं जब हम से अधिक सूचकांक वाले सरणियों पर विचार करते हैं, उदाहरण के लिए,  द्वि-आयामी तालिका। हमारे पास तीन संभावनाएँ हैं:
चीजें तब और अधिक रोचक हो जाती हैं जब हम एक से अधिक सूचकांक वाले सरणियों पर विचार करते हैं, उदाहरण के लिए,  द्वि-आयामी तालिका। हमारे पास तीन संभावनाएँ हैं:
* दोनों में से  सूचकांक की गणना करके द्वि-आयामी सरणी को -आयामी बनाएं
* दोनों में से  सूचकांक की गणना करके द्वि-आयामी सरणी को एक-आयामी बनाएं।
* -आयामी सरणी पर विचार करें जहां प्रत्येक तत्व और -आयामी सरणी है, अर्थात सरणियों की सरणी
* एक-आयामी सरणी पर विचार करें जहां प्रत्येक तत्व एक-आयामी सरणी है, अर्थात सरणियों की सरणी है।
* मूल सरणी की प्रत्येक पंक्ति के पते की सरणी को पकड़ने के लिए अतिरिक्त भंडारण का उपयोग करें, और मूल सरणी की पंक्तियों को अलग-अलग -आयामी सरणी के रूप में संग्रहीत करें
* मूल सरणी की प्रत्येक पंक्ति के एड्रेस की सरणी को रखने के लिए अतिरिक्त स्टोरेज का उपयोग करें, और मूल सरणी की पंक्तियों को भिन्न-भिन्न एक-आयामी सरणी के रूप में संग्रहीत करें।
C में, सभी तीन विधियों का उपयोग किया जा सकता है। जब पहली विधि का उपयोग किया जाता है, तो प्रोग्रामर यह तय करता है कि सरणी के तत्वों को कंप्यूटर की मेमोरी में कैसे रखा जाता है, और प्रत्येक तत्व के स्थान की गणना करने के लिए सूत्र प्रदान करता है। दूसरी विधि का उपयोग तब किया जाता है जब प्रत्येक पंक्ति में तत्वों की संख्या समान होती है और प्रोग्राम लिखे जाने के समय ज्ञात होती है। प्रोग्रामर, उदाहरण के लिए, लिखकर तीन कॉलम वाले ऐरे की घोषणा करता है। {{code|elementtype tablename[][3];}}. फिर कोई सरणी के किसी विशेष तत्व को लिखकर संदर्भित करता है {{code|tablename[first index][second index]}}. कंपाइलर प्रत्येक पंक्ति में व्याप्त मेमोरी सेल्स की कुल संख्या की गणना करता है, वांछित पंक्ति का पता खोजने के लिए पहले इंडेक्स का उपयोग करता है, और फिर पंक्ति में वांछित तत्व का पता खोजने के लिए दूसरे इंडेक्स का उपयोग करता है। जब तीसरी विधि का उपयोग किया जाता है, तो प्रोग्रामर तालिका को पॉइंटर्स की सरणी घोषित करता है, जैसे कि {{code|elementtype *tablename[];}}. जब प्रोग्रामर बाद में किसी विशेष तत्व को निर्दिष्ट करता है {{code|tablename[first index][second index]}}, कंपाइलर पहले इंडेक्स द्वारा निर्दिष्ट पंक्ति के पते को देखने के लिए निर्देश उत्पन्न करता है, और दूसरे इंडेक्स द्वारा निर्दिष्ट तत्व के पते की गणना करते समय इस पते को आधार के रूप में उपयोग करता है।
सी में, सभी तीन विधियों का उपयोग किया जा सकता है। जब प्रथम विधि का उपयोग किया जाता है, तो प्रोग्रामर यह निश्चित करता है कि सरणी के तत्वों को कंप्यूटर की मेमोरी में कैसे रखा जाता है, और प्रत्येक तत्व के स्थान की गणना करने के लिए सूत्र प्रदान करता है। दूसरी विधि का उपयोग तब किया जाता है जब प्रत्येक पंक्ति में तत्वों की संख्या समान होती है और प्रोग्राम लिखे जाने के समय ज्ञात होती है। प्रोग्रामर, उदाहरण के लिए, {{code|elementtype tablename[][3];}} लिखकर तीन कॉलम वाले ऐरे की घोषणा करता है।  इसके पश्चात {{code|tablename[first index][second index]}} लिखकर सरणी के विशेष तत्व को संदर्भित करता है। कंपाइलर प्रत्येक पंक्ति में व्याप्त मेमोरी सेल्स की कुल संख्या की गणना करता है, वांछित पंक्ति के एड्रेस शोध के लिए प्रथम सूचकांक का उपयोग करता है, और फिर पंक्ति में वांछित तत्व के एड्रेस शोध के लिए दूसरे सूचकांक का उपयोग करता है। जब तीसरी विधि का उपयोग किया जाता है, तो प्रोग्रामर तालिका को पॉइंटर्स की सरणी घोषित करता है, जैसे कि {{code|elementtype *tablename[];}} है। जब प्रोग्रामर पश्चात में किसी विशेष तत्व {{code|tablename[first index][second index]}} निर्दिष्ट करता है, कंपाइलर प्रथम सूचकांक द्वारा निर्दिष्ट पंक्ति के एड्रेस को देखने के लिए निर्देश उत्पन्न करता है, और दूसरे सूचकांक द्वारा निर्दिष्ट तत्व के एड्रेस की गणना करते समय इस एड्रेस को आधार के रूप में उपयोग करता है।
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
void mult3x3f(float result[][3], const float A[][3], const float B[][3])
void mult3x3f(float result[][3], const float A[][3], const float B[][3])
Line 127: Line 128:
</syntaxhighlight>
</syntaxhighlight>


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


==संदर्भ==
==संदर्भ==
Line 136: Line 137:
* ''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}}
* ''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}}


{{DEFAULTSORT:Index Notation}}[[Category: गणितीय संकेतन]] [[Category: प्रोग्रामिंग निर्माण]]
{{DEFAULTSORT:Index Notation}}
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Index Notation]]
[[Category:Created On 19/07/2023]]
[[Category:Created On 19/07/2023|Index Notation]]
[[Category:Lua-based templates|Index Notation]]
[[Category:Machine Translated Page|Index Notation]]
[[Category:Pages with script errors|Index Notation]]
[[Category:Short description with empty Wikidata description|Index Notation]]
[[Category:Templates Vigyan Ready|Index Notation]]
[[Category:Templates that add a tracking category|Index Notation]]
[[Category:Templates that generate short descriptions|Index Notation]]
[[Category:Templates using TemplateData|Index Notation]]
[[Category:गणितीय संकेतन|Index Notation]]
[[Category:प्रोग्रामिंग निर्माण|Index Notation]]

Latest revision as of 13:42, 2 August 2023

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

गणित में

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

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

-आयामी सरणियाँ (सदिश)

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

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

उदाहरण के लिए, सदिश दिया गया है:

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

.

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

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

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

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

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

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

आव्यूह A के तत्वों को दो सबस्क्रिप्ट या सूचकांक के साथ वर्णित किया गया है।

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

आव्यूह A की प्रविष्टि दो सूचकांकों, मान लीजिए i और j का उपयोग करके लिखी जाती है, सूचकांकों को भिन्न करने के लिए अल्पविराम के साथ या उसके बिना: aij या ai,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 होता है।

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

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

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

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

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

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

void mult3x3f(float result[][3], const float A[][3], const float B[][3])
{
  int i, j, k;
  for (i = 0; i < 3; ++i) {
    for (j = 0; j < 3; ++j) {
      result[i][j] = 0;
      for (k = 0; k < 3; ++k)
        result[i][j] += A[i][k] * B[k][j];
    }
  }
}

अन्य लैंग्वेजेज में

पास्कल जैसी अन्य प्रोग्रामिंग लैंग्वेजेज में, सूचकांक 1 से प्रारंभ हो सकते हैं, इसलिए मेमोरी के ब्लॉक में अनुक्रमण को सरल रैखिक परिवर्तन द्वारा स्टार्ट-एट-1 एड्रेसिंग योजना में फिट करने के लिए परिवर्तित किया जा सकता है - इस योजना में, आधार एड्रेस b और तत्व आकार s के साथ ith तत्व का मेमोरी समिष्ट 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