ย่อยสลายพหุนาม


12

ได้รับพหุนามสมบูรณ์ของระดับที่มากกว่าหนึ่งอย่างสมบูรณ์สลายมันให้เป็นองค์ประกอบของพหุนามสมบูรณ์ของดีกรีมากกว่าหนึ่งอย่างสมบูรณ์

รายละเอียด

  • พหุนามหนึ่งคือพหุนามกับจำนวนเต็มเป็นเพียงค่าสัมประสิทธิ์
  • ได้รับสองพหุนามpและองค์ประกอบจะถูกกำหนดโดยq(p∘q)(x):=p(q(x))
  • การสลายตัวของพหุนามสมบูรณ์pเป็นลำดับที่ จำกัด ของพหุนามสมบูรณ์q1,q2,...,qnที่deg qi > 1สำหรับทุกคน1 ≤ i ≤ nและp(x) = q1(q2(...qn(x)...))และทั้งหมดqiไม่แยกย่อยสลายต่อไป การสลายตัวนั้นไม่จำเป็นต้องซ้ำกัน
  • คุณสามารถใช้รายการของค่าสัมประสิทธิ์หรือสร้างขึ้นในประเภทพหุนามเป็นอินพุตและเอาต์พุต
  • โปรดทราบว่าบิวด์อินจำนวนมากสำหรับงานนี้จะสลายการแยกส่วนแบบพหุนามมากกว่าฟิลด์ที่กำหนดและไม่จำเป็นต้องเป็นจำนวนเต็มในขณะที่ความท้าทายนี้ต้องใช้พหุนามจำนวนเต็มแบบสลายตัว (พหุนามจำนวนเต็มจำนวนหนึ่งอาจยอมรับการสลายตัวเป็นชื่อพหุนามจำนวนเต็มรวมทั้งการสลายตัวที่มีชื่อพหุนาม rational)

ตัวอย่าง

x^2 + 1
[x^2 + 1] (all polynomials of degree 2 or less are not decomposable)
x^6 - 6x^5 + 15x^4 - 20x^3 + 15x^2 - 6 x - 1
[x^3 - 2, x^2 - 2x + 1]
x^4 - 8x^3 + 18x^2 - 8x + 2 
[x^2 + 1, x^2 - 4x + 1]
x^6 + x^2 + 1
[x^3 + x + 1, x^2]
x^6
[x^2, x^3]
x^8 + 4x^6 + 6x^4 + 4x^2 + 4 = (x^2 + 1)^4 + 3
[x^2 + 3, x^2, x^2 + 1]
x^6 + 6x^4 + x^3 + 9x^2 + 3x - 5
[x^2 + x - 5, x^3 + 3*x], [x^2 + 5*x + 1, x^3 + 3*x - 2]

ใช้ Maxima เพื่อสร้างตัวอย่าง: ลองออนไลน์!

บางขั้นตอนวิธีการสลายตัวที่สามารถพบได้ที่นี่และที่นี่

คำตอบ:


4

Pari / GP , 84 ไบต์

f(p)=[if(q'',[f(q),r],p)|r<-x*divisors(p\x),r''&&p==subst(q=substpol(p,r,x),x,r)][1]

ขึ้นอยู่กับขั้นตอนวิธีการที่อธิบายไว้ที่นี่

ลองออนไลน์!


1
คุณตรวจสอบ (หรือกรอง) ว่าคุณได้รับการสลายตัวเป็นพหุนามหนึ่งหรือไม่? (ฉันถามเพราะขั้นตอนวิธีการในกระดาษที่เชื่อมโยงอธิบายตัวประกอบมากกว่าข้อมูลบางส่วนและผมไม่ทราบว่าใด ๆ Pari / GP.)
flawr

1
@ flawr ฉันใช้อัลกอริทึมที่สองในกระดาษซึ่งมักจะส่งกลับชื่อพหุนามสมบูรณ์เมื่อใส่เป็นส่วนประกอบ อันที่จริงdivisorsฟังก์ชันใน Pari / GP จะส่งคืนพหุนามแบบดั้งเดิมเสมอเมื่อใช้พหุนามแบบสมบูรณ์ มันสามารถพิสูจน์ได้ว่าถ้าp=q∘rที่ไหนpและrเป็นส่วนประกอบและrดั้งเดิมด้วยr(0)=0แล้วก็qจะต้องเป็นส่วนประกอบ นี่p, q, rตรงกับf, g, hในกระดาษ
alephalpha

2

ภาษา Wolfram (Mathematica) , 29 ไบต์

Decompose[#/.x->x+a,x]/.a->0&

ลองออนไลน์!

ฉันมีตัวอย่างตั้งไว้ที่นี่เพื่อเขียนพหุนามแบบสุ่มจาก quadratics แบบสุ่ม (หรือน้อยกว่า) ขยายออกแล้วลองสลายมัน

จำเป็นต้องสร้างความซับซ้อนให้กับพหุนามด้วยตัวแปรดัมมี (a) เนื่องจากบิวด์อินจะไม่พยายามสลายโมโนโพล

ฉันสังเกตเห็นว่าคำตอบมักจะมีค่าสัมประสิทธิ์มากกว่าในองค์ประกอบดั้งเดิม แต่จริงๆแล้วเป็นจำนวนเต็มเสมอ


คุณพบข้อมูลที่Decompose[]จะส่งคืนพหุนามสมบูรณ์ได้อย่างไร (ถ้าเลี้ยงด้วยพหุนามจำนวนเต็ม) เมื่อพูดคุยในการแชทเมื่อเร็ว ๆ นี้เราไม่พบสิ่งใดเกี่ยวกับเรื่องนั้น
ข้อบกพร่อง

1
ทำและมันจะบอกคุณOptions@Decompose {Modulus->0}ตอนนี้ค้นหาโมดูลัสแล้วคุณจะเห็น "การตั้งค่าโมดูลัส -> 0 ระบุวงแหวนเต็ม [DoubleStruckCapitalZ] ของจำนวนเต็ม"
Kelly Lowder

อานั่นเป็นสิ่งที่ดีขอบคุณสำหรับการอธิบายอย่างละเอียด!
ข้อบกพร่อง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.