선수로 산다, 때론 좋은 코치로
[golang] A Tour of Go - 48 연습 문제 본문
[golang] A Tour of Go - 48 연습 문제
https://go-tour-kr.appspot.com/#48
complex64
타입과complex128
타입을 통해서 Go 언어의 복소수 지원 기능을 알아봅니다. 세제곱근을 얻기 위해서는, 뉴턴의 방법 (Newton's method)을 적용하여 다음을 반복 수행합니다:z = z - (z * z * z - x) / (3 * z * z)
알고리즘이 잘 동작하는지 확인하기 위해 2의 세제곱근을 구해봅시다.
math/cmplx
패키지에는 Pow 함수가 있습니다.
뉴턴의 방법은 반복이 필요하므로 for 문 활용해서 10번 반복실행합니다.
for i:=0; i<10; i++ {
z = z - (z * z * z -x) / (3 * z * z)
fmt.Println(z)
}
math/cmplx 패키지에서 제공하는 Pow 함수를 이용하여 검산합니다. z를 3제곱해서 원래 값인 2가 나오는지 확인합니다.
fmt.Println(cmplx.Pow(z, 3))
간단하게 완성된 소스입니다.
실행하면, 5번만에 근사값을 구합니다. 근사값을 세제곱하면 2+0i 즉, 2가 되는 걸 알 수 있습니다.
(1.3333333333333333+0i)
(1.2638888888888888+0i)
(1.259933493449977+0i)
(1.2599210500177698+0i)
(1.2599210498948732+0i)
(1.2599210498948732+0i)
...
(2+0i)
(1.2599210498948732+0i)
뉴턴의 제곱근, 세제곱근 구하는 공식이 궁금합니다.
'개발 관련 > go' 카테고리의 다른 글
[golang] A Tour of Go - 58 연습 문제 (0) | 2018.02.12 |
---|---|
[golang] A Tour of Go - 56 연습 문제 (0) | 2018.02.12 |
[golang] A Tour of Go - 44 연습 문제 (0) | 2018.02.01 |
[golang] A Tour of Go - 41 연습 문제 (0) | 2018.02.01 |
[golang] A Tour of Go - 36 연습 문제 (0) | 2018.02.01 |