코딩 연습

(파이썬) 함수식을 이용한 이차함수의 그래프 그리기 본문

Python

(파이썬) 함수식을 이용한 이차함수의 그래프 그리기

코딩아저씨 2016. 3. 15. 16:21
반응형

 

 

꺽은선 그래프 그리기 를 공부하였다면 이제는 함수식을 이용하여 그래프 그리기에 도전해 볼 차례다. 여기서는 이차함수 \(y=ax^2+bx+c\) 의 그래프 그리기를 예제로 함수의 그래프를 어떻게 그리는지 알아보겠다. 이를 위하여 사용자로부터 계수 \(a, \;b,\;c\) 와 그래프를 그릴 \(x\) 의 범위 \(x{\rm min},\; x{\rm max}\) 를 입력받아 이차함수의 그래프를 완성해 볼 것이다. 다음은 이를 위한 파이썬 코드이다. 다음 코드를 quadraticgraph.py 로 저장한 후, 터미널에서 python quadraticgraph.py 를 해 보면 그래프가 보이 것이다.

from matplotlib import pyplot as mplp                                             
                                                                                 
                                                                                  
def draw_graph(x, y):                                                            
     mplp.plot(x, y)                                                               
     mplp.xlabel('x-coordinate')                                                   
     mplp.ylabel('y-coordinate')                                                   
     mplp.title('Quadratic Funcion Graph')                                         
                                                                                  
                                                                                  
 def xrange(start, final, interval):                                              
     numbers = []                                                                 
     while start < final:                                                         
         numbers.append(start)                                                    
         start += interval                                                        
     return numbers                                                               
                                                                                  
                                                                                  
 def make_x_y(a, b, c, xmin, xmax):                                             
     x = xrange(xmin, xmax, 0.001)                                                
     y = []                                                                       
     for t in x:                                                                  
         y.append(a * t ** 2 + b * t + c)                                         
     draw_graph(x, y)                                                             
                                                                                  
                                                                                  
 if __name__ == "__main__":                                                       
     try:                                                                         
         a = float(input('Enter the coefficient of x^2: '))                       
         b = float(input('Enter the coefficient of x: '))                         
         c = float(input('Enter the constant: '))                                 
         xmin = float(input('Enter the minimum of x-range: '))                    
         xmax = float(input('Enter the maximum of x-range: '))                    
     except ValueError:                                                           
         print('You entered an invalid input')                                    
     else:                                                                        
         make_x_y(a, b, c, xmin, xmax)                                          
         mplp.show()

코드를 보면 알겠지만, 먼저 xmin 과 xmax 를 이용하여 \(x\) 값들을 리스트로 만든 후, 그 \(x\) 에 해당하는 함숫값 \(y\)의 리스트를 만들어 그래프를 그리게 된다. 

먼저 사용자로부터 \(a, \;b, \;c, \; x{\rm min},\; x{\rm max}\) 를 입력받게 되면, \({\rm make} \_ x \_y\) 함수가 호출된다. 

이 함수에서는 제일 먼저 \(x{\rm range}\) 를 이용하여 \(x\)값들의 리스트를 생성하게 된다. 이때, \(x\) 값들의 간격은 \(0.001\) 로 하였다. 이 간격이 좁아질수록 더 정밀한 그래프를 얻게 될 것이다.

이후에 \(x\) 리스트를 이용하여 함숫값에 해당하는 \(y\)리스트를 생성하게 되고, \(\rm draw \_ graph\) 함수를 호출하여 그래프를 생성하게 된다.

그리고 마지막으로 \(\rm mplp.show()\) 에 의해 그래프를 보여주게 된다. 

 

실제로 \(a=1, \; b=2,\; c=-3,\; x{\rm min}=-10,\; x{\rm max}=10\) 을 입력하여 그래프를 그려보면 다음과 같다. 

Enter the coefficient of x^2: 1
Enter the coefficient of x: 2
Enter the constant: -3
Enter the minimum of x-range: -10
Enter the maximum of x-range: 10

 

 

반응형


Comments