Newton-Raphson.sce

// Solución de f(x)=0 por Newton-Raphson
disp("Método de Newton-Raphson para f(x)=0");
clear

// Aquí se define la función
function y=f(x)
    y=
endfunction

// Aquí se define la derivada de la función
function yprima=fprima(x)
    yprima=
endfunction

// Estas variables controlan la convergencia
//   maxiter   = número máximo de iteraciones
//   tol       = tolerancia en el error relativo
//   converge  = booleano que indica si ya convergió
maxiter=100;
tol=5e-6;
converge=%F;

disp("Proporcione el valor inicial:");
x=input("x0 = ");

iter=0;

while (iter<maxiter) & (~converge)

    iter=iter+1;
    
    // Calcular el nuevo valor de x
    xn=x-f(x)/fprima(x);
       
    // Checar criterio de convergencia (error relativo aproximado)
    e=abs((x-xn)/xn);
    if e<tol then
        // Señalar que convergió y salir del ciclo
        converge=%T;
    end
    
    // x para la siguiente iteración
    x=xn;

end

if (converge) then
    disp("La solución es x = " + string(xn))
    disp("Error aproximado "+string(e*100)+"%")
    disp(string(iter) + " iteraciones necesarias")
else
    disp("No converge después de "+string(maxiter)+" iteraciones")
end