Using Octave: Difference between revisions
→Plotting
Tag: Reverted |
Tag: Reverted |
||
Line 159: | Line 159: | ||
= | % Função f(x) = 1 - x^3 | ||
f = @(x) 1 - x^3; | |||
% Derivada de f(x) -> f'(x) = -3*x^2 | |||
f_prime = @(x) -3*x^2; | |||
% Função para aplicar o Método de Newton-Raphson | |||
function [raiz, num_iteracoes, iteracoes_x, iteracoes_y] = newton_raphson(x0, tolerancia) | |||
% Inicializar variáveis | |||
iter = 0; % Contador de iterações | |||
erro = inf; % Inicializa o erro como infinito | |||
x = x0; % Definir o ponto inicial | |||
iteracoes_x = x; % Inicializar vetor de iterações para o gráfico | |||
iteracoes_y = f(x); % Inicializar valores de f(x) para o gráfico | |||
% Iterar até que o erro seja menor que a tolerância | |||
while erro > tolerancia && iter < 100 | |||
iter = iter + 1; % Incrementa a iteração | |||
x_new = x - f(x) / f_prime(x); % Fórmula de Newton-Raphson | |||
erro = abs(x_new - x); % Calcula o erro absoluto | |||
x = x_new; % Atualiza x | |||
% Armazena os valores de x e f(x) para o gráfico | |||
iteracoes_x = [iteracoes_x, x]; | |||
iteracoes_y = [iteracoes_y, f(x)]; | |||
end | |||
% Retorna a raiz aproximada, número de iterações e os valores das iterações | |||
raiz = x; % Raiz aproximada | |||
num_iteracoes = iter; % Número de iterações | |||
end | |||
[[ | % Condições de cada caso | ||
% Caso 1: x0 = 2 e tolerância = 1e-6 | |||
x0_case1 = 2; | |||
tolerancia_case1 = 1e-6; | |||
% Caso 2: x0 = 7 e tolerância = 1e-3 | |||
x0_case2 = 7; | |||
tolerancia_case2 = 1e-3; | |||
% Resultado para o primeiro caso (x0 = 2, tolerância = 1e-6) | |||
[raiz_case1, iter_case1, iteracoes_x_case1, iteracoes_y_case1] = newton_raphson(x0_case1, tolerancia_case1); | |||
disp(['Caso 1: Raiz aproximada: ', num2str(raiz_case1)]); | |||
disp(['Número de iterações: ', num2str(iter_case1)]); | |||
% Resultado para o segundo caso (x0 = 7, tolerância = 1e-3) | |||
[raiz_case2, iter_case2, iteracoes_x_case2, iteracoes_y_case2] = newton_raphson(x0_case2, tolerancia_case2); | |||
disp(['Caso 2: Raiz aproximada: ', num2str(raiz_case2)]); | |||
disp(['Número de iterações: ', num2str(iter_case2)]); | |||
% Plotagem do gráfico | |||
figure; | |||
% Caso 1: Plotando as iterações | |||
subplot(2,1,1); | |||
plot(iteracoes_x_case1, iteracoes_y_case1, '-o', 'LineWidth', 2, 'MarkerSize', 6); | |||
title('Método de Newton-Raphson - Caso 1 (x0 = 2)'); | |||
xlabel('Iterações (x)'); | |||
ylabel('f(x)'); | |||
grid on; | |||
% Caso 2: Plotando as iterações | |||
subplot(2,1,2); | |||
plot(iteracoes_x_case2, iteracoes_y_case2, '-o', 'LineWidth', 2, 'MarkerSize', 6); | |||
title('Método de Newton-Raphson - Caso 2 (x0 = 7)'); | |||
xlabel('Iterações (x)'); | |||
ylabel('f(x)'); | |||
grid on; | |||
= Strings = | = Strings = |