註:以上集合內的多項式都是有限次方而我們中學時期就已經學過多項式加法與多項式乘法,所以很自然地這裡就形成一個環: 集合是剛剛的整係數多項式集合、環加法是多項式加法、環乘法是多項式乘法。 接著,我們可以擴展討論的範圍:例如有理係數多項式集合: \begin{align} \mathbb{Q}[x] =\{ a_{0}+a_{1}x^{1}+a_{2}x^{2}+\cdots+a_{n}x^n : a_{1},\dots,a_{n}\in \mathbb{Q} \} \end{align} 實係數多項式集合: \begin{align} \mathbb{R}[x] =\{ a_{0}+a_{1}x^{1}+a_{2}x^{2}+\cdots+a_{n}x^n : a_{1},\dots,a_{n}\in \mathbb{R} \} \end{align} 複係數多項式集合: \begin{align} \mathbb{C}[x] =\{ a_{0}+a_{1}x^{1}+a_{2}x^{2}+\cdots+a_{n}x^n : a_{1},\dots,a_{n}\in \mathbb{C} \} \end{align} 以上這些多項式集合,結合我們中學學過的加法與乘法,自然構成有理係數多項式環、實係數多項式環、複係數多項式環。 是不是很簡單?😀 甚至更廣泛地考慮「某個環」 $R$ ,然後把這個環裡面的元素當作係數,形成以下 $R$ 係數多項式集合: \begin{align} R[x] =\{ a_{0}+a_{1}x^{1}+a_{2}x^{2}+\cdots+a_{n}x^n : a_{1},\dots,a_{n}\in R \} \end{align} 多項式加法還是可以用,因為 $R$ 有他自己的環加法;多項式乘法還是可以用,因為 $R$ 有他自己的環乘法與環加法。你看,這就做出一個 $R$ 係數多項式環。 在這系列文章裡,最重要的莫過於以下的多項式環: 考慮某個模除 $q$ 的整數環: \begin{align} \mathbb{Z}/q\mathbb{Z} \end{align} 把這裡面的數字當作係數,形成: \begin{align} \mathbb{Z}/q\mathbb{Z}[x] =\{ a_{0}+a_{1}x^{1}+a_{2}x^{2}+\cdots+a_{n}x^n : a_{1},\dots,a_{n}\in \mathbb{Z}/q\mathbb{Z} \} \end{align} 你就得到一個(我覺得中文很難翻譯)「係數模除 $q$ 的多項式環」! 這個環實在是很重要喔,所以我們要舉幾個計算的例子: ### 係數模除 3 的多項式環(徒手進行計算) 考慮以下兩個在係數模除 3 的多項式環內的多項式: \begin{align} f(x) = 1+2x+1x^{2}+2x^{3} , \quad g(x) = 1+1x+2x^{2}, \quad f(x),g(x)\in \mathbb{Z}/3\mathbb{Z} \end{align} 這兩個多項式的環加法結果為: \begin{aligned} f(x) + g(x) &= (1+2x+1x^{2}+2x^{3}) + (1+1x+2x^{2}) &\quad \mathrm{mod} \ 3 \\ &= 2 + 3x+3x^{2} + 2x^{3}&\quad \mathrm{mod} \ 3 \\ &= 2 + 3x^{3}&\quad \mathrm{mod} \ 3 \end{aligned} 第二個等號是根據正常的多項式加法,第三個等號是對係數進行模除。 這兩個多項式的環乘法結果為: \begin{aligned} f(x) \times g(x) &= (1+2x+1x^{2}+2x^{3}) \times (1+1x+2x^{2})&\quad \mathrm{mod} \ 3\\ &= 1 + 3 x + 5 x^2 + 7 x^3 + 4 x^4 + 4 x^5&\quad \mathrm{mod} \ 3\\ &= 1 + 2x^{2}+x^{3}+x^{4}+x^{5}&\quad \mathrm{mod} \ 3 \end{aligned} 第二的等號是根據正常的多項式乘法,第三個等號是對係數進行模除。 ### 係數模除 197 的多項式環(使用 SageMath) 接著,我們來看看如何使用 SageMath 來定義剛剛這個多項式環,並進行對應的計算: 首先,我們先建構多項式環的類別: ```python=+ # 定義多項式環,係數模 197 q = 197 R_q = quotient(ZZ, q*ZZ) R_q_poly = PolynomialRing(R_q, x); # 分別代表係數環與未知數的符號 print(R_poly) # Outputs: # Univariate Polynomial Ring in x over Ring of integers modulo 197 ``` 輸出的結果翻譯為: Univariate Polynomial Ring : 單變數多項式環 in $x$ : 以 $x$ 為變數 over Ring of integers modulo $197$ : 係數是模除 $197$ 的整數環 接著我們來構造其中的元素 ```python=+ # 定義多項式 f(x) 和 g(x) f = 105*x^3 + 110*x^2 + 115*x + 120 g = 120*x^3 + 130*x^2 + 140*x + 150 print(type(f)) print(f) print(list(f)) # Outputs: #
後量子密碼學 04:多項式環 I
作者:
黃承瑋
閱讀時間:
10
分鐘
課程目錄