다음은  이차방정식 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


  1. #  Filename: testGoldenRatio.boo
  2. #    황금률(즉, 이차방정식 x^2 - x - 1  = 0 의 양의 근)을 계산한다.
  3. #
  4. #   Execute: booi testGoldenRatio.boo
  5. #
  6. #      Date:  2009/04/01
  7. #    Author: PH Kim   [ pkim (AT) scripts.pe.kr ]
  8. import System
  9. def printUsing():
  10.     print("Using: booi testGoldenRatio.boo [-h|-help]")
  11.     print("This calculates the value of the golden ratio.")
  12. # 이차방정식 a x^2 + b x + c  = 0 의 근을 구한다.
  13. def findQuadraticRoot(a as double, b as double, c as double) as List:
  14.     if a == 0.0:
  15.         raise Exception("Since the highest coefficient is zero, the given equation is not a quadratic equation.")
  16.     elif b*b - 4*a*c < 0.0:
  17.         raise Exception("Since the discriminant " + (b*b - 4*a*c) + " is negative, the given equation has no real root.")
  18.     x1 = (-b + Math.Sqrt(b*b - 4*a*c)) / (2.0 * a)
  19.     x2 = (-b - Math.Sqrt(b*b - 4*a*c)) / (2.0 * a)
  20.     return [x1, x2]
  21. # 실행 시작 지점
  22. if len(argv) > 0 and (argv[0] == "-h" or argv[0] == "-help"):
  23.     printUsing()
  24.     Environment.Exit(1)
  25. values = findQuadraticRoot(1.0, -1.0, -1.0)
  26. x1 as double = values[0]
  27. x2 as double = values[1]
  28. if x1 >= x2:
  29.     print("The bigger root is " + x1 + ", ")
  30.     print("and the less root is " + x2 + ".")
  31. else:
  32.     print("The bigger root is " + x2 + ", ")
  33.     print("and the less root is " + x1 + ".")



실행> booi testGoldenRatio.boo
The bigger root is 1.61803398875,
and the less root is -0.61803398875.



크리에이티브 커먼즈 라이선스
Creative Commons License

Posted by Scripter
,