컴퓨터공학/수치해석

[수치해석] Ch3_2. Approximations and Round-Off Errors

NIMHO 2022. 10. 4. 20:00
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

Floating-Point Representation

  • 분수량은 일반적으로 부동소수점을 사용하여 컴퓨터에서 표현된다.
  • 숫자는 mantissa 또는 significant라고 불리는 분수 부분과 지수 또는 특성이라고 불리는 정수 부분으로 표현된다.
  • m * b^e에서처럼, m = 맨티사, b = 사용 중인 숫자 시스템의 base, e = 지수.
  • 예를 들어, 156.78이라는 숫자는 부동소수점 베이스-10 시스템에서 0.15678 * 10^3으로 나타낼 수 있다.

  • 무리수는 정확하게 나타낼 수 없다. 
  • 집합의 값 중 하나와 정확히 일치하지 않는 유리수 또한 정확하게 표현될 수 없다. 
  • 이 두 가지 경우를 근사화하여 도입된 오류를 양자화 오류라고 합니다.
  • 실제 근사치는 다음 두 가지 방법 중 하나로 달성된다. 
    • Chopping
    • Rounding
728x90
  • Rounding 하면 Chopping보다 낮은 절대 오차가 발생한다.
  • 또한 일부 오류는 긍정적이고 일부 오류는 부정적이기 때문에 편향성이 도입되지 않는다.
  • 일부 컴퓨터에서는 반올림을 사용한다.
  • 그러나 이는 계산 오버헤드를 증가시키며, 결과적으로 많은 기계들이 간단한 Chopping을 사용한다. 
  • significant한 숫자의 수가 충분히 커서 결과적으로 발생하는 round-off error는 일반적으로 무시할 수 있다는 가정 하에서 정당화된다.
  • 실수의 덧셈
    • 지수부는 큰 것으로 맞추기 때문에, 작은 부분은 잘려나간다.
  • 실수의 뺄셈
    • 유효숫자가 정해져 있기에, 오차가 생긴다.
    • 0.7642 * 10^3 - 0.7641 * 10^3 = 0.0001 * 10^3 = 0.1000 * 10^0
    • 0.1000에서 유효숫자는 4자리이지만, 3자리는 알 수 없게 된다.
    • 너무 가까운 수의 뺄셈
  • 많은 연산의 반복
    • 실수를 많이 더하다 보면 오차가 생겨서 제 값을 알 수 없게 된다.
  • 큰 실수와 아주 작은 실수의 덧셈
    • 0.0010 + 4000 = 0.4000 * 10^4 + 0.0000001 * 10^4 = 0.4000001 * 10^4 = 0.4000 * 10^4
    • 유효숫자가 4자리라서, 뒤에 001은 사라지게 되었다. (오차 발생)
728x90