2006년 3월 24일 금요일

Numerical Analysis

. 시험 주의 사항

. 계산기
. 성능이 뛰어나면 좋다.
. Graph가 그려지면 좋다.
. 사용법을 잘 익힌다.
. exp
. sin, cos - radian mode로 변경
. 간단한 미적분이나 값의 성질을 알아야 한다.
. exp(0) = 1
. exp(n) > 1
. exp는 monotonous increasing function
. 답안은 영어로 작성
. 부호가 맞는 지 잘 따져본다.
. Ans key를 활용하면 변수 한 개짜리 iteration을 편하게 할 수 있다.

. pn = (an + bn)/2 = an + (bn - an) / 2
. Mathematically same.
. Numerically different.
. It's considering the round-off error

. bisection method
. 언제나 수렴한다.
. |p-p*| < |b-a|/(2^n)
. n : iteration 횟수
. p1 = (b-a)/2
. f(a) * f(b) < 0
. f(pi)의 sign만 check하면 된다.
. Graph를 잘 그리고 bisection method의 경우 sign만 잘 check하면 되지
참값을 구할 필요는 없다.
. 음수를 홀수가 곱하면 음수, 짝수개 곱하면 양수
. Graph로 봐서 명시적으로 음수, 양수가 나오는 경우가 있다.
. Boundary 내에 해가 홀수개 있어도 잘 수렴한다.
단, 어느 해에 수렴할 지는 알 수 없다.
. 중근 : multiple root
. 실근 : real root
. 허근 : imaginary root

. fixed point (= functional iteration)
. f(p) = p
. root-finding 문제로 바꿀 수 있다. (무수히 많은 방법이 가능)
. 가끔 다른 곳에 수렴하거나 발산하거나 값이 없기도 한다.(허수 등..)
. 수렴 속도 계산시 수렴때까지 주의깊게 살펴본다.
(가끔 순위가 바뀌기도 한다.)

. Newton's method (First Taylor series polynomial)
. Taylor series
. f(x) = f(x0) + (x - x0)f(x0) + (x - x0)^2/2!*f(x0) + ...
. f(x) = sigma(i = 0, n, (x-x0)^n/n!*f(x0)) + (x-x0)^(n+1)/(n+1)!*f(error(x0))
. pn = pn-1 - f(pn-1)/f'(pn-1)
. pn의 값은 (pn-1, f(pn-1))을 지나고 기울기가 f'(pn-1)인 직선의 x절편

. Secant method
. Newton's method에서 f'(x)가 계산하기 어려울 때 f'(x)만 이용
. f'(pn-1) = (f(pn-1) - f(pn-2))/((pn-1) - (pn-2))
. pn = pn-1 - f(pn-1)((pn-1) - (pn-2))/(f(pn-1) - f(pn-2))
. pn의 값은 (pn-1, f(pn-1))과 (pn-2, f(pn-2))을 지나는 직선의 x절편
. Newton's method보다 수렴이 느리다.

. Method of False Position
. Secant method를 계량하여 만든 것
. bisection method처럼 항상 입력하는 두 값의 부호가 반대라서
bracket이 되게 한다.
. bracket : f(pi) * f(pi+1) < 0
. Newton's method보다 수렴이 느리다.

. stopping criteria
. |pn - pn-1| < e
acctual error를 이용함.

. |pn - pn-1|/|pn| < e
scale에 상관없다.

. |f(pn)| < e
유연하게 정할 수 있으나 actual error를 알 수 없다.

. Interpolation
. Talyor Polynomial
. Point에 가까울 때만 exact
. Linear : Not smooth
. Lagrange Polynomial
. High order일 때 oscilllation이 심해짐.
. Osculating Polynomial : 모든 점을 지나고 derivative도 만족
. Hermite : f(x0), f'(x0) ... f(xn), f'(xn) => (2n + 1)th Polynomial
. Lagrange와 함께하는 식이 있지만 결국 어떻게든 n차 방정식을 만들면 장땡이다.
. Quadratic Spline : Piece-wise approach, f(x0), f(x1) ...
. Cubic Spline : f(x0), ... f(xn), S0, ..., Sn-1
. Free Boundary : f'(x0) = 0, f'(xn) = 0
. Clamped Boundary : P'(x0) = f'(x0), P'(xn) = f'(xn)

. Pseudo code
. INPUT : p0~pi(Initial estimation), N0(Maximum # of iterations), TOL(tolerance, e)
. OUTPUT : approximate solution or message of failure
. INPUT : n(number of data), data(n)
. OUTPUT : solution
. STEP statement ; statement ; statement.
. IF (condition) then . else .
. SET i = constant.
. SET i = i + 1. (Increment)

. Basic Calculus
. (a^x)' = (a^x)ln(a)
. f(g(x)) = f'(g(x))*g'(x)
. f(g(h(x))) = f'(g(h(x)))*g'(h(x))*h'(x)
. (sin(x))' = cos(x)
. (cos(x))' = -sin(x)
. (tan(x))' = (sec(x))^2
. (csc(x))' = -csx(x)*cot(x)
. (sec(x))' = sec(x)*tan(x)
. (cot(x))' = -(csc(x))^2
. (a^x)' = (a^x)*ln(a)
. (e^(a*x))' = ((e^x)^a)' = a*(e^x)^(a-1)*(e^x) = a*(e^x)
. (ln(x))' = 1/x
. (x^x)' = (ln(x)+1)*(x^x)
. (e^(f(x)))' = f'(x)*(e^(f(x)))

. 계산기 사용법
. calc를 이용하여 a~e, x, y 등의 변수를 식에 대입
. solver가 있다면 이용할 것
. 단점 - unique root 일때만 이용가능하다.

댓글 없음:

댓글 쓰기