다음은 이차방정식 x^2 - x - 1 = 0 의 양의 근 즉 황금비율(golden ratio)을 구하는 Boo 애플리케이션 소스이다. 황금비율을 구하는 비례방정식은 1 : x = x : (x+1) 이며, 이를 이차방정식으로 표현한 것이 x^2 - x - 1 = 0 이다.
See: http://en.wikipedia.org/wiki/Golden_ratio
- # Filename: testGoldenRatio.boo
- # 황금률(즉, 이차방정식 x^2 - x - 1 = 0 의 양의 근)을 계산한다.
- #
- # Execute: booi testGoldenRatio.boo
- #
- # Date: 2009/04/01
- # Author: PH Kim [ pkim (AT) scripts.pe.kr ]
- import System
- def printUsing():
- print("Using: booi testGoldenRatio.boo [-h|-help]")
- print("This calculates the value of the golden ratio.")
- # 이차방정식 a x^2 + b x + c = 0 의 근을 구한다.
- def findQuadraticRoot(a as double, b as double, c as double) as List:
- if a == 0.0:
- raise Exception("Since the highest coefficient is zero, the given equation is not a quadratic equation.")
- elif b*b - 4*a*c < 0.0:
- raise Exception("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(argv) > 0 and (argv[0] == "-h" or argv[0] == "-help"):
- printUsing()
- Environment.Exit(1)
- values = findQuadraticRoot(1.0, -1.0, -1.0)
- x1 as double = values[0]
- x2 as double = values[1]
- if x1 >= x2:
- print("The bigger root is " + x1 + ", ")
- print("and the less root is " + x2 + ".")
- else:
- print("The bigger root is " + x2 + ", ")
- print("and the less root is " + x1 + ".")
실행> booi testGoldenRatio.boo
The bigger root is 1.61803398875,
and the less root is -0.61803398875.
'프로그래밍 > Boo' 카테고리의 다른 글
진법(radix) 표 만들기 예제 with Boo (0) | 2009.04.03 |
---|---|
대화형 모드의 진법(radix) 변환 예제 with Boo (0) | 2009.04.03 |
현재 시각 알아내기 for Boo (0) | 2009.04.01 |
손으로 만드는 나눗셈 계산표 with Boo (0) | 2009.04.01 |
조립제법(Horner의 방법) 예제 for Boo (0) | 2009.04.01 |