Round-off Error
- 컴퓨터에서 숫자를 저장할때 32 혹은 64비트의 길이로 제한되어 정확하게 값을 저장하기 어려워 생기는 오차
정수
- 16비트로 정수를 표기할시 -32768 ~ 32767 사이의 숫자만 표현할수 있다.
실수
![](https://velog.velcdn.com/images/ilov1112/post/05ad3f66-91d6-4645-8ed5-8ddc8a1cae3c/image.png)
- 부호, 지수, 소수값 으로 구성된다.
- 소수를 정규화 한 뒤 위 값들로 저장한다.
실수의 오차
![](https://velog.velcdn.com/images/ilov1112/post/702c9483-5249-4ff2-b443-3b920b9b36ce/image.png)
ϵ
- epsilon 으로 부른다.
- 1과 그 다음에 나올 수 있는 값의 차이를 이야기 한다.
- 1보다 일정수준 더 큰 숫자에 대해선 그 다음에 나올수 있는 값이 epsilon 의 2배가 된다.
- 계속 이 기조가 이어짐.
![](https://velog.velcdn.com/images/ilov1112/post/ad6ee684-ec5f-4780-ad7b-36d239d71814/image.png)
- epsilon을 구하는 방식, b는 진법이고 t는 mantissa에서의 유효숫자이다.
mantissa
- ieee754에서 소수부분을 표기하는 부분
![](https://velog.velcdn.com/images/ilov1112/post/320716f7-4718-451b-bfe4-744ace6d7006/image.png)
- 첫번째 자리수는 반드시 1이 되어야 한다.
- b : 진법
예시
- 4 다음에 나올수 있는 값의 차이는 1 다음에 나올수 있는 값의 차이의 두배가 된다.
오버플로우
언더플로우
실수의 덧셈
![](https://velog.velcdn.com/images/ilov1112/post/37fde74b-3821-4f54-9037-9005859251b7/image.png)
- 유효숫자가 4자리이기 떕문에 0.1600으로 잘린다.
- 이 외에도 여러번 연산을 해서 오차가 생길수 있다.
![](https://velog.velcdn.com/images/ilov1112/post/4cb1a71f-b8b2-4eec-b195-2897b80c54c1/image.png)
- 큰 실수와 작은 실수를 더할때에도 오차가 생긴다.
Truncation Error
- 수학적 계산을 할때 근사값을 이용하기에 생기는 오차.
예시
- 미분을 계산하기 위한 방법
![](https://velog.velcdn.com/images/ilov1112/post/8caebfe3-185f-43ea-bdee-70ca41b3e467/image.png)
- 미분을 계산하기 위해 ( 그 접선의 기울기를 구하기 위해 ) 아주 짧은 구간의 기울기를 구한다.
- 실제 값이 아닌 근사값이다.
테일러 이론
- 어떤 함수를 임의의 값을 중심으로 값을 추정하기 위한 다항식으로 표현할수 있다.
- 다항식 : 테일러 급수 / Taylor series
- 다항식이 이어져 나갈수록 미분이 되기 때문에, 다항식의 길이는 미분 가능한 횟수에 의해 제한된다.
- 즉, 무한번 미분 가능한 경우 ( Ex. 삼각함수 ) 의 경우는 매우 완벽하게 표현이 가능해진다.
![](https://velog.velcdn.com/images/ilov1112/post/eb419240-1afb-47c3-890a-91a578927514/image.png)
- f(a) 는 알고 있는 임의의 값, 이를 중심으로 다른 f(x)를 구하는 다항식을 만들어낸 모습이다.
- 미분 가능한 함수에서만 사용 가능하다.
미분 가능한 함수 == 부드러운 함수 == Smooth function
알려진 f(xi) 로부터 f(xi+1) 를 구하는 예시에서..
Zero-order approximation
![](https://velog.velcdn.com/images/ilov1112/post/bc88b8d1-345a-4986-ba56-fb1d8aa2c694/image.png)
- 이는 최초의 근사값을 의미한다. 해당 결과값이 필요할 때 매우 단순한 식을 구성하여 빨리 뽑아내는 것을 의미한다.
First-order approximation
![](https://velog.velcdn.com/images/ilov1112/post/175eda8a-dc0c-423a-acd5-d0d50e3c101e/image.png)
![](https://velog.velcdn.com/images/ilov1112/post/b41506b5-828a-4d01-972e-7933775f4321/image.png)
- 단 하나의 주요 수치를 발견하여 좀 더 발전된 식을 통해 값을 정의하는 것을 의미한다.
- f'(x_i) 는 x_i 에서의 기울기 ( 미분 값 )
이후
![](https://velog.velcdn.com/images/ilov1112/post/4d5fb7eb-b5a8-4e43-a25f-a97ebe94efa8/image.png)
- 다항식에 항이 하나가 더 추가된 것.
![](https://velog.velcdn.com/images/ilov1112/post/0fd56676-cc1c-4be6-a47f-7c2fc5097ae2/image.png)
- 생성된 테일러 급수 형태.
Step size
- xi+1−xi
- 새로 구하려는 위치와 이전 위치의 차이
- h로 표기
- 위 간격은 오차에 영향을 준다.
![](https://velog.velcdn.com/images/ilov1112/post/b6306cc1-0029-4501-94ad-affe1dfac19c/image.png)
- 오차가 O(h) 이면 h를 절반으로 줄이면 오차가 절반
- 오차가 O(h^2)이면 h를 절반으로 줄이면 오차가 1/4
![](https://velog.velcdn.com/images/ilov1112/post/72c37917-07aa-4b04-9652-9c21ffeef94f/image.png)
ex 와 테일러 급수의 예시
- n : approximation order ( 클수록 다항식이 더 길다. )
![](https://velog.velcdn.com/images/ilov1112/post/c603c840-b36d-492a-a558-fb6744a1becd/image.png)
![](https://velog.velcdn.com/images/ilov1112/post/66503e27-edf8-4368-a5bf-2bd167f8af9e/image.png)
추가
![](https://velog.velcdn.com/images/ilov1112/post/4d4c58b5-2cdf-4e94-a794-70309e3ef3bf/image.png)
연습문제1
![](https://velog.velcdn.com/images/ilov1112/post/6da36025-201a-4f47-8441-59822e5184e9/image.png)
![](https://velog.velcdn.com/images/ilov1112/post/5fcceb52-0ffd-4597-b1fd-876cd7149f33/image.png)
- f(0) 의 값을 이용, f(1) 의 값을 근사하기 위한 과정이다.
연습문제2 - 삼각함수
![](https://velog.velcdn.com/images/ilov1112/post/4d77d980-e454-4cc6-a7c3-360bbd89679d/image.png)
f(x)=cos(x) 이고 xi+1=π/3 이고 h=π/12 일때 계산
![](https://velog.velcdn.com/images/ilov1112/post/8451e32f-51ae-4323-ac73-bc206e6c9e1d/image.png)
![](https://velog.velcdn.com/images/ilov1112/post/c59a9bf0-461c-44e7-9d04-c8bd3b765d76/image.png)
![](https://velog.velcdn.com/images/ilov1112/post/2f86c82b-7ebe-4202-8b9c-8b92ff349b33/image.png)
![](https://velog.velcdn.com/images/ilov1112/post/2df44f18-3e3d-4ec7-b91e-99835c7359b6/image.png)
![](https://velog.velcdn.com/images/ilov1112/post/57452bc5-7ea4-4fbc-a994-e810ebf8347d/image.png)
- 적당한 범위 내 까지 테일러 급수를 전개시, 근사값을 구한것이 되므로, 전개되지 않은 나머지 부분은 Truncation Error 가 된다.
![](https://velog.velcdn.com/images/ilov1112/post/bc0078d9-83a0-454a-83a0-732da3d00181/image.png)
- zero-order prediction 의 경우 Rn 의 예시
- 전개되지 않은 테일러 급수가 나머지 ( Rn ) 에 포함된다.
- ξ 는 xi 와 xi+1 사이의 특정 값.
미분의 평균값 정리
![](https://velog.velcdn.com/images/ilov1112/post/514037d4-36d6-4788-9de9-333431504f31/image.png)
- 양 끝점의 기울기와 같은 기울기 값을 가지는 접선을 가지는 점이 양 끝점의 중간에 반드시 존재한다.
- 이 점을 ξ로 표기한다.
![](https://velog.velcdn.com/images/ilov1112/post/5d435941-4d02-4c5d-8382-0ace4e16c698/image.png)
- 이를 통해 오차를 전개식이 아닌 단일 식으로 표현할수 있다.
![](https://velog.velcdn.com/images/ilov1112/post/c57bcf6f-6be6-4b1c-9ede-3423521a2c96/image.png)
- 어떤 점에서의 미분값을 구할때, 그 점과 다음 점의 간격에 오차가 비례한다.
수치해석적 미분 계산방식
- xi 지점의 미분값을 구하려고 한다.
- 3가지 방식이 있다.
![](https://velog.velcdn.com/images/ilov1112/post/7d302a83-7286-4b59-b559-cfe7a6db5929/image.png)
- xi−1 와 xi의 기울기를 구한다.
- first backward difference 로 부른다.
![](https://velog.velcdn.com/images/ilov1112/post/004a9823-d6ec-4cbb-837b-121c3aee490b/image.png)
- xi 와 xi+1 과의 기울기로 구할수도 있다.
- 이 경우 first forward difference 로 부른다.
![](https://velog.velcdn.com/images/ilov1112/post/93c5006f-5473-4256-80c7-33e6fb752a02/image.png)
- xi−1 과 xi+1 의 기울기로 구할수도 있다.
- 이 경우 centered finite divided difference 로 부른다.
In Python..
- %precision {n}
- 주피터 노트북 환경에서 n자리 소숫점까지 표기하도록 한다.
- 다시 리셋하려면 %precision %r
![](https://velog.velcdn.com/images/ilov1112/post/879a47d8-fb69-4102-9d14-160ff842e829/image.png)
- truncation error 와 round-off error 의 합이 최소가 되는 지점을 찾아야 한다.
![](https://velog.velcdn.com/images/ilov1112/post/9335d502-ebbb-441d-8e1e-526eba0d9fd4/image.png)
- 미분에서의 계산 예시
- 어느 지점까지는 step 이 줄어들수록 오차가 줄어들지만
- 어느 순간부터는 오히려 오차가 증가하는 모습을 보인다.
- 이는 step size를 표기하기 위한 자리가 부족해 점점 이상한 값이 되어가기 때문이다.
암기
![](https://velog.velcdn.com/images/ilov1112/post/48aa3b1f-890d-4859-9749-2c2054145da1/image.png)
- 테일러 급수에서 a가 0이 될때를 기준으로 한다.