다항식 분해


12

1보다 큰 차수의 다항식이 주어지면 1보다 큰 차수의 다항식으로 완전히 분해하십시오.

세부

  • 일체 다항식 계수로만 정수와 다항식이다.
  • 두 다항식을 감안 p하고 조성물 에 의해 정의된다 .q(p∘q)(x):=p(q(x))
  • 분해 일체 다항식은 p정수 다항식의 제한된 명령 시퀀스이다 모두 및 모든 추가 분해되지 않는다. 분해가 반드시 고유하지는 않습니다.q1,q2,...,qndeg qi > 11 ≤ i ≤ np(x) = q1(q2(...qn(x)...))qi
  • 계수 목록이나 내장 다항식 유형을 입력 및 출력으로 사용할 수 있습니다.
  • 이 작업을위한 많은 내장은 실제로 주어진 필드에 대해 다항식을 분해 하지만 반드시 정수일 필요는 없지만이 과제에는 분해 정수 다항식이 필요합니다. (일부 정수 다항식은 정수 다항식으로의 분해와 합리적인 다항식을 포함하는 분해를 허용 할 수 있습니다.)

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 나는 논문에서 두 번째 알고리즘을 사용하고 있는데, 입력이 적분 일 때 항상 적분 다항식을 반환합니다. 실제로 divisorsPari / GP 의 함수 는 적분 다항식이 필요할 때 항상 기본 다항식을 반환합니다 . 이 경우 입증 할 수있는 p=q∘r곳, p그리고 r통합, 그리고 r원시적이며 r(0)=0, 다음 q도 통합해야합니다. 여기에 p, q, r에 해당하는 f, g, h신문에.
alephalpha

2

Wolfram Language (Mathematica) , 29 바이트

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

온라인으로 사용해보십시오!

임의 이차 (또는 그 이하)에서 임의 다항식을 작성하고 확장 한 다음 분해하려고 예제를 설정했습니다.

내장 변수가 다항식을 분해하려고 시도하지 않으므로 다항식과 더미 변수 (a)를 복잡하게해야합니다.

나는 대답이 원래 구성보다 훨씬 더 큰 계수를 가지고 있지만 실제로는 항상 정수라는 것을 알았습니다.


Decompose[]항상 정수 다항식 (정수 다항식이 제공되는 경우)을 반환 하는 정보를 어디서 찾 습니까? 최근 채팅에서 논의 할 때 우리는 그것에 대해 아무것도 찾을 수 없었습니다.
flawr

1
수행 Options@Decompose하고 그것은 당신을 말할 것이다 {Modulus->0}. 이제 모듈러스를 찾아 보면 "모듈러스-> 0 설정은 정수의 전체 링 [DoubleStruckCapitalZ]을 지정합니다."
Kelly Lowder

아, 훌륭합니다. 정교 해 주셔서 감사합니다!
flawr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.