KIPC [1211901] · MS 2023 · 쪽지

2024-01-08 00:30:34
조회수 14,264

칼럼) 극한 문제 근사로 정확하게 푸는 방법

게시글 주소: https://snu.orbi.kr/00066476444

보통 각 항마다 근사 취했을 때 

1. 결과를 종합했을 때 오류가 생기고 (혹은 오류가 생겼는지 안 생겼는지도 모르고)

2. 각 항마다 근사했더니 계산 복잡도가 터져 나가서

어려워 하는 분들이 많은데요


결론적으로 말하자면 테일러 전개 사용하고, 이때 오차범위 따지면서 근사하고, 필요없는 항들 계속 가지치고 재근사하면 됩니다.

적당한 식정리와 함께 적용하면 계산 복잡도를 줄일 수 있고요.


아래 내용은 공부하면서 혼자 연구했던 내용 정리한거라 수학적 엄밀함이 다소 떨어질 수 있으니, 양해 바랍니다. 






[표기 약속]

x->0에서 f1(x)를 e1(x)로 근사했을 때, 오차항  r1(x) = f1(x) - e1(x)라 둬보죠.


제대로된 근사였다면 e1(x) >> r1(x)여야 합니다. 즉, lim x->0 e1(x)/f1(x) = 1, lim x->0 r1(x)/e1(x) = 0이어야 합니다.


그리고 lim x-> 0 e1(x)/x^n = c (!=0)일 때, e1(x) = W(x^n)이라고 표기하겠습니다. 


이때 max(W(x^n), W(x^m)) = W(x^(min(n,m))이라 정의하고,


W(x^n) > W(x^m) <=> n<m이라 정의해두겠습니다.


마지막으로, 임의의 f(x)에 대해 W(f(x)) >= W(0)이며, 등호는 f(x) = 0일때만 성립합니다. 


*W 기호 안에는 x^n 대신 다른 임의의 함수가 들어가도 됩니다.


** n은 자연수인 경우로만 논의 대상을 한정하겠습니다. (근사항, 오차항 모두 W(x^n)꼴로 나타나야 함.)


***근사항/오차항의 차원이 유리/무리 지수일때는 잘 모르겠어요.. 무리 지수는 안 나올거고, 유리 지수는 치환해서 루트 없애고 풀었던 것 같네요.  일반화된 이항정리가 있긴 한데 무한급수 튀어나와서요. 대상 함수가 무한급함수가 아니면 근사가 잘 안되는 것 같네요.

위 W 표기법에서 등호 빼버린 small o 표기법 쓰면 될 것 같긴 한데, 귀찮고 수능에 안 나와서 연구 안 했어요.






[항 사이 연산시 오차범위의 변화]

f1(x) = e1(x) + r1(x), f2(x) = e2(x) + r2(x)

e1(x). = W(x^n1), e2(x) = W(x^n2), r1(x) = W(x^m1), r2(x) = W(x^m2)인 경우를 보겠습니다.


이때 자명히, n1 < m1, n2 < m2입니다.


1. 선형결합시 (a*f1 + b*f2)

근사항 = a*e1+b*e2 =  W(a*e1 + b*e2)이며, 오차항 = max(W(r1), W(r2))입니다.

이때 만약 근사항 = 0이 튀어나오거나, W(오차항) >= W(근사항)이라면, 망한거에요.

오차가 근사보다 크거나 같아서 정확한 근사가 되지 않습니다..


다행히 이런 경우는 W(e1) = W(e2)이고 a = -b 일때만 발생합니다. (ex. sin(x) - x에서 sinx를 x로 치환한 경우)

이때는 근사를 조금 더 정확하게 해주면 됩니다. 위에서는 sinx를 x - 1/6 x^3 으로 근사하면 되겠네요.


2. 곱셈시 (f1*f2)

근사항 = e1*e2 = W(e1*e2)이며, 오차항 = W(r1*e2 + r2*e1) = max(W(x^(n1+m2)), W(x^(n2+m1)))입니다.

이때는 선형결합시와 같은 예리가 발생하지 않습니다. 무조건 W(e1*e2) > max(W(r1*e2), W(r2*e1))니까요.

다만 오차항의 W가 감소할 수 있습니다. 그리고 우린 얼마나 감소했는지 모릅니다. (오차항의 정확한 식을 모르니까요.)

근데 근사에서 오차가 줄어드는, 즉 정밀해지는건 나쁜거 아니니까 신경 꺼도 됩니다.


3. 나눗셈시 (f1/f2)

근사항 = e1/e2 = W(e1/e2)이며, 오차항은 max(W(x^(m1-n2), W(x^(n1+m1-2n2))입니다. (정확한지 잘 모르겠,,)

근데 보통 근사 과정에서 나눗셈이 개입하는 경우는 최종적인 답을 구하는 경우여서 크게 의미 없었습니다.

그리고 만약 나눗셈 근사 결과를 사칙연산에 대입해야 하는 경우, 나눗셈을 근사하지 마세요.

식정리 해서 사칙연산을 나눗셈 기호 안에 밀어넣으면 굳이 근사 안 하고 최고차항 계수만 구하면 됩니다.


4. 합성시 (f1(f2(x)))

(아래 증명 참고)

근사항 = e1(e2(x)) = W(e1(e2(x))), 오차항 = max(W(x^n2(n1-1)+m2), W(x^n2m1))입니다.


[계산복잡도 줄이는 팁]

연산하다보면 근사 결과의 곱, 합성, 선형결합이 뒤엉키면서 복잡해지는데요,

이럴 때는 쓰레기 항을 없애고, 필요하다면 다시 근사하면 됩니다. 


즉, sinx = x-1/6 x^3 + W(x^5), cosx = 1 - 1/2 x^2 + W(x^4) 

이때 sinxcosx를 근사해보면 x - 2/3 x^3 + 1/12 x^5 + W(x^5)가 튀어나옵니다.


일단 1/12 x^5는 필요없습니다. 오차범위가 x^5급이어서 의미 없는 항이에요. (쓰레기 항 삭제)

그리고 만약에, W(x^2)급 오차범위만 필요하다면, 이를 x + W(x^2)으로 놓아도 문제가 없습니다. (재근사)


저 같은 경우 나눗셈이나 합성, 곱처럼 근사항을 다루기 까다로운 경우에 필요한 정밀도를 계산후 재근사 때리는 경우가 많았던 것 같네요.  






위 내용들대로 근사 문제 풀면 안 틀립니다.

근데 하나하나 오차범위 따지면 문제 풀이 시간은 보장 못해요.

‘필요하면 오차범위를 따지겠다‘ 마인드만 갖고 있으면 충분할 것 같습니다.





* 수치해석이 이런 학문인가요? 재밌을듯.

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.