Inverse Number Theoretic Transform पर पिछले अध्याय में, हमने दावा किया था कि unity के primitive k-th root ω के लिए Vandermonde matrix V(ω) का inverse भी एक Vandermonde matrix होता है, जिसे k1V(ω−1) द्वारा दिया जाता है। अब हम इस तथ्य को सिद्ध करेंगे।
गणित में कम रुचि रखने वाले पाठक बिना किसी नुकसान के इस अध्याय को छोड़ सकते हैं। INTT को समझने के लिए यह आवश्यक नहीं है, बशर्ते वे यह स्वीकार करें कि हमारा प्रस्तावित inverse matrix मान्य है।
Vandermonde matrix को एक ऐसे matrix के रूप में परिभाषित किया जाता है जहां प्रत्येक पंक्ति (row) एक geometric progression (गुणोत्तर श्रेणी) होती है।
पहली पंक्ति ω0 का geometric progression है, जो (ω0)0 से (ω)k−1 तक होता है।
दूसरी पंक्ति ω1 का geometric progression है, जो (ω1)0 से (ω1)k−1 तक होता है।
यह अंतिम पंक्ति तक जारी रहता है, जो ωk−1 का geometric progression है, जो (ωk−1)0 से (ωk−1)k−1 तक होता है।
इस प्रकार, evaluations को इस रूप में लिखा जा सकता है:
f(ωi)=j=0∑k−1ωijaj
i∈{0,1,2,...,k−1} के लिए।
Indices पर ध्यान दें: उपरोक्त समीकरण में, हमारे पास दो indices हैं। Index i यह दर्शाता है कि हम किस evaluation के साथ काम कर रहे हैं, और यह 0,1,2,…,k−1 मान ले सकता है। इसका मतलब है कि उपरोक्त सूत्र केवल एक समीकरण का प्रतिनिधित्व नहीं करता है, बल्कि k समीकरणों का प्रतिनिधित्व करता है, जो i के प्रत्येक मान के लिए एक है। उदाहरण के लिए, उपरोक्त अंकन (notation) निम्न का एक संक्षिप्त रूप (shorthand) है:
ωij और aj में index j एक summation index है और इसलिए योग (sum) द्वारा “consumed” (उपभोग) कर लिया जाता है। क्योंकि यह योग द्वारा consumed हो जाता है, यह समीकरण के बाईं ओर दिखाई नहीं देता है। Indices i और j का चुनाव मनमाना (arbitrary) है; हम m,n,p,q या किसी अन्य अक्षर का उपयोग कर सकते थे। सामान्य तौर पर, vector indices के लिए, वर्णमाला के मध्य के अक्षरों का उपयोग करना आम बात है।
अब हम vector y से vector a प्राप्त करने के लिए inverse relation खोजना चाहते हैं। दूसरे शब्दों में, हम a=V−1(ω)⋅y की गणना करना चाहते हैं, जहां V−1(ω), V(ω) का inverse है।
हमारा दावा है कि Vandermonde matrix V(ω) का inverse भी एक Vandermonde matrix होता है, जिसे k1V(ω−1) द्वारा दिया जाता है।
पूरी तरह से स्पष्ट करने के लिए, हमारा दावा यह है कि
V−1(ω)=k1V(ω−1)
जहां ω unity का एक primitive k-th root है।
यदि दावा सही है, तो vector a की गणना निम्न प्रकार से की जा सकती है:
इस ऑपरेशन को निम्नलिखित योग (sum) के रूप में लिखा जा सकता है:
ai=m=0∑k−1k1ω−imf(ωm)
i∈{0,1,2,...,k−1} के लिए।
शैक्षणिक कारणों (pedagogical reasons) से, हम अपने दावे को - कि Vandermonde matrix V(ω) का inverse एक अन्य Vandermonde matrix है, जिसे k1V(ω−1) द्वारा दिया जाता है - दो अलग-अलग तरीकों से सिद्ध करेंगे।
सबसे पहले, हम दिखाएंगे कि V(ω) और k1V(ω−1) का matrix multiplication identity matrixI देता है, अर्थात,
V(ω)⋅k1V(ω−1)=I
फिर, हम दिखाएंगे कि यदि हम पहले y प्राप्त करने के लिए V(ω) को a से गुणा करते हैं, और फिर k1V(ω−1) को V(ω)a से गुणा करते हैं, तो हम वापस a प्राप्त कर लेते हैं।
ये दोनों प्रमाण अनिवार्य रूप से समान हैं, बस दो अलग-अलग तरीकों से व्यक्त किए गए हैं।
इसका प्रमाण कि V(ω)⋅k1V(ω−1)=I
हम सिद्ध करेंगे कि V(ω) का k1V(ω−1) के साथ matrix multiplication, identity matrix देता है।
यह प्रमाण roots of unity की orthogonality property पर निर्भर करता है, जिसे एक summation के रूप में व्यक्त किया जाता है। इसलिए, हम पहले matrix multiplication को summation form में लिखते हैं ताकि हम इस orthogonality property का उपयोग कर सकें।
Index notation में V(ω)⋅k1V(ω−1) का गुणन (multiplication)
याद करें कि पंक्ति i और स्तंभ m में V(ω) की matrix entry निम्न द्वारा दी जाती है:
ωim
नोट: यहां पंक्तियों और स्तंभों की नंबरिंग (numbering) 1 के बजाय 0 से मानी गई है।
उदाहरण के लिए, V(ω) की पंक्ति 1 और स्तंभ 2 में entry (ω1)2 है, जैसा कि नीचे लाल रंग में highlight किया गया है:
इसलिए, जब दो matrices V(ω) और k1V(ω−1) को गुणा किया जाता है, तो पंक्ति i और स्तंभ j में परिणामी तत्व V(ω) की पंक्ति i (लाल) को k1V(ω−1) के स्तंभ j (नीला) के साथ गुणा करके प्राप्त किया जाता है:
अब हमें यह दिखाना होगा कि entries Mij identity matrix की entries के बराबर हैं। ऐसा करने के लिए, हम roots of unity की orthogonality का उपयोग करते हैं।
याद करें: Roots of unity की Orthogonality
Roots of unity की orthogonality पर आधारित अध्याय में, हमने दिखाया था कि
m=0∑k−1(ωm)i−j=⎩⎨⎧k,0,if i≡j(modk),otherwise.
संक्षेप में कहें तो, उपरोक्त सूत्र हमें दो स्थितियों में summation का परिणाम देता है: (1) जब i≡j और (2) जब i≡j। हम नीचे दोनों स्थितियों का उपयोग करेंगे।
स्थिति 1: जब i≡j
हम गणना करना चाहते हैं:
Mij=k1m=0∑k−1(ωm)i−j
जब i≡j हो। Roots of unity की orthogonality कहती है कि, जब i≡j,
m=0∑k−1(ωm)i−j=k
Mij के लिए इस परिणाम का उपयोग करने पर, हमें प्राप्त होता है:
Mij=k1m=0∑k−1(ωm)i−j=k1k=1
इस प्रकार, diagonal terms (जैसे M00,M11,M22,...,M(k−1)(k−1)) के लिए, हमारे पास है:
Mij=1when i=j
स्थिति 2: जब i≡j
अब हम गणना करना चाहते हैं:
Mij=k1m=0∑k−1(ωm)i−j
जब i≡j हो। Roots of unity की orthogonality कहती है कि, जब i≡j,
m=0∑k−1(ωm)i−j=0
Mij के लिए इस परिणाम का उपयोग करने पर, हमारे पास है:
Mij=k1m=0∑k−1(ωm)i−j=k10=0
इसलिए, किसी भी non-diagonal terms (जैसे M10,M01,M12,…) के लिए, हमारे पास Mij=0 है।
Matrix M
उपरोक्त स्थितियों (1) और (2) को ध्यान में रखते हुए, हमें प्राप्त होता है कि matrix M=(Mij) है:
M=10⋮001⋮0⋯⋯⋱⋯00⋮1
जो बिल्कुल identity matrix I है। इस प्रकार, matrices V(ω) और k1V(ω−1) एक दूसरे के inverses हैं, क्योंकि
V(ω)⋅(k1V(ω−1))=M=I
Vector y के साथ k1V(ω−1) का Matrix multiplication वापस vector a देता है
यह दिखाने का दूसरा तरीका कि k1V(ω−1), V(ω) का inverse है, यह दिखाना है कि यह बाद वाले (latter) को invert करता है।
अर्थात, यदि हम पहले y प्राप्त करने के लिए V(ω) को a पर लागू करते हैं,
y=V(ω)⋅a
और फिर y पर k1V(ω−1) लागू करते हैं, तो हम a वापस प्राप्त कर लेते हैं:
a=k1V(ω−1)⋅y
हम बिल्कुल यही दिखाएंगे।
पहला transformation: y=V(ω)⋅a
पहला transformation निम्नलिखित matrix operation के माध्यम से coefficients के vector a को evaluations के vector y में ले जाता है:
कोष्ठक (parentheses) में मौजूद पद (term) बिल्कुल orthogonality relation है:
m=0∑k−1(ωm)i−j=⎩⎨⎧k,0,if i≡j(modk),otherwise.
प्रमाण को जारी रखने के लिए, हम स्थिति (1), जहां i=j, और स्थिति (2), जहां i=j का अध्ययन कर सकते थे, लेकिन हम एक अलग तरीके से आगे बढ़ेंगे। हम Kronecker delta नामक एक प्रतीक का परिचय देंगे।
Kronecker delta, δij, इस मामले में i और j 2 indices वाला एक प्रतीक है, जो i=j होने पर 1 होता है और अन्यथा 0 होता है:
δij={10if i=jif i=j
Kronecker delta को identity matrix की entries के रूप में समझा जा सकता है।
Kronecker delta का उपयोग करते हुए, हम orthogonality property को इस प्रकार लिख सकते हैं:
m=0∑k−1(ωm)i−j=kδij
a~j के expression में Kronecker delta का उपयोग करने पर, हमारे पास है:
Summation का विस्तार (expanding) करने पर, उपरोक्त expression को इस प्रकार लिखा जा सकता है:
a~j=δ0ja0+δ1ja1+δ2ja2+...+δ(k−1)jak−1
Kronecker delta property के अनुसार, summation में केवल एक पद nonzero (अशून्य) होता है। उदाहरण के लिए, j=2 के लिए, केवल δ22 nonzero है। इस प्रकार, हमारे पास है: