सूचकांक संकेतन: Difference between revisions
No edit summary |
No edit summary |
||
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डी सरणी) हैं। | सबस्क्रिप्ट का उपयोग करके किसी सरणी के तत्वों को संदर्भित करना गणित में अधिकांशतः सहायक होता है। सबस्क्रिप्ट [[पूर्णांक]] या [[चर (गणित)]] हो सकते हैं। सारणी सामान्यतः [[टेंसर]] का रूप लेती है, क्योंकि इन्हें बहु-आयामी सारणी के रूप में माना जा सकता है। विशेष (और अधिक परिचित) मामले [[वेक्टर (ज्यामिति)|सदिश (ज्यामिति)]] (1डी सरणी) और [[मैट्रिक्स (गणित)|आव्यूह (गणित)]] (2डी सरणी) हैं। | ||
निम्नलिखित केवल अवधारणा का परिचय है: सूचकांक संकेतन का उपयोग गणित में अधिक विस्तार से किया जाता है (विशेषकर टेंसर#ऑपरेशंस के प्रतिनिधित्व और हेरफेर में)। अधिक जानकारी के लिए मुख्य लेख देखें. | निम्नलिखित केवल अवधारणा का परिचय है: सूचकांक संकेतन का उपयोग गणित में अधिक विस्तार से किया जाता है (विशेषकर टेंसर#ऑपरेशंस के प्रतिनिधित्व और हेरफेर में)। अधिक जानकारी के लिए मुख्य लेख देखें. | ||
Line 15: | Line 15: | ||
{{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> | |||
उदाहरण के लिए, | उदाहरण के लिए, सदिश दिया गया: | ||
:<math>\mathbf{a} = \begin{pmatrix} | :<math>\mathbf{a} = \begin{pmatrix} | ||
Line 35: | Line 35: | ||
:<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> | ||
Line 54: | Line 54: | ||
===द्वि-आयामी सरणियाँ=== | ===द्वि-आयामी सरणियाँ=== | ||
[[File:Matrix.svg|thumb|247px|right| | [[File:Matrix.svg|thumb|247px|right|आव्यूह ए के तत्वों को दो सबस्क्रिप्ट या सूचकांक के साथ वर्णित किया गया है।]] | ||
{{main|आव्यूह (गणित)}} | {{main|आव्यूह (गणित)}} | ||
{{see also|डायडिक्स}} | {{see also|डायडिक्स}} | ||
दो या दो से अधिक आयामों में संख्याओं के सरणियों का वर्णन करने के लिए से अधिक सूचकांक का उपयोग किया जाता है, जैसे कि | दो या दो से अधिक आयामों में संख्याओं के सरणियों का वर्णन करने के लिए से अधिक सूचकांक का उपयोग किया जाता है, जैसे कि आव्यूह के तत्व, (दाईं ओर की छवि भी देखें); | ||
:<math>\mathbf{A} = \begin{pmatrix} | :<math>\mathbf{A} = \begin{pmatrix} | ||
Line 66: | Line 66: | ||
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>, जहां पहली सबस्क्रिप्ट पंक्ति संख्या है और दूसरी कॉलम संख्या है। गुणन का उपयोग गुणन के लिए संकेतन के रूप में भी किया जाता है; यह भ्रम का स्रोत हो सकता है. उदाहरण के लिए, यदि'' | |||
:<math>\mathbf{A} = \begin{pmatrix} | :<math>\mathbf{A} = \begin{pmatrix} | ||
Line 80: | Line 80: | ||
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 के सभी मानों के लिए। पुनः यह अभिव्यक्ति समीकरणों के सेट का प्रतिनिधित्व करती है, प्रत्येक सूचकांक के लिए । यदि | i और j के सभी मानों के लिए। पुनः यह अभिव्यक्ति समीकरणों के सेट का प्रतिनिधित्व करती है, प्रत्येक सूचकांक के लिए । यदि आव्यूह में प्रत्येक में m पंक्तियाँ और n कॉलम हैं, तो इसका अर्थ है {{nowrap|''i'' {{=}} 1, 2, …, ''m''}} और {{nowrap|''j'' {{=}} 1, 2, …, ''n''}}, तो mn समीकरण हैं। | ||
===बहुआयामी सरणियाँ=== | ===बहुआयामी सरणियाँ=== | ||
Line 101: | Line 101: | ||
==कंप्यूटिंग में== | ==कंप्यूटिंग में== | ||
कई प्रोग्रामिंग भाषाओं में, | कई प्रोग्रामिंग भाषाओं में, सूचकांक संकेतन किसी सरणी के तत्वों को संबोधित करने का तरीका है। इस पद्धति का उपयोग इसलिए किया जाता है क्योंकि यह असेंबली भाषा में इसे लागू करने के तरीके के सबसे करीब है, जिसमें पहले तत्व का पता आधार के रूप में उपयोग किया जाता है, और तत्व आकार के गुणक (सूचकांक) का उपयोग सरणी के अंदर पता करने के लिए किया जाता है। | ||
उदाहरण के लिए, यदि पूर्णांकों की सरणी को कंप्यूटर की मेमोरी के क्षेत्र में संग्रहीत किया जाता है, जो पते 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''}}. | ||
Line 127: | Line 127: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== अन्य | == अन्य लैंग्वेजेज में == | ||
पास्कल जैसी अन्य प्रोग्रामिंग | पास्कल जैसी अन्य प्रोग्रामिंग लैंग्वेजेज में, सूचकांक 1 से प्रारंभ हो सकते हैं, इसलिए मेमोरी के ब्लॉक में अनुक्रमण को सरल रैखिक परिवर्तन द्वारा स्टार्ट-एट-1 एड्रेसिंग योजना में फिट करने के लिए परिवर्तित किया जा सकता है - इस योजना में, आधार एड्रेस b और तत्व आकार s के साथ ith तत्व का मेमोरी समिष्ट {{nowrap|''b'' + (''i'' − 1)''s''}} है। | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 15:37, 23 July 2023
गणित और कंप्यूटर प्रोग्रामिंग में, सूचकांक संकेतन का उपयोग संख्याओं की सरणी के तत्वों को निर्दिष्ट करने के लिए किया जाता है। सूचकांकों का उपयोग कैसे किया जाता है इसकी औपचारिकता विषय के अनुसार भिन्न होती है। विशेष रूप से, किसी सूची, सदिश या आव्यूह के तत्वों को संदर्भित करने के लिए भिन्न-भिन्न विधि हैं, यह इस पर निर्भर करता है कि कोई प्रकाशन के लिए औपचारिक गणितीय पेपर लिख रहा है या जब कोई कंप्यूटर प्रोग्राम लिख रहा है।
गणित में
सबस्क्रिप्ट का उपयोग करके किसी सरणी के तत्वों को संदर्भित करना गणित में अधिकांशतः सहायक होता है। सबस्क्रिप्ट पूर्णांक या चर (गणित) हो सकते हैं। सारणी सामान्यतः टेंसर का रूप लेती है, क्योंकि इन्हें बहु-आयामी सारणी के रूप में माना जा सकता है। विशेष (और अधिक परिचित) मामले सदिश (ज्यामिति) (1डी सरणी) और आव्यूह (गणित) (2डी सरणी) हैं।
निम्नलिखित केवल अवधारणा का परिचय है: सूचकांक संकेतन का उपयोग गणित में अधिक विस्तार से किया जाता है (विशेषकर टेंसर#ऑपरेशंस के प्रतिनिधित्व और हेरफेर में)। अधिक जानकारी के लिए मुख्य लेख देखें.
-आयामी सरणियाँ (वेक्टर)
सदिश को पंक्ति सदिश या स्तंभ सदिश के रूप में लिखकर संख्याओं की सरणी के रूप में माना जाता है (जो भी उपयोग किया जाता है वह सुविधा या संदर्भ पर निर्भर करता है):
सूचकांक संकेतन केवल ए लिखकर सरणी के तत्वों को इंगित करने की अनुमति देता हैi, जहां n-आयामों के कारण सूचकांक i को 1 से n तक चलने के लिए जाना जाता है।[1] उदाहरण के लिए, सदिश दिया गया:
फिर कुछ प्रविष्टियाँ हैं
- .
अंकन को गणित और भौतिकी में वैक्टर पर लागू किया जा सकता है। निम्नलिखित सदिश समीकरण
सदिश के तत्वों (उर्फ घटकों) के संदर्भ में भी लिखा जा सकता है, अर्थात
जहां सूचकांक मूल्यों की निश्चित श्रृंखला लेते हैं। यह अभिव्यक्ति समीकरणों के सेट का प्रतिनिधित्व करती है, प्रत्येक सूचकांक के लिए । यदि प्रत्येक सदिश में n तत्व हैं, जिसका अर्थ है i = 1,2,…n, तो समीकरण स्पष्ट रूप से हैं
इसलिए, सूचकांक अंकन कुशल आशुलिपि के रूप में कार्य करता है
- समीकरण की सामान्य संरचना का प्रतिनिधित्व करना,
- जबकि व्यक्तिगत घटकों पर लागू होता है।
द्वि-आयामी सरणियाँ
दो या दो से अधिक आयामों में संख्याओं के सरणियों का वर्णन करने के लिए से अधिक सूचकांक का उपयोग किया जाता है, जैसे कि आव्यूह के तत्व, (दाईं ओर की छवि भी देखें);
आव्यूह A की प्रविष्टि दो सूचकांकों, मान लीजिए 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]
, कंपाइलर पहले इंडेक्स द्वारा निर्दिष्ट पंक्ति के पते को देखने के लिए निर्देश उत्पन्न करता है, और दूसरे इंडेक्स द्वारा निर्दिष्ट तत्व के पते की गणना करते समय इस पते को आधार के रूप में उपयोग करता है।
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 है।
संदर्भ
- ↑ An introduction to Tensor Analysis: For Engineers and Applied Scientists, J.R. Tyldesley, Longman, 1975, ISBN 0-582-44355-5
- ↑ 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