다음은  이차방정식 x^2 - x - 1  = 0 의 양의 근 즉 황금비율(golden ratio)을 구하는 Ruby 애플리케이션 소스이다. 황금비율을 구하는 비례방정식은   1 : x = x : (x+1) 이며, 이를 이차방정식으로 표현한 것이 x^2 - x - 1  = 0 이다.

See:  http://en.wikipedia.org/wiki/Golden_ratio


  1. #  Filename: testGoldenRatio.rb
  2. #    황금률(즉, 이차방정식 x^2 - x - 1  = 0 의 양의 근)을 계산한다.
  3. #
  4. #   Execute: ruby testGoldenRatio.rb
  5. #
  6. #      Date:  2008/03/24
  7. #    Author:  PH Kim   [ pkim (AT) scripts.pe.kr ]
  8. def printUsing()
  9.     print("Using: ruby testGoldenRatio.rb [-h|-help]\n")
  10.     print("This calculates the value of the golden ratio.\n")
  11. end
  12. # 이차방정식 a x^2 + b x + c  = 0 의 근을 구한다.
  13. def findQuadraticRoot(a, b, c)
  14.     if a == 0.0
  15.         raise "Since the highest coefficient is zero, the given equation is not a quadratic equation."
  16.     elsif b*b - 4*a*c < 0.0
  17.         raise "Since the discriminant " + (b*b - 4*a*c).to_s + " is negative, the given equation has no real root."
  18.     end
  19.     x1 = (-b + Math.sqrt(b*b - 4*a*c)) / (2.0 * a)
  20.     x2 = (-b - Math.sqrt(b*b - 4*a*c)) / (2.0 * a)
  21.     return [x1, x2]
  22. end
  23. # 실행 시작 지점
  24. if ARGV.length > 0 && (ARGV[0] == "-h" || ARGV[0] == "-help")
  25.     printUsing()
  26.     exit(1)
  27. end
  28. values = findQuadraticRoot(1.0, -1.0, -1.0)
  29. x1 = values[0]
  30. x2 = values[1]
  31. if x1 >= x2 then
  32.     print("The bigger root is #{x1}, \n")
  33.     print("and the less root is #{x2}.\n")
  34. else
  35.     print("The bigger root is #{x2}, \n")
  36.     print("and the less root is #{x1}.\n")
  37. end



실행> ruby testGoldenRatio.rb
The bigger root is 1.61803398874989,
and the less root is -0.618033988749895.


실행> jruby testGoldenRatio.rb
The bigger root is 1.618033988749895,
and the less root is -0.6180339887498949.




Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Posted by Scripter
,