- JAVA sqrt 함수 직접 구현하기2023년 10월 30일
- 주사위 clice
- 작성자
- 2023.10.30.:03
반응형🎲 abs 절댓값 메소드 구현
참고로 abs 절댓값 메소드 또한 직접 구현하였다
이건 그냥 양수면 그대로 출력하고 음수면 -만 붙여 출력하면 되는 간단한 메소드이다
//절댓값 구하는 메소드 public static double abs(double x) { if (x >= 0) return x; else return -x; }
🎲 뉴턴 랩슨법
참제곱근을 구하는 방법에는 대표적으로
1. 바빌로니아 알고리즘
2. 뉴턴-랩슨법
이 있다
이번 게시글에서는 뉴턴 랩슨법으로 제곱근을 구해보겠다
뉴턴 랩슨법에 대해 간단한 설명을 해보자면
미분 가능한 함수 f(x) 에 대해 f(x)=0의 해를 구하는 방법이다
점화식
가 있을때 특정 조건에서는
이 존재하고 이 극한값 xn이 방정식의 해가 된다
🎲 뉴턴랩슨법을 이용한 sqrt 메소드 구현
public static double sqrt(double x) { if (x < 0) { System.out.println("입력값은 음수가 될 수 없습니다"); } double guess = x; // 초기 추측값 (임의의 양수) double epsilon = 1e-6; // 수렴 조건 (원하는 정밀도) while (true) { double nextGuess = 0.5 * (guess + x / guess); // 뉴턴 랩슨법에 따른 다음 추측값 double abs_number = abs(nextGuess - guess); if (abs_number < epsilon) { return nextGuess; // 원하는 정밀도에 도달하면 반환 } guess = nextGuess; } }
🎲 보너스: sqrt를 재귀함수로 구현하기
for이나 while 문등 반복문을 사용하지 않고 재귀함수로 구현해보자
public static double sqrt(double x) { if (x < 0) { System.out.println("입력값은 음수가 될 수 없습니다."); return Double.NaN; // 에러 상태를 나타내는 값 (NaN) 반환 } return sqrtRecursive(x, x, 1e-6); } private static double sqrtRecursive(double x, double guess, double epsilon) { double nextGuess = 0.5 * (guess + x / guess); if (abs(nextGuess - guess) < epsilon) { return nextGuess; } return sqrtRecursive(x, nextGuess, epsilon); }
ⓒ clice lee
반응형'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA if조건문과 boolean 예제 (1) 2023.10.30 JAVA 에러: reached end of file while parsing (0) 2023.10.30 [JAVA] 문자열 <-> 정수,소수 변환 integer.parseInt(); Double.parseDouble(); (0) 2023.10.29 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)