Using Octave: Difference between revisions

2,234 bytes added ,  10 December 2024
Tag: Reverted
Tag: Reverted
Line 159: Line 159:




= Plotting =
% Função f(x) = 1 - x^3
f = @(x) 1 - x^3;         


The function [https://www.gnu.org/software/octave/doc/interpreter/XREFplot.html plot] can be called with vector arguments to
% Derivada de f(x) -> f'(x) = -3*x^2
create 2D line and scatter plots.  Read more
f_prime = @(x) -3*x^2;
[https://www.gnu.org/software/octave/doc/interpreter/Two_002dDimensional-Plots.html about plotting].


<syntaxhighlight lang="octave">plot (i / 10, w);
% Função para aplicar o Método de Newton-Raphson
title ('w = sin (i / 10)');
function [raiz, num_iteracoes, iteracoes_x, iteracoes_y] = newton_raphson(x0, tolerancia)
xlabel ('i / 10');
    % Inicializar variáveis
ylabel ('w');</syntaxhighlight>
    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


[[File:Using octave-1.png|thumb|center]]
% 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 =
Anonymous user