다음은 이차방정식 x^2 - x - 1 = 0 의 양의 근 즉 황금비율(golden ratio)을 구하는 Python 애플리케이션 소스이다. 황금비율을 구하는 비례방정식은 1 : x = x : (x+1) 이며, 이를 이차방정식으로 표현한 것이 x^2 - x - 1 = 0 이다.
See: http://en.wikipedia.org/wiki/Golden_ratio
- # -*- encoding: ms949 -*-
- # Filename: testGoldenRatio.py
- # 황금률(즉, 이차방정식 x^2 - x - 1 = 0 의 양의 근)을 계산한다.
- #
- # Execute: python testGoldenRatio.py
- #
- # Date: 2008/03/24
- # Author: PH Kim [ pkim (AT) scripts.pe.kr ]
- import sys
- import math
- def printUsing():
- print("Using: python testGoldenRatio.py [-h|-help]")
- print("This calculates the value of the golden ratio.")
- # 이차방정식 a x^2 + b x + c = 0 의 근을 구한다.
- def findQuadraticRoot(a, b, c):
- if a == 0.0:
- raise RuntimeError("Since the highest coefficient is zero, the given equation is not a quadratic equation.")
- elif b*b - 4*a*c < 0.0:
- raise RuntimeError("Since the discriminant " + (b*b - 4*a*c) + " is negative, the given equation has no real root.")
- x1 = (-b + math.sqrt(b*b - 4*a*c)) / (2.0 * a)
- x2 = (-b - math.sqrt(b*b - 4*a*c)) / (2.0 * a)
- return [x1, x2]
- # 실행 시작 지점
- if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-help"):
- printUsing()
- sys.exit(1)
- values = findQuadraticRoot(1.0, -1.0, -1.0)
- x1 = values[0]
- x2 = values[1]
- if x1 >= x2:
- print("The bigger root is " + str(x1) + ", ")
- print("and the less root is " + str(x2) + ".")
- else:
- print("The bigger root is " + str(x2) + ", ")
- print("and the less root is " + str(x1) + ".")
실행> python testGoldenRatio.py
The bigger root is 1.61803398875,
and the less root is -0.61803398875.
실행> jython testGoldenRatio.py
The bigger root is 1.618033988749895,
and the less root is -0.6180339887498949.
위의 소스 코드에서 인코딩 선언 부분만
# -*- encoding: cp949 -*-
로 고치면, IronPython에서도 실행된다.
실행> ipy testGoldenRatio.py
The bigger root is 1.61803398875,
and the less root is -0.61803398875.
만일 Jython 2.5.0 이상이면
LookupError: unknown encoding 'ms949'
또는
SyntaxError: Unknown encoding: ms949
와 같은 에러를 만날 수 있다. 이럴 때는
# -*- encoding: iso-8859-1 -*-
또는
# coding: iso-8859-1
로 해야할 것이다. (이는 Jython 2.5.x 의 버그인 것으로 보인다.)
저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Python' 카테고리의 다른 글
진법(radix) 표 만들기 예제 with Python (or Jython or IronPython) (0) | 2008.03.29 |
---|---|
대화형 모드의 진법(radix) 변환 예제 with Python (0) | 2008.03.28 |
현재 시각 알아내기 for Python, Jython, and IronPython (0) | 2008.03.24 |
조립제법(Horner의 방법) 예제 for Python (0) | 2008.03.14 |
80컬럼 컨솔에 19단표 출력하기 예제 for Python (0) | 2008.03.03 |