지수와 로그

JH·2024년 3월 7일

기초 수학

목록 보기
6/7

1. 지수(Exponents)란?

지수는 수를 다른 수로 몇 번 곱하는지 나타내는 표기법입니다. 일반적으로 aba^b와 같이 표기되며, 여기서 a는 밑(base)이고 b는 지수(exponent)입니다.

예를 들어, 232^3은 2를 3번 곱한 것을 의미합니다. 따라서 23=2 X 2 X 2=82^3 = 2\ X\ 2\ X\ 2 = 8이 됩니다.

제곱근

  • a를 제곱하여 b가 될 때 a를 b의 제곱근이라고 함

4 = 22 = 2\sqrt{4}\ =\ \sqrt{2^2}\ =\ 2

2. 로그(Logarithms)란?

로그는 지수의 역함수입니다. 즉, 어떤 수를 특정 밑(base)으로 몇 번 곱해야 다른 수가 되는지를 나타냅니다.

일반적으로 로그는 다음과 같이 표기됩니다: logb alog_b\ a, 여기서 b는 밑(base)이고 a는 로그를 적용할 값입니다.

예를 들어, log2 8log_2\ 8은 2를 몇 번 곱해야 8이 되는지를 묻는 것입니다. 따라서 log2 8log_2\ 8 = 3이 됩니다.

log2 4 = 2log_2\ 4\ =\ 2
log10 1000 = 3log_{10}\ 1000\ =\ 3
loge 2.7182818284590452353602874713527 = 1log_e\ 2.7182818284590452353602874713527\ =\ 1

3. 지수와 로그의 관계

지수와 로그는 서로 역관계에 있습니다. 즉, 지수와 로그를 사용하여 서로를 취소할 수 있습니다.

예를 들어, blogb a=ab^{log_b\ a} = a입니다. 이는 밑이 b인 로그를 취한 후 그 결과에 다시 밑이 b인 지수를 취하면 처음의 값 a가 나오게 됩니다.

4. 자바 코드 예시

public class Main {

    public static void main(String[] args) {

//      1. 제곱, 제곱근, 지수
        System.out.println("== 제곱 ==");
        System.out.println(Math.pow(2, 3));
        System.out.println(Math.pow(2, -3));
        System.out.println(Math.pow(-2, -3));

        System.out.println(Math.pow(2, 30));
        System.out.printf("%.0f\n", Math.pow(2, 30));

        System.out.println("== 제곱근 ==");
        System.out.println(Math.sqrt(16));
        System.out.println(Math.pow(16, 1.0 / 2));
        System.out.println(Math.pow(16, 1.0 / 4));

//      참고) 절대 값
        System.out.println("== 절대 값 ==");
        System.out.println(Math.abs(5));
        System.out.println(Math.abs(-5));

//      2. 로그
        System.out.println("== 로그 ==");
        System.out.println(Math.E);
        System.out.println(Math.log(2.718281828459045));
        System.out.println(Math.log10(1000));
        System.out.println(Math.log(4) / Math.log(2));

    }
}
// 제곱과 제곱근을 Math 없이 구현하기

public class Practice {

    static double pow(int a, double b) {
        double result = 1;
        boolean isMinus = false;

        if (b == 0) {
            return 1;
        } else if (b < 0) {
            b *= -1;
            isMinus = true;
        }

        for (int i = 0; i < b; i++) {
            result *= a;
        }

        return isMinus ? 1 / result : result;
    }

    static double sqrt(int a) {
        double result = 1;

        for (int i = 0; i < 10; i++) {
            result = (result + (a / result)) / 2;
        }

        return result;
    }

    public static void main(String[] args) {
        System.out.println("== Math pow ==");
        System.out.println(Math.pow(2, 3));
        System.out.println(Math.pow(2, -3));
        System.out.println(Math.pow(-2, -3));

        System.out.println("== My pow ==");
        System.out.println(pow(2, 3));
        System.out.println(pow(2, -3));
        System.out.println(pow(-2, -3));

        System.out.println("== Math sqrt ==");
        System.out.println(Math.sqrt(16));
        System.out.println(Math.sqrt(8));

        System.out.println("== My sqrt ==");
        System.out.println(sqrt(16));
        System.out.println(sqrt(8));

    }
}
profile
발전하는 백엔드 개발자

0개의 댓글