완숙의 블로그

[SystemDynamics] 6 - Newton-Raphson Method 본문

Mechanics/System Dynamics

[SystemDynamics] 6 - Newton-Raphson Method

완숙 2019. 5. 14. 17:07

Tayler Series

테일러 급수는, 임의의 함수를 무한개의 다항식을 더하여 근사하는 방법이다.

 

 

 

 

보통 테일러 급수는 1차 함수로 근사할 때 많이 사용한다.

 

 

Newton-Rahpson method

 

뉴턴 랍슨 메서드의 핵심은,

iterative 접근이다.

 

 

1변수 함수에서 Newton-Rahpson method

스크린샷 2019-05-07 오후 1 18 53

 

 

다음과 같은 함수가 있다고 하자.

우리가 하고 싶은 것은 이 함수의 을 찾는 것이다.

 

그러기 위해서 테일러 시리즈를 사용해보자.

이 함수 f는 1차까지만 근사하면 다음과 같다.

 

 

 

 

이 때, 이 근사를 시작하는 점, a를 x_i로 주면,

 

 

 

 

그렇다면 이 x_i로 시작해서 이 함수를 근사했으므로,

근사한 식을 0으로 만드는 것이 답이다.

 

이 근사된 함수로 나온 solution을 x_(i+1) 이라 하자.

 

 

 

 

우리는 x_(i+1)을 찾고 싶으므로, 위의 가정들을 식에 다 집어넣으면,

 

 

 

 

따라서, 우리가 원하는 x_(i+1) 은 다음과 같다.

 

 

 

 

나온 x_(i+1)을 다시 a로 넣고, 이 작업을 반복하게 되면,

해 근처에 갔을 때, 델타 x가 매우 작아진다.

이때, 우리는 해를 찾았다고 return 해준다.

 

 

일반화된 Newton-Rahpson method

그렇다면, 식이 2개, 변수가 2개인 벡터 함수에서는 어떻게 근사할 수 있을까?

 

 

 

 

각각을 테일러 시리즈로 전개하자. 1차항 까지.

 

 

 

 

우변이 0인 이유는 위에서 설명한 것과 같은 의미 이다.

우리는 0이 되는 x, y를 찾고 싶은 것이기에 근사한 식에서

함수값이 0이 될 때, x(i+1), y(i+1) 이 필요하다.

편미분 후 x_i, y_i를 넣는 것을 생략해서 표현하면,

 

 

 

 

여기서,

 

 

 

J를 자코비안 행렬 이라 한다.

 

 

 

 

 

 

 

 

이므로 업데이트가 가능하다.

 

 

역시나 초기값 설정이 필요하다!

 

 

 

Position Analysis

이전 글에서 우리는 제약식들이 모인 벡터함수 C를 정의했다.

 

우리는 결국 벡터함수 C = 0 이되는 해, 즉 q 벡터를 찾는 것이 목적이다.

 

따라서 우리는 이 벡터 함수 C를 테일러 시리즈로 근사한 뒤

Newton-Rahpson method 를 사용해서 해를 구하자!

 

그러기 위해서는 벡터함수 C를 근사화 해야 한다. 테일러 시리즈를 적용하면,

 

 

 

 

 

 

C 행렬은 자코비안 행렬이다.

 

따라서,

 

 

 

 

 

로 q벡터를 구할 수 있다.

 

이를 반복하다가 특정 조건일 때, 우리는 반복을 멈추고 return 하면되는데,

 

 

 

 

두 식의 의미는,

하나는 다가가는 step size이고,

두번째는 함수값의 size 차이이다.

 

 

스크린샷 2019-05-07 오후 2 24 47

 

 

해답을 찾아가는 과정에는 다음과 같이

두가지의 기준을 세울 수 있으므로, 두 기준에 대해서

iteration을 멈춘다.

 

 

Notice

우리는 t가 변수가 아닌 것에 주목해야 한다.

우리는 해를 수치적으로 구할 것이기 때문이다.

 

t가 0일 때, q벡터의 초기값을 임의로 잡고, Newton 메서드, q 구함.

t가 0.01 일 때, q벡터의 초기값을 임의로 잡고, newton 메서드 , q 구함.

 

따라서 t는 상수로 생각하고 우리는 문제를 푼다.

 

 

Velocity Analysis

같은 방법으로 제약식이 주어졌을 때,

우리가 궁금한 것은 q_dot 벡터이다.

 

 

 

 

이므로,

 

 

 

 

 

 

 

 

Ct 벡터는 t에 대해 미분한 벡터이므로,

Driving constraint 식 이외 항은 0이다.

 

따라서 결론적으로,

 

 

 

이다.

 

 

Acceleration Analysis

제약식을 두번 미분해서,

q_twodot 을 구하면 된다.

 

 

 

 

 

결과적으로,

 

 

 

 

Comments