희소 항 목록은 차수와 계수를 명시적으로 보존합니다. 범용 add와 multiply 메서드는 같은 차수를 합치고 0 계수를 제거하며 다항식 변수를 유지하고 맞지 않는 변수는 거부합니다.
생각해 볼 질문
범용 산술 시스템은 항 목록의 세부 표현을 클라이언트 코드에 퍼뜨리지 않고 다항식 구조를 어떻게 다룰까요?
희소 다항식을 변수와 내림차순 항으로 표현하기
두 항 목록을 더하며 같은 차수 합치기
곱셈 중 한 항을 다른 다항식 전체에 분배하기
표현 경계에서 0 계수 항 제거하기
타입 태그 메서드로 다항식 덧셈과 곱셈 디스패치하기
변수가 다른 다항식의 연산 거부하기
첫 프로그램은 각 항을 차수와 계수로 표현하고 높은 차수부터 낮은 차수 순서로 저장합니다. add-terms는 앞에서 정렬 집합에 사용한 것과 같은 병합을 수행합니다. 더 큰 차수는 그대로 옮기고 같은 차수는 계수를 합치며 adjoin-term은 결과가 0인 항을 생략합니다. 다항식 패키지가 이 표현을 소유하고 태그가 붙은 add 메서드 하나를 노출하므로 x² + 2x + 1과 x² − 1의 합은 명시적인 0 상수항 없이 2x² + 2x가 됩니다. y 다항식은 서로 다른 미지수를 조용히 섞지 않고 different-variables를 반환합니다.
두 번째 프로그램은 한 항을 다른 다항식의 모든 항에 곱하고, 차수는 더하고 계수는 곱한 뒤, 부분 곱을 add-terms로 병합합니다. (x + 1)(x − 1)에서는 가운데 두 항이 상쇄되어 x² − 1만 남습니다. 별도 평가기는 패키지 선택자를 사용해 x = 3에서 8을 보고합니다. 이 수업은 태그 기반 덧셈과 곱셈과 정규화와 평가로 희소 단일 변수 정수 계수 다항식을 다룹니다.