多項式在高等數學和物理學中都有著廣泛應用,JavaScript 也提供了多項式運算的相關功能。在 JavaScript 中,我們可以使用數組來表示一個多項式,下面我們將介紹如何進行多項式的加、減、乘和求導運算。
加法運算
對于多項式 P(x) = a0 + a1x + a2x^2 + ... + anx^n 和 Q(x) = b0 + b1x + b2x^2 + ... + bmx^m,它們的加法運算就是將它們的同類項相加得到一個新的多項式 R(x) = c0 + c1x + c2x^2 + ... + cmx^m+n,其中 ci = ai + bi(當 i ≤ n 且 i ≤ m)或 ci = ai(當 i >m)或 ci = bi(當 i >n)。
代碼實現如下:
function addPolynomial(p, q) { const m = p.length, n = q.length, r = new Array(Math.max(m, n)); for (let i = 0; i< r.length; i++) { r[i] = (i< m ? p[i] : 0) + (i< n ? q[i] : 0); } return r; } console.log(addPolynomial([1, 2, 3], [4, 5, 6])); // [5, 7, 9]減法運算 減法運算與加法運算類似,只不過是將同類項相減。 代碼實現如下:
function subPolynomial(p, q) { const m = p.length, n = q.length, r = new Array(Math.max(m, n)); for (let i = 0; i< r.length; i++) { r[i] = (i< m ? p[i] : 0) - (i< n ? q[i] : 0); } return r; } console.log(subPolynomial([1, 2, 3], [4, 5, 6])); // [-3, -3, -3]乘法運算 對于多項式 P(x) = a0 + a1x + a2x^2 + ... + anx^n 和 Q(x) = b0 + b1x + b2x^2 + ... + bmx^m,它們的乘法運算就是將兩個多項式的每一項相乘,并將相同次數的項相加得到一個新的多項式 R(x) = c0 + c1x + c2x^2 + ... + cmx^(m+n),其中 ci = ∑ k+l=i ak·bl(k ≤ n 且 l ≤ m)。 代碼實現如下:
function mulPolynomial(p, q) { const m = p.length, n = q.length, r = new Array(m + n - 1).fill(0); for (let i = 0; i< m; i++) { for (let j = 0; j< n; j++) { r[i+j] += p[i] * q[j]; } } return r; } console.log(mulPolynomial([1, 2, 3], [4, 5, 6])); // [4, 13, 28, 27, 18]求導運算 多項式 P(x) 的求導運算就是將其每一項的系數乘上其次數 k,并將 x 的次數減一,得到一個新的多項式 P'(x) = a1 + 2a2x + 3a3x^2 + ... + nanx^(n-1)。 代碼實現如下:
function diffPolynomial(p) { const n = p.length - 1, q = new Array(n); for (let i = 0; i< n; i++) { q[i] = (i + 1) * p[i + 1]; } return q; } console.log(diffPolynomial([1, 2, 3])); // [2, 6]總結 以上就是 JavaScript 中多項式加減乘求導運算的實現,通過數組存儲多項式,可以方便地對其進行各種運算。需要注意的是,在進行乘法運算時,新的多項式的次數為 m+n-1,而不是 m+n。