별의 공부 블로그 🧑🏻‍💻
728x90
728x170

다항식(Polynomial) 선형 리스트 표현과 계산 프로그램

다항식(Polynomial)

$P(x) = a + bx + cx^2 + dx^3 + \cdots + zx^n$

 

  • $n$ 차 다항식
    • $P(x)$ : 다항식(Polynomial)
    • $a, b, c, d, \cdots, z$ : 계수(Coefficient)
    • $x$의 $1, 2, \cdots, n$ : 지수(Exponent)

 

코드

방법 1 

## 함수 선언 부분
def printPoly(p_x):
    term = len(p_x) - 1     # 최고차항 숫자 = 배열 길이 - 1
    polyStr = "P(x) = "

    for i in range(len(px)):
        coef = p_x[i]       # 계수

        if (coef >= 0):
            polyStr += "+"
        polyStr += str(coef) + "x^" + str(term) + " "
        term -= 1

    return polyStr

def calcPoly(xVal, p_x):
    retValue = 0
    term = len(p_x) - 1     # 최고사항 숫자 = 배열 길이 - 1

    for i in range(len(px)):
        coef = p_x[i]       # 계수
        retValue += coef * xVal ** term
        term -= 1

    return retValue

## 전역 변수 선언 부분
px = [7, -4, 0, 5]      # =7x^3 - 4x^2 + 0x^1 + 5x^0

## 메인 코드 부분 ##
if __name__ == "__main__":
    pStr = printPoly(px)
    print(pStr)

    xValue = int(input("X 값--> "))

    pxValue = calcPoly(xValue, px)
    print(pxValue)

 

더보기
P(x) = +7x^3 -4x^2 +0x^1 +5x^0 
X 값--> 2
45

 

방법 2

  • 지수가 상당히 큰 특수 다항식을 처리하기 위해 계수항의 차수리스트에 넣고 계산하는 방식
## 함수 선언 부분
def printPoly(t_x, p_x):
    polyStr = "P(x) = "

    for i in range(len(px)):
        term = t_x[i]       # 항 차수
        coef = p_x[i]       # 계수

        if (coef >= 0):
            polyStr += "+"
        polyStr += str(coef) + "x^" + str(term) + " "

    return polyStr

def calcPoly(xVal, t_x, p_x):
    retValue = 0

    for i in range(len(px)):
        term = t_x[i]       # 항 차수
        coef = p_x[i]       # 계수
        retValue += coef * xVal ** term
        term -= 1

    return retValue

## 전역 변수 선언 부분
# 7x^300 -4x^20 +5x^0
tx = [300, 20, 0]
px = [7, -4, 5]      


## 메인 코드 부분 ##
if __name__ == "__main__":
    pStr = printPoly(tx, px)
    print(pStr)

    xValue = int(input("X 값--> "))

    pxValue = calcPoly(xValue, tx, px)
    print(pxValue)

 

더보기
P(x) = +7x^300 -4x^20 +5x^0 
X 값--> 2
14259251834341402603879119818865647127360278755661553754452983145480669098343356943279587333

 

 

방법 3 

  • 2차원 배열을 활용하여 계산하는 방식
## 함수 선언 부분 ##
def printPoly(p_x):
    polyStr = "P(x) = "

    for i in range(len(p_x[0])):
        term = p_x[0][i]        # 항 차수
        coef = p_x[1][i]        # 계수
    
        if (coef >= 0):
            polyStr += "+"
        polyStr += str(coef) + "x^" + str(term) + " "
    
    return polyStr

def calcPoly(xVal, p_x):
    retValue = 0

    for i in range(len(p_x[0])):
        term = p_x[0][i]        # 항 차수
        coef = p_x[1][i]        # 계수
        retValue += coef * xVal ** term
        term -= 1
    
    return retValue

## 전역 변수 선언 부분 ##
px = [[300, 20, 0],
      [7, -4, 5]]
    
## 메인 코드 부분 ##
if __name__ == "__main__":
    pStr = printPoly(px)
    print(pStr)

    xValue = int(input("X 값--> "))

    pxValue = calcPoly(xValue, px)
    print(pxValue)

 

더보기
P(x) = +7x^300 -4x^20 +5x^0 
X 값--> 2
14259251834341402603879119818865647127360278755661553754452983145480669098343356943279587333

 

 

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖