다음은 이차방정식
See: Golden ratio - Sajun.org
* Go 프로그램 소스는 (한글이 주석에만 포함되어 있더러도) UTF-8 인코딩으로 저장해야 한다.
- /*
- * Filename: testGoldenRatio.go
- * 황금률(즉, 이차방정식 x^2 - x - 1 = 0 의 양의 근)을 계산한다.
- *
- * Execute: go run testGoldenRatio.go
- *
- * or
- *
- * Compile: go build testGoldenRatio.go
- * Execute: ./testGoldenRatio
- *
- * Date: 2012/06/20
- * Author: PH Kim [ pkim (AT) scripts.pe.kr ]
- */
- package main
- import (
- "fmt"
- "os"
- "math"
- )
- type PAIR struct {
- x1 float64
- x2 float64
- }
- func printUsing() {
- fmt.Printf("Using: testGoldenRatio [-h|-help]\n")
- fmt.Printf("This calculates the value of the golden ratio.\n")
- }
- // 이차방정식 a x^2 + b x + c = 0 의 근을 구한다.
- func findQuadraticRoot(a float64, b float64, c float64) (zeros PAIR) {
- if a == 0.0 {
- fmt.Printf("Since the highest coefficient is zero, the given equation is not a quadratic equation.\n")
- return
- } else if b*b - 4*a*c < 0.0 {
- fmt.Printf("Since the discriminant %f is negative, the given equation has no real root.\b", b*b - 4*a*c)
- return
- }
- zeros.x1 = (-b + math.Sqrt(b*b - 4*a*c)) / (2.0 * a)
- zeros.x2 = (-b - math.Sqrt(b*b - 4*a*c)) / (2.0 * a)
- return
- }
- func main() {
- var x1, x2 float64
- if len(os.Args) > 1 && (os.Args[1] == "-h" || os.Args[1] == "-help") {
- printUsing()
- return
- }
- var values = findQuadraticRoot(1.0, -1.0, -1.0)
- x1 = values.x1
- x2 = values.x2
- if x1 >= x2 {
- fmt.Printf("The bigger root is %f, \n", x1);
- fmt.Printf("and the less root is %f.\n", x2);
- } else {
- fmt.Printf("The bigger root is %f, \n", x2);
- fmt.Printf("and the less root is %f.\n", x1);
- }
- }
컴파일> go build testGoldenRatio.go
실행> ./testGoldenRatio
The bigger root is 1.618034,
and the less root is -0.618034.
go run 명령을 이용하면 소스 코드를 직접 실행시킬 수 있다.
실행> go run testGoldenRatio.go
The bigger root is 1.618034,
and the less root is -0.618034.
'프로그래밍 > Go' 카테고리의 다른 글
진법(radix) 표 만들기 예제 with Go (0) | 2012.06.25 |
---|---|
대화형 모드의 진법(radix) 변환 예제 with Go (0) | 2012.06.22 |
Go 프로그램 언어로 긴 자리 정수 계산하기 (0) | 2012.06.18 |
현재 시각 알아내기 with Go (0) | 2012.06.17 |
조립제법(Horner의 방법) 예제 with Go (0) | 2012.06.16 |