Khử căn bậc ba $\sqrt[3]{a+b\sqrt c}$
Ở phổ thông ta quen với những đẳng thức "phù thuỷ" kiểu $\sqrt[3]{7+5\sqrt2}=1+\sqrt2$ hay $\sqrt[3]{26+15\sqrt3}=2+\sqrt3$. Chúng luôn được đưa ra dưới dạng đã biết đáp án rồi kiểm tra lại bằng cách lập phương. Câu hỏi thật sự thú vị lại là câu hỏi ngược:
Cho trước $a, b, c$ nguyên. Làm sao biết $\sqrt[3]{a+b\sqrt c}$ có tháo được thành $q+p\sqrt d$ với $q,p$ nguyên hay không — và nếu được thì tìm $q,p$ thế nào mà không phải mò?
Bài viết này trả lời trọn vẹn câu hỏi đó: một điều kiện cần và đủ chỉ gồm hai phép kiểm tra số học, một thuật toán chạy trong nháy mắt, và lời giải thích vì sao phương trình then chốt $4q^3-3mq=a$ lại trông giống hệt công thức nhân ba $4\cos^3\theta-3\cos\theta=\cos3\theta$.
Lời giải được phát biểu cho $c$ tùy ý, kể cả khi $c$ có nhân tử chính phương như $c=8$ hay $c=108$. Chìa khoá cho trường hợp đó chỉ là một bước chuẩn hoá vô hại: viết $c=k^2d$ với $d$ squarefree thì $b\sqrt c=(bk)\sqrt d$, nên mọi thứ quy về radicand squarefree — và khi ấy điều kiện thứ ba (tính nguyên của $p$) tự động thoả, chỉ còn hai điều kiện phải kiểm. Chi tiết ở mục 4 và 5.
Giả thiết xuyên suốt: $c$ là số nguyên dương không chính phương (nên $\sqrt c$ vô tỉ; $c$ vẫn được phép chứa nhân tử chính phương), còn $a,b,q,p$ là các số nguyên và $b\neq0$.
Máy khử căn — thử ngay
Nhập $a,b,c$ rồi bấm Khử căn. Máy chạy đúng thuật toán tổng quát ở mục 5 (toàn bộ tính toán dùng số nguyên lớn BigInt nên không sai số), và in ra từng bước để bạn đối chiếu.
1. Chiều thuận: sinh $a,b$ từ $q,p$
Trước khi đi tìm điều kiện, hãy làm việc dễ trước: giả sử đã có $q,p$ và lập phương ra xem được gì.
Vì $c$ không chính phương nên $\sqrt c$ vô tỉ, do đó $\{1,\sqrt c\}$ độc lập tuyến tính trên $\mathbb Q$: hai số dạng $u+v\sqrt c$ bằng nhau khi và chỉ khi từng phần bằng nhau. Đồng nhất phần hữu tỉ và phần chứa $\sqrt c$:
Đây là cỗ máy sinh: cho $q,p$ chạy khắp $\mathbb Z^2$, hai công thức trên quét đúng mọi cặp $(a,b)$ khử được — không thiếu cặp nào. Mục 8 sẽ vẽ toàn bộ tập điểm đó ra mặt phẳng $(a,b)$ để thấy nó thưa đến mức nào. Phần còn lại của bài viết là chuyện đảo ngược cỗ máy này.
2. Bất biến then chốt: chuẩn $N=a^2-cb^2$
Hệ hai phương trình bậc ba hai ẩn ở mục 1 trông rất khó đảo. Mẹo cổ điển: dùng phép liên hợp $\sqrt c\mapsto-\sqrt c$. Đây là một tự đẳng cấu của trường $\mathbb Q(\sqrt c)$, nên nó giao hoán với mọi phép cộng và nhân — cứ áp vào cả hai vế của $(q+p\sqrt c)^3=a+b\sqrt c$ là ra ngay đẳng thức thứ hai:
Được "một tặng một": khử được cái này thì cũng khử được cái liên hợp, với cùng $q,p$. Bây giờ nhân hai đẳng thức lập phương với nhau, dùng $(x+y)(x-y)=x^2-y^2$ cho cả hai vế:
Đại lượng $N(u+v\sqrt c)=u^2-cv^2$ chính là chuẩn (norm) của $\mathbb Z[\sqrt c]$, và nó có tính nhân: $N(xy)=N(x)N(y)$. Chuẩn của một lập phương thì phải là lập phương — đó là toàn bộ nội dung của đẳng thức trên, và nó cho ta điều kiện cần đầu tiên, kiểm tra được ngay bằng mắt:
Điều kiện 1. $N=a^2-cb^2$ buộc phải là lập phương đúng trong $\mathbb Z$. Khi đó đặt $\;m=\sqrt[3]{N}=q^2-cp^2\in\mathbb Z\;$ (chú ý: $m$ có thể âm, ví dụ $m=-1$).
Cái hay là $m$ tuy định nghĩa bằng $q,p$ chưa biết, nhưng lại tính được chỉ từ $a,b,c$. Một ẩn phụ đã bị "bắt sống". Hệ quả nhỏ mà dùng liên tục ở mục 3: $$cp^2=q^2-m .$$
3. Đưa về một phương trình bậc ba theo $q$
Thay $cp^2=q^2-m$ vào $a=q^3+3cp^2q$ để tống cổ $p$ ra khỏi phương trình:
Chỉ còn một ẩn nguyên duy nhất, và quan trọng hơn: vì $a=q(4q^2-3m)$ nên $q$ là một ước của $a$. Bài toán "khử căn bậc ba" vừa biến thành bài toán "thử các ước của $a$" — hữu hạn và nhanh.
Cách suy ra thứ hai (đối xứng, đáng nhớ hơn). Đặt $t=\sqrt[3]{a+b\sqrt c}$ và $s=\sqrt[3]{a-b\sqrt c}$ (căn bậc ba thực). Mục 2 cho $t=q+p\sqrt c$, $s=q-p\sqrt c$, nên $$t+s=2q,\qquad ts=\sqrt[3]{N}=m,\qquad t^3+s^3=2a .$$ Ráp vào hằng đẳng thức $t^3+s^3=(t+s)^3-3ts(t+s)$: $$2a=(2q)^3-3m(2q)=8q^3-6mq\;\Longleftrightarrow\;4q^3-3mq=a .$$ Nói cách khác: $t$ và $s$ là hai nghiệm của $X^2-2qX+m=0$. Từ góc nhìn này, $q$ và $m$ chỉ là tổng và tích của hai căn bậc ba liên hợp.
Vì sao dạng $4q^3-3mq$ trông quen? Với $m>0$, đổi biến $q=\sqrt m\,\cos\theta$ thì phương trình thành $m^{3/2}\big(4\cos^3\theta-3\cos\theta\big)=a$, tức $\cos3\theta=a/m^{3/2}$ — đúng công thức nhân ba. Với $m<0$ thì phép đổi biến $q=\sqrt{|m|}\sinh u$ cho $4\sinh^3u+3\sinh u=\sinh 3u$. Đây không phải trùng hợp: nó chính là mối liên hệ giữa khử căn bậc ba và bài toán chia ba góc, sẽ nói ở mục 10.
Hình 1 — đường bậc ba $y=4q^3-3mq$ và đường ngang $y=a$
Nghiệm của bài toán là giao điểm của đường cong với đường ngang $y=a$, và ta chỉ chấp nhận giao điểm nằm đúng trên một vạch nguyên. Hình dưới đây tự cập nhật theo $a,b,c$ bạn nhập ở máy khử căn phía trên (bấm Khử căn để vẽ lại).
Một quan sát làm mọi thứ gọn hẳn: đường cong luôn cắt $y=a$ tại đúng $1$ điểm. Với $m>0$, đường bậc ba có cực đại địa phương tại $q=-\tfrac{\sqrt m}{2}$ (giá trị $+m^{3/2}$) và cực tiểu tại $q=+\tfrac{\sqrt m}{2}$ (giá trị $-m^{3/2}$) — dải màu vàng trên hình. Ba nghiệm thực chỉ xuất hiện khi $y=a$ chui vào trong dải, tức $a^2<m^3$. Nhưng $$a^2-m^3=a^2-N=a^2-(a^2-cb^2)=cb^2>0\quad(\text{vì } c>0,\ b\neq0),$$ nên $y=a$ luôn nằm ngoài dải. Vậy phương trình $4q^3-3mq=a$ có đúng một nghiệm thực, kéo theo: nếu có nghiệm nguyên thì nghiệm đó là duy nhất, và $(q,p)$ tìm được là duy nhất. (Cũng hợp lẽ: một số thực chỉ có một căn bậc ba thực.)
Hệ quả thực dụng: không cần lo "chọn nghiệm nào" — cứ tìm thấy là xong. Và vì nghiệm thực duy nhất đó bằng $\tfrac12\big(\sqrt[3]{a+b\sqrt c}+\sqrt[3]{a-b\sqrt c}\big)$, ta còn có cách tính $q$ tức thời (mục 9).
4. Chuẩn hoá radicand: $c=k^2d$ với $d$ squarefree
Mọi thứ ở mục 1–3 đúng khi ta đòi đáp số có dạng $q+p\sqrt c$. Nhưng đòi hỏi đó quá hẹp. Ví dụ nhỏ sau cho thấy vấn đề: với $\sqrt[3]{20+7\sqrt8}$, mọi bước đều chạy trơn ($N=8=2^3$, $m=2$, $q=2$), nhưng hệ số cuối lại ra $\dfrac{7}{4\cdot4-2}=\dfrac12$ — không nguyên. Trong khi đó đáp số thật thì đẹp long lanh: $\sqrt[3]{20+7\sqrt8}=2+\sqrt2$. Nó chỉ "không nguyên" vì ta cố viết theo $\sqrt8$ thay vì $\sqrt2$.
Cách chữa đơn giản đến mức gần như hiển nhiên: $b\sqrt c$ không đổi giá trị khi rút nhân tử chính phương ra khỏi căn. Viết
Khi đó $\sqrt c=k\sqrt d$, nên $\;b\sqrt c=(bk)\sqrt d$. Đặt $B=bk$, bài toán $\sqrt[3]{a+b\sqrt c}$ chính là bài toán $\sqrt[3]{a+B\sqrt d}$ với radicand đã squarefree — và với radicand squarefree thì ta có thuật toán trọn vẹn. Ví dụ trên: $8=2^2\cdot2$ nên $k=2$, $d=2$, $B=7\cdot2=14$, tức $(a,b,c)=(20,7,8)\;\to\;(a,B,d)=(20,14,2)$.
Nhận xét quan trọng: $N$, $m$, $q$ đều là bất biến của phép chuẩn hoá. Tính chuẩn theo bộ mới: $$N=a^2-dB^2=a^2-d(bk)^2=a^2-(dk^2)b^2=a^2-cb^2 .$$ Vậy $N$ không phụ thuộc vào việc có rút gọn hay không — cứ tính thẳng từ $a,b,c$ ban đầu. Kéo theo $m=\sqrt[3]N$ không đổi, và phương trình $4q^3-3mq-a=0$ (chỉ chứa $a$ và $m$!) cho cùng một $q$.
Chỉ có hai thứ thay đổi: hệ số $p$ tính theo $B=bk$, và căn trong đáp số là $\sqrt d$ chứ không phải $\sqrt c$. Hai cách viết khớp nhau vì $$p\sqrt d=\frac{bk}{4q^2-m}\,\sqrt d=\frac{b}{4q^2-m}\,\sqrt c .$$ Đó đúng là lời giải thích cho hiện tượng $\tfrac12$ ở trên: hệ số theo $\sqrt c$ có thể là phân số, còn hệ số theo $\sqrt d$ thì luôn nguyên (chứng minh ở mục 5).
Nói cách khác: điều kiện 3 ở phiên bản "theo $\sqrt c$" không phải một rào cản thật sự, nó chỉ là hậu quả của việc chọn sai đơn vị đo. Sau khi chuẩn hoá, nó biến mất khỏi định lý.
5. Định lý tổng quát và thuật toán
Định lý (khử căn bậc ba, $c$ tùy ý).
Cho $a,b\in\mathbb Z$, $b\neq0$, $c\in\mathbb Z_{>0}$ không chính phương; viết $c=k^2d$ với $d$ squarefree và đặt $B=bk$. Khi đó $\sqrt[3]{a+b\sqrt c}$ khử được về dạng $q+p\sqrt d$ với $q,p\in\mathbb Z$ khi và chỉ khi:
- $N=a^2-cb^2$ là lập phương đúng; đặt $m=\sqrt[3]N\in\mathbb Z$;
- $4q^3-3mq-a=0$ có nghiệm nguyên $q$ (chỉ cần thử các ước của $a$).
Khi đó nghiệm là duy nhất và
Khi $c$ đã squarefree thì $k=1$, $d=c$, $B=b$ — ta thu lại đúng phát biểu quen thuộc với ba điều kiện, trong đó điều kiện thứ ba trở thành hiển nhiên.
Thuật toán
- Rút $c=k^2d$ với $d$ squarefree, đặt $B=bk$. (Ví dụ $c=108=6^2\cdot3\Rightarrow k=6,\ d=3$.)
- Tính $N=a^2-cb^2$. Nếu $N$ không là lập phương đúng $\Rightarrow$ không khử được. Ngược lại $m=\sqrt[3]N$ (nhớ rằng $m$ có thể âm).
- Với từng ước nguyên $q$ của $a$ (cả âm và dương), thử $4q^3-3mq=a$. Không có $q$ nào thoả $\Rightarrow$ không khử được.
- Tính $p=\dfrac{B}{4q^2-m}$ — chắc chắn nguyên — và trả về $q+p\sqrt d$.
Chứng minh chiều đủ (và vì sao $p$ tự động nguyên)
Chiều cần đã xong ở mục 2–3, áp cho bộ $(a,B,d)$: nếu $\sqrt[3]{a+B\sqrt d}=q+p\sqrt d$ thì $N=a^2-dB^2=(q^2-dp^2)^3$ và $4q^3-3mq=a$; mà $a^2-dB^2=a^2-cb^2$ nên hai điều kiện phát biểu được thẳng theo $a,b,c$. Ngược lại, giả sử $N=m^3$ và $a=4q^3-3mq$ với $q\in\mathbb Z$. Khai triển $a^2-m^3$ theo $q,m$ rồi nhận dạng, ta có một đẳng thức đại số thuần tuý:
Nếu $4q^2-m=0$ thì vế phải bằng $0$, buộc $b=0$ — trái giả thiết. Vậy $4q^2-m\neq0$, đặt được số hữu tỉ $p=\dfrac{B}{4q^2-m}$, và chia hai vế cho $(4q^2-m)^2$:
Bổ đề (điểm mấu chốt của việc chuẩn hoá). Nếu $d$ squarefree, $p\in\mathbb Q$ và
$d\,p^2\in\mathbb Z$ thì $p\in\mathbb Z$.
Chứng minh. Viết $p=\dfrac uv$ tối giản, $v>0$. Từ $\dfrac{du^2}{v^2}\in\mathbb Z$ suy ra
$v^2\mid du^2$; vì $\gcd(u,v)=1$ nên $\gcd(u^2,v^2)=1$, do đó $v^2\mid d$. Nhưng $d$ squarefree nên
$v^2\mid d$ chỉ có thể khi $v=1$. $\square$
(Đây chính xác là chỗ giả thiết squarefree được dùng, và cũng là chỗ phiên bản "theo $\sqrt c$" thất
bại: với $c=8$ không squarefree, $8p^2=2\in\mathbb Z$ vẫn cho $p=\tfrac12$ hữu tỉ.)
Vậy $p\in\mathbb Z$. Chỉ việc lắp lại vào công thức mục 1 (với bộ $(a,B,d)$) là kiểm tra xong:
Tức $(q+p\sqrt d)^3=a+B\sqrt d=a+b\sqrt c$. Vì căn bậc ba thực là duy nhất, $\sqrt[3]{a+b\sqrt c}=q+p\sqrt d$. Còn tính duy nhất của $(q,p)$ thì đã có từ mục 3: phương trình $4q^3-3mq=a$ chỉ có một nghiệm thực (vì $a^2-m^3=dB^2>0$), nên không thể có hai đáp số khác nhau. $\blacksquare$
Chi phí thuật toán: một phép nhân số lớn, một căn bậc ba nguyên, và việc liệt kê ước của $a$ — bước duy nhất "nặng". Mục 9 cho cách bỏ hẳn bước liệt kê ước, đưa thuật toán về $O(1)$ phép toán trên số nguyên lớn.
6. Ví dụ khử được
Bấm vào ô ví dụ để nạp vào máy khử căn ở đầu bài và xem lại từng bước.
Ví dụ 1 — $\sqrt[3]{7+5\sqrt2}$, $c=2$ (đã squarefree)
$k=1,\ d=2,\ B=5$. Chuẩn $N=49-2\cdot25=-1=(-1)^3$ nên $m=-1$. Phương trình $4q^3+3q-7=0$; ước của $7$ là $\pm1,\pm7$, thử $q=1$: $4+3-7=0$ ✓. Rồi $p=\dfrac{5}{4-(-1)}=1$.
Ví dụ 2 — $\sqrt[3]{26+15\sqrt3}$, $c=3$
$N=676-3\cdot225=1=1^3$, $m=1$. Phương trình $4q^3-3q-26=0$, thử $q=2$: $32-6-26=0$ ✓. $p=\dfrac{15}{16-1}=1$.
Ví dụ 3 — $\sqrt[3]{207+94\sqrt5}$ (với $m$ lớn)
$N=207^2-5\cdot94^2=42849-44180=-1331=(-11)^3$ nên $m=-11$. Phương trình $4q^3+33q-207=0$, thử $q=3$: $108+99-207=0$ ✓. $p=\dfrac{94}{4\cdot9-(-11)}=\dfrac{94}{47}=2$.
Ví dụ 4 — $\sqrt[3]{20+7\sqrt8}$: $c$ có nhân tử chính phương
- Chuẩn hoá: $8=2^2\cdot2\Rightarrow k=2,\ d=2,\ B=14$, tức $20+7\sqrt8=20+14\sqrt2$.
- $N=20^2-8\cdot7^2=400-392=8=2^3\Rightarrow m=2$.
- $4q^3-6q-20=0$, thử $q=2$: $32-12-20=0$ ✓.
- $p=\dfrac{14}{4\cdot4-2}=\dfrac{14}{14}=1$.
Kiểm tra: $(2+\sqrt2)^3=8+12\sqrt2+12+2\sqrt2=20+14\sqrt2=20+7\sqrt8$ ✓. Nếu cố viết theo $\sqrt8$ thì hệ số là $\tfrac12$ — đúng nhưng không nguyên.
Ví dụ 5 — $\sqrt[3]{10+\sqrt{108}}$: $b=1$ nhưng $k=6$
$108=6^2\cdot3\Rightarrow k=6,\ d=3,\ B=6$. $N=100-108\cdot1=-8=(-2)^3$ nên $m=-2$. Phương trình $4q^3+6q-10=0$ có $q=1$. $p=\dfrac{6}{4-(-2)}=1$.
Chú ý: hệ số ban đầu $b=1$, nhưng $p=1$ lại đi kèm $\sqrt3$ — phải qua $B=bk=6$ mới ra đúng. Đây là ví dụ điển hình cho việc không thể bỏ bước chuẩn hoá.
Ví dụ 6 — số to: $\sqrt[3]{10621+4338\sqrt6}$
$N=10621^2-6\cdot4338^2=112805641-112909464=-103823=(-47)^3$, $m=-47$. Ước của $10621=13\cdot19\cdot43$ có $8$ ước dương (và $16$ ước nguyên cả hai dấu); thử đến $q=13$: $4\cdot2197+141\cdot13=8788+1833=10621$ ✓. Rồi $p=\dfrac{4338}{4\cdot169+47}=\dfrac{4338}{723}=6$.
Mò tay thì gần như vô vọng, nhưng thuật toán vẫn chỉ mất vài phép tính. Đây là chỗ nó thật sự có giá.
7. Khi nào thật sự "bó tay"
Sau khi chuẩn hoá radicand, rào cản "hệ số không nguyên" đã bị loại. Chỉ còn đúng hai rào cản bản chất — và cả hai đều phát hiện được ngay lập tức.
Rào cản 1 — $N$ không là lập phương
Dừng ngay ở bước 2, không cần thử gì thêm.
- $\sqrt[3]{2+\sqrt2}$: $N=4-2=2$ — không lập phương.
- $\sqrt[3]{5+2\sqrt3}$: $N=25-12=13$ — không lập phương.
- $\sqrt[3]{44+18\sqrt{12}}$: $N=1936-3888=-1952$, kẹp giữa $(-12)^3=-1728$ và $(-13)^3=-2197$.
Rào cản 2 — có $m$ nhưng $q$ không nguyên
$N$ là lập phương, nhưng $4q^3-3mq=a$ vô nghiệm nguyên.
- $\sqrt[3]{1+\sqrt2}$: $N=-1=(-1)^3$, $m=-1$, nhưng $4q^3+3q-1=0$ chỉ có nghiệm thực $q^*\approx0.298036$ — không nguyên (ước của $1$ chỉ có $\pm1$).
- $\sqrt[3]{3+2\sqrt2}$: $N=9-8=1$, $m=1$, phương trình $4q^3-3q-3=0$ vô nghiệm nguyên. (Cái bẫy quen: $3+2\sqrt2=(1+\sqrt2)^2$ nên nó là một bình phương đẹp — $\sqrt{3+2\sqrt2}=1+\sqrt2$ — chứ không phải lập phương.)
Tóm lại, với $c$ bất kỳ (không chính phương): rút $c=k^2d$ để về radicand squarefree, rồi áp đúng hai điều kiện — $N$ lập phương $\to$ $q$ nguyên — và lấy $p=\dfrac{bk}{4q^2-m}$. Không có trường hợp thứ ba.
Ghi chú: nếu cho phép $q,p$ hữu tỉ thì phát biểu vẫn đúng với "lập phương của một số hữu tỉ"; ví dụ $\sqrt[3]{20+7\sqrt8}=2+\tfrac12\sqrt8$ — cùng một số, chỉ khác cách viết. Còn nếu đòi khử về dạng có căn khác (chẳng hạn $u+v\sqrt[3]{w}$) thì đó là bài toán denesting tổng quát, khó hơn nhiều và không thuộc phạm vi bài này.
8. Bản đồ các cặp khử được trong mặt phẳng $(a,B)$
Quay lại cỗ máy sinh ở mục 1, lần này với radicand squarefree $d$: mỗi $(q,p)\in\mathbb Z^2$ cho đúng một cặp $$\big(a,\;B\big)=\Big(q\,(q^2+3dp^2),\;\;p\,(3q^2+dp^2)\Big).$$ Hình 2 vẽ toàn bộ tập ảnh đó — tức tập tất cả các $\sqrt[3]{a+B\sqrt d}$ khử được. Lưới mảnh là ảnh của lưới nguyên $\mathbb Z^2$ dưới phép lập phương (giữ $p$ cố định, cho $q$ chạy liên tục, và ngược lại); các đĩa tròn là những điểm nguyên thật sự.
Kéo để di chuyển; phóng to bằng nút $+/-$ hoặc lăn chuột khi giữ Ctrl/⌘. Trỏ vào một điểm để xem $(q,p)$ và chuẩn $m=q^2-dp^2$; bấm vào điểm để nạp $(a,B,d)$ vào máy khử căn ở đầu bài. Màu theo dấu của $m$: $m>0$, $m<0$, $m=0$. Khi trỏ vào một điểm, hình vẽ thêm hyperbol chuẩn $a^2-dB^2=m^3$ đi qua nó — mọi điểm khử được với cùng $m$ đều nằm trên đường này.
Hai điều đáng để ý trên hình. Thứ nhất, tập điểm cực kỳ thưa và loãng rất nhanh: $a$ và $B$ lớn cỡ bậc ba của $q,p$, nên trong một khung nhìn cỡ vài trăm chỉ có vài chục điểm — xác suất một cặp $(a,B)$ "bốc ngẫu nhiên" mà khử được gần như bằng $0$. Thứ hai, ảnh của lưới nguyên là một lưới cong chứ không phải lưới thẳng: đó là dấu vết hình học của phép nâng lũy thừa ba trong $\mathbb Z[\sqrt d]$, và các hyperbol $a^2-dB^2=m^3$ chính là các "đường đồng mức chuẩn" mà bước 2 của thuật toán đang kiểm tra.
9. Mẹo: lấy $q$ trực tiếp, khỏi cần liệt kê ước
Bước liệt kê ước của $a$ là bước tốn kém duy nhất (và với $a$ vài chục chữ số thì bất khả thi). Nhưng mục 3 đã cho ta chìa khoá: $t=\sqrt[3]{a+B\sqrt d}$ và $s=\sqrt[3]{a-B\sqrt d}$ thoả $t+s=2q$. Vậy chỉ cần một phép tính số thực rồi làm tròn:
Vì nghiệm thực là duy nhất (mục 3), nếu tồn tại $q$ nguyên thì nó chính là số làm tròn ở trên — không có ứng viên nào khác. Sau đó kiểm tra lại bằng số nguyên: $4q^3-3mq\overset?=a$ rồi $p=\dfrac{bk}{4q^2-m}$. Phép làm tròn chỉ là đoán; phần kết luận vẫn hoàn toàn chính xác vì được xác nhận bằng số học nguyên.
Với $a,b$ rất lớn, số thực dấu phẩy động sẽ hết độ chính xác; khi đó thay bằng vài vòng Newton trên số nguyên cho $f(q)=4q^3-3mq-a$, hoặc chặt nhị phân trên $q$ (vì $f$ đơn điệu ngoài dải $|q|\le\sqrt m/2$, và ta đã biết nghiệm nằm ngoài dải đó). Máy khử căn ở đầu bài dùng cả hai: nó thử ứng viên làm tròn trước, chỉ liệt kê ước khi $|a|$ đủ nhỏ để việc đó là miễn phí.
10. Vì sao lại là công thức nhân ba: liên hệ với casus irreducibilis
Phương trình $4q^3-3mq=a$ không hề giống công thức nhân ba một cách tình cờ. Giải một phương trình bậc ba bằng công thức Cardano bao giờ cũng dẫn tới một biểu thức dạng $\sqrt[3]{A+\sqrt{\Delta}}+\sqrt[3]{A-\sqrt{\Delta}}$ — đúng cặp $t,s$ ở mục 3. Bài toán "khử căn bậc ba" và bài toán "tìm nghiệm hữu tỉ của phương trình bậc ba" là một, chỉ đọc từ hai đầu khác nhau.
Điểm khác biệt nằm ở dấu của $\Delta$. Ở bài này $\Delta=a^2-m^3=dB^2>0$, nên $t,s$ đều thực và đường bậc ba chỉ cắt $y=a$ một lần — trường hợp "dễ", và đó là lý do thuật toán gọn gàng. Nhưng nếu ta làm đúng các phép biến đổi ấy với $c<0$, tức khử $\sqrt[3]{a+b\sqrt{-e}}$ với $e>0$, thì $\Delta=a^2+eb^2$ đổi vai, và điều kiện $|a|<m^{3/2}$ trở nên khả thi: phương trình bậc ba có ba nghiệm thực.
Đó chính là casus irreducibilis: một phương trình bậc ba với ba nghiệm thực nhưng bất khả quy trên $\mathbb Q$ thì không có nghiệm hữu tỉ, nên theo định lý của bài này, căn bậc ba phức $\sqrt[3]{a+b\sqrt{-e}}$ không khử được về dạng $q+p\sqrt{-e}$. Nói cách khác: Cardano buộc phải đi vòng qua số phức, và không có cách nào tránh. Trường hợp riêng nổi tiếng nhất là $\cos3\theta=\tfrac12$ với $4x^3-3x=\tfrac12$ — phương trình chia ba góc $60^\circ$, vô nghiệm hữu tỉ, tức không dựng được bằng thước và compa.
Vậy nên có thể nói gọn: khử được căn bậc ba $\Leftrightarrow$ phương trình nhân ba tương ứng có nghiệm hữu tỉ. Với $c>0$ ta luôn ở nhánh "hyperbolic" ($\sinh 3u$) — một nghiệm thực, kiểm tra dễ. Với $c<0$ ta rơi vào nhánh "trigonometric" ($\cos3\theta$) — ba nghiệm thực, và đó là nơi mọi bất khả thi cổ điển trú ngụ.
11. Mã nguồn Python
Cài đặt đúng thuật toán mục 5, dùng số nguyên Python (chính xác tuyệt đối, không dấu phẩy động). Hàm nhận $a,b,c$ và trả về $(q,p,d)$ nghĩa là $\sqrt[3]{a+b\sqrt c}=q+p\sqrt d$, hoặc None nếu không khử được.
from math import isqrt
def icbrt(n: int) -> tuple[int, bool]:
"""Căn bậc ba nguyên (giữ dấu): trả về (r, exact) với r**3 <= |n| sát nhất."""
sign, m = (-1, -n) if n < 0 else (1, n)
lo, hi = 0, 1
while hi ** 3 <= m: # tìm chặn trên bằng cách nhân đôi
hi <<= 1
while lo + 1 < hi: # chặt nhị phân
mid = (lo + hi) // 2
if mid ** 3 <= m:
lo = mid
else:
hi = mid
return sign * lo, lo ** 3 == m
def squarefree_part(c: int) -> tuple[int, int]:
"""Rút c = k^2 * d với d squarefree. Trả về (k, d)."""
k, d = 1, c
i = 2
while i * i <= d:
while d % (i * i) == 0:
d //= i * i
k *= i
i += 1
return k, d
def divisors(n: int) -> list[int]:
"""Mọi ước nguyên của n (cả âm và dương), xếp theo trị tuyệt đối tăng dần."""
n = abs(n)
if n == 0:
return [0]
ds = set()
i = 1
while i * i <= n:
if n % i == 0:
ds.add(i)
ds.add(n // i)
i += 1
return sorted(ds | {-x for x in ds}, key=lambda x: (abs(x), x))
def denest_cbrt(a: int, b: int, c: int):
"""Khử căn bậc ba của a + b*sqrt(c).
Trả về (q, p, d) với sqrt[3]{a + b*sqrt(c)} = q + p*sqrt(d), d squarefree;
hoặc None nếu không khử được bằng số nguyên.
"""
if b == 0 or c <= 0:
raise ValueError("cần b != 0 và c > 0")
if isqrt(c) ** 2 == c:
raise ValueError("c chính phương: sqrt(c) đã là số nguyên")
k, d = squarefree_part(c) # bước 1: chuẩn hoá radicand
B = b * k
m, exact = icbrt(a * a - c * b * b) # bước 2: N = a^2 - c*b^2 phải là lập phương
if not exact:
return None
for q in divisors(a): # bước 3: q phải là ước của a
if 4 * q ** 3 - 3 * m * q != a:
continue
den = 4 * q * q - m # bước 4: p = B / (4q^2 - m), tự động nguyên
if den == 0 or B % den != 0:
continue
p = B // den
# kiểm tra lại bằng số nguyên cho chắc: (q + p*sqrt d)^3 == a + B*sqrt d
if q ** 3 + 3 * d * p * p * q == a and 3 * q * q * p + d * p ** 3 == B:
return q, p, d
return None
if __name__ == "__main__":
tests = [(7, 5, 2), (26, 15, 3), (207, 94, 5), (20, 7, 8),
(10, 1, 108), (10621, 4338, 6),
(2, 1, 2), (1, 1, 2), (5, 2, 3), (44, 18, 12)]
for a, b, c in tests:
res = denest_cbrt(a, b, c)
lhs = f"cbrt({a} + {b}·sqrt{c})"
if res is None:
print(f"{lhs:28} = không khử được")
else:
q, p, d = res
print(f"{lhs:28} = {q} + {p}·sqrt{d}")
Kết quả chạy:
cbrt(7 + 5·sqrt2) = 1 + 1·sqrt2
cbrt(26 + 15·sqrt3) = 2 + 1·sqrt3
cbrt(207 + 94·sqrt5) = 3 + 2·sqrt5
cbrt(20 + 7·sqrt8) = 2 + 1·sqrt2
cbrt(10 + 1·sqrt108) = 1 + 1·sqrt3
cbrt(10621 + 4338·sqrt6) = 13 + 6·sqrt6
cbrt(2 + 1·sqrt2) = không khử được
cbrt(1 + 1·sqrt2) = không khử được
cbrt(5 + 2·sqrt3) = không khử được
cbrt(44 + 18·sqrt12) = không khử được
Muốn bỏ hẳn hàm divisors (tốn $O(\sqrt{|a|})$) thì thay vòng lặp bằng ứng viên duy nhất ở mục 9: $q=\operatorname{round}\big((\sqrt[3]{a+B\sqrt d}+\sqrt[3]{a-B\sqrt d})/2\big)$, rồi vẫn kiểm tra lại bằng số nguyên như trên. Với số cực lớn thì dùng decimal hoặc Newton trên số nguyên thay cho float.
Tóm tắt một khung
- Rút $c=k^2d$ ($d$ squarefree), $B=bk$ — bước này là lý do định lý dùng được cho $c$ tùy ý.
- $N=a^2-cb^2$ phải là lập phương đúng, đặt $m=\sqrt[3]N$ (có thể âm).
- $4q^3-3mq=a$ phải có nghiệm nguyên $q$ — thử các ước của $a$, hoặc lấy trực tiếp $q=\operatorname{round}\big(\tfrac12(t+s)\big)$. Nghiệm thực là duy nhất vì $a^2-m^3=dB^2>0$.
- $p=\dfrac{bk}{4q^2-m}$ tự động nguyên, và $\sqrt[3]{a+b\sqrt c}=q+p\sqrt d$.
Đọc thêm: Nested radical (denesting) · Casus irreducibilis · Vành $\mathbb Z[\sqrt d]$ và chuẩn