다항식 방정식의 값을 계산해야 할 때, 간단한 반복문과 '*'(곱셈) 연산자만으로도 손쉽게 구현할 수 있습니다. 리스트에 저장된 계수들을 차수에 맞게 곱하고 더하는 방식으로 다항식을 평가하는 기본적인 방법을 알아보겠습니다.
예제 코드
아래는 다항식을 계산하는 파이썬 프로그램의 예시입니다.
my_list = [3, -6, 3, -1, 23, -11, 0, -8]
print("The list is :")
print(my_list)
x = 3
my_list_length = len(my_list)
my_result = 0
for i in range(my_list_length):
my_sum = my_list[i]
for j in range(my_list_length - i - 1):
my_sum = my_sum * x
my_result = my_result + my_sum
print("The result is :")
print(my_result)실행 결과
The list is : [3, -6, 3, -1, 23, -11, 0, -8] The result is : 3349
코드 설명
다항식의 계수를 담은 리스트를 정의하고 콘솔에 출력합니다.
다항식에 대입할 x 값으로 정수 3을 변수에 할당합니다.
len() 함수로 리스트의 길이를 구해 변수에 저장합니다.
최종 결과를 누적할 변수를 0으로 초기화합니다.
외부 반복문으로 리스트를 순회하며 각 계수를 가져옵니다.
내부 반복문에서 해당 항의 차수만큼 x를 곱해 거듭제곱을 계산합니다.
계산된 각 항의 값을 초기화된 결과 변수에 더해 나갑니다.
모든 항의 계산이 끝나면 최종 결과값을 콘솔에 출력합니다.
참고: 호너(Horner) 방법으로 더 효율적으로 계산하기
위 방식은 이중 반복문을 사용하기 때문에 시간 복잡도가 O(n²)입니다. 계수의 개수가 많아지면 비효율적일 수 있으며, 이 경우 호너 방법(Horner's Method)을 사용하면 O(n)의 시간 복잡도로 다항식을 계산할 수 있습니다.
my_list = [3, -6, 3, -1, 23, -11, 0, -8]
x = 3
my_result = 0
for coef in my_list:
my_result = my_result * x + coef
print("The result is :", my_result) # 3349호너 방법은 다항식을 인수분해된 형태로 재구성하여 곱셈 횟수를 크게 줄여주므로, 실무에서는 이 방식을 사용하는 것이 좋습니다.