-
Notifications
You must be signed in to change notification settings - Fork 0
/
Newton_Raphson_method.m
55 lines (42 loc) · 1.65 KB
/
Newton_Raphson_method.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
% Newton-Raphson Method with Tangent Line Visualization
syms x; % Define symbolic variable
f_sym = x^3 - 2*x - 5; % Define the symbolic function
f = matlabFunction(f_sym); % Convert symbolic function to MATLAB function handle
df_sym = diff(f_sym); % Compute the derivative symbolically
df = matlabFunction(df_sym); % Convert symbolic derivative to MATLAB function handle
% Initial guess
x0 = 2; % You can change this value based on your problem
% Tolerance and maximum number of iterations
tol = 1e-6; % Tolerance level
max_iter = 10; % Maximum number of iterations
% Range for plotting
x_range = linspace(-3, 3, 100); % Adjust this range based on your function
% Newton-Raphson iteration with visualization
figure;
hold on;
fplot(f_sym, [min(x_range), max(x_range)], 'LineWidth', 2); % Plot the function
title('Newton-Raphson Method Visualization');
xlabel('x');
ylabel('f(x)');
grid on;
for i = 1:max_iter
% Calculate the next approximation
x1 = x0 - f(x0)/df(x0); % Newton-Raphson formula
% Plot the tangent line at the current approximation
tangent_line = @(x) df(x0)*(x - x0) + f(x0);
fplot(tangent_line, [min(x_range), max(x_range)], '--r', 'LineWidth', 1.5);
plot(x0, f(x0), 'ro', 'MarkerFaceColor', 'r'); % Mark the point of tangency
% Update the guess
x0 = x1;
% Pause to visualize each iteration
pause(1);
% Check for convergence
if abs(f(x1)) < tol
fprintf('Root found: %.6f\n', x1);
break;
end
end
if i == max_iter
fprintf('The method did not converge within the maximum number of iterations.\n');
end
hold off;