SturdyCobble's Study Note

MATLAB으로 Newton's Method 구현하기 본문

프로그래밍/MATLAB

MATLAB으로 Newton's Method 구현하기

StudyingCobble 2019. 8. 26. 23:47

NOTICE : 독학인 만큼, 잘못된 내용이 있을 수 있습니다. 내용 지적은 언제나 환영합니다.

더 이상 이 블로그에는 글을 올리지는 않을 예정입니다. 그렇지만 댓글을 달아주시면 최대한 답변드리고자 노력하겠습니다.


주의 : MATLAB 배운지 얼마 안 돼서 작성한 스크립트라 의미없는 반복이나 비효율적인 지점이 발견될 수 있습니다. 또한, 일부로 수학적인 내용을 보여주기 위해 함수를 분리하거나 한 흔적이 남아있습니다.

 

 

실행 코드

syms x y z;
format long;
r(:,1) = [-2 ; 3 ; -1];
k = 1;
for k = 2:80
    D = jacobian([x*y*z+1, y^2-1, x^2+z+1],[x,y,z]);
    Dv = subs(D,[x y z],r(:,k-1)');
    if det(Dv) == 0
        break
    end
    r(:, k) = r(:, k-1) - Dv\f(r(:, k-1));
end
r(:,end)
f(r(:,end))

function w = f(v)
    x = v(1);
    y = v(2);
    z = v(3);
    w = [x*y*z+1;y^2-1;x^2+z+1];
end

 

실행 결과

ans =

   0.682327803828019
   1.000000000000000
  -1.465571231876768


ans =

   1.0e-15 *

   0.111022302462516
                   0
                   0

 

 

 

 

울프람알파에서 구한 값

 

'프로그래밍 > MATLAB' 카테고리의 다른 글

[MATLAB] 08. 함수  (0) 2019.09.01
MATLAB으로 벡터장 표시하기  (0) 2019.08.30
[MATLAB] 07. 다차원 배열  (0) 2019.08.26
[MATLAB] 06. 벡터화와 사전할당  (0) 2019.08.13
[MATLAB] 05. 제어식과 논리 첨자  (0) 2019.08.12
Comments