4) 함수의 복잡성: 함수가 복잡하거나 다수의 근을 가지고 있을 경우, 수렴하지 않을 수 있습니다.
5) 수렴 주변의 근방에서만 유효: 초기 추정값 주변에서만 수렴이 보장됩니다.
멀리 떨어진 해에서는 다른 방법을 사용해야 할 수 있습니다.
6) 미분 계산의 안정성: 미분이 0이 되는 지점이나 불연속성이 있는 지점에서 문제가 발생할 수 있습니다.
3. 예제
예제
위 함수 일 때,
미분 공식은 : f'(x) = 2x 입니다.
이때, 초기 추정값을 x_0 = 3 으로 설정합니다.
1step
x_1 = 3 - ((3^2-4)) / (2*3) = 2.1667
x_2 = (2.1667 공식에 대입) = 2
x_3 = (2 공식에 대입 ) =2
따라서, x_2 , x_3 의 값이 2가 됨에 따라, f(x) =0 이되는 x의 값이 2가 됨을 알 수 있습니다.
4. 그래프
그래프
다음과 같이 추정 값 '3' 으로 부터 근사값을 계속하여 f(x) = 0 을 알아가는 그래프를 확인 할 수 있습니다.
위 그래프에 대한 matlab 코드는 아래의 글을 통해 확인 가능합니다.
clc
close all
clear
% 주어진 함수 정의
f = @(x) x.^2 - 4;
% 함수의 미분 정의
df = @(x) 2 * x;
% 초기 추정값 설정
x0 = 3;
% 반복 횟수 설정
numIterations = 10;
% x 범위 설정
xRange = linspace(-3, 4, 100);
% 함수 및 뉴턴-랩슨 반복 결과를 그래프로 나타냄
figure;
% 주어진 함수의 그래프
subplot(2, 1, 1);
plot(xRange, f(xRange), 'b-', 'LineWidth', 2);
hold on;
grid on;
% 초기 추정값을 빨간색 원으로 표시
plot(x0, f(x0), 'ro', 'MarkerSize', 10);
% 뉴턴-랩슨 반복 수행
for i = 1:numIterations
x1 = x0 - f(x0) / df(x0);
% 그래프 상에서 반복된 추정값을 선으로 연결
plot([x0, x1], [f(x0), 0], 'r--');
% 다음 반복을 위해 추정값 갱신
x0 = x1;
end
% 최종 결과값을 녹색 별표로 표시
plot(x1, f(x1), 'g*', 'MarkerSize', 10);
% 그래프 스타일 및 레이블 설정
xlabel('x');
ylabel('f(x)');
title('Newton-Raphson Method Example');
% legend('f(x)', 'Initial Guess', 'Iteration Steps', 'Final Result');
% 주어진 함수의 그래프 및 뉴턴-랩슨 결과의 확대된 그래프
subplot(2, 1, 2);
plot(xRange, f(xRange), 'b-', 'LineWidth', 2);
hold on;
grid on;
% 초기 추정값을 빨간색 원으로 표시
plot(x0, f(x0), 'ro', 'MarkerSize', 10);
% 뉴턴-랩슨 반복 수행 (확대된 그래프)
for i = 1:numIterations
x1 = x0 - f(x0) / df(x0);
% 그래프 상에서 반복된 추정값을 선으로 연결
plot([x0, x1], [f(x0), 0], 'r--');
% 다음 반복을 위해 추정값 갱신
x0 = x1;
end
% 최종 결과값을 녹색 별표로 표시 (확대된 그래프)
plot(x1, f(x1), 'g*', 'MarkerSize', 10);
% 그래프 스타일 및 레이블 설정
xlabel('x');
ylabel('f(x)');
title('Newton-Raphson Method Example (Zoomed In)');
% legend('f(x)', 'Initial Guess', 'Iteration Steps', 'Final Result');
% 그래프 보여주기
hold off;