[VBA]방정식을 반복법으로 풀기

 e^x - 5 sin x + 1.36 x =0을 반복법으로 풀어라.

먼저, 주어진 식을  x =  g (x)형식으로 변형시킨다.

즉,  x = e^x - 5 sin x + 2.36 x 으로 변형시킨다. 따라서  g(x) = e^x - 5 sin x + 2.36 x 가 된다.

Option Explicit

'허용오차(allowable error)
Private Const EPS As Double = 0.00001 'epsilon의 약자. 매우 작은 값 그러나 0은 아니다.
'which stands for epsilon, mean very small but nonzero

Sub SolveEquation()
  Dim x0 As Double
  Dim x1 As Double
  '
  '
  '1) 초기값 x0를 적당히 정한다.
  x0 = Range("A3")
  '2) x1 = G(x0)를 계산한다.
  x1 = G(x0)
  '
  Do Until (Abs(x1 - x0) < EPS) '수렴할 때까지 계산해라.
    x0 = x1 '//새로 계산한 값(x1)을 이전 값(x0)으로 대체한다.
    x1 = G(x0) '//다시 새로운 값(x1)을 계산한다.
  Loop
  '
  '
  Range("C3") = x1
End Sub

풀어야 할 방정식은 다음과 같다.

Function G(x As Double) As Double
' 계산할 방정식 f(x) = 0 를 x = g(x) 형식으로 변환시킨 것
  G = Exp(x) - 5 * Sin(x) + 2.36 * x
End Function
Print Friendly, PDF & Email