Método de Newton-Raphson en MATLAB

Ammar Ali 20 junio 2023
Método de Newton-Raphson en MATLAB

Este tutorial analizará cómo encontrar las raíces de una función usando el método de Newton-Raphson en MATLAB.

Método de Newton-Raphson en MATLAB

Usamos el método de Newton-Raphson para encontrar las raíces de una función. El método usa una fórmula para aproximar una función continua con una línea tangente para encontrar una aproximación de las raíces de una función dada.

La fórmula utilizada para encontrar las raíces con el método de Newton-Raphson se encuentra a continuación.

Método de Newton

La fórmula usa el valor anterior, la función y su derivada para encontrar la siguiente raíz para la función dada. Para encontrar la derivada de una función, podemos usar la función diff() de MATLAB.

Necesitamos usar un bucle para obtener la raíz usando la fórmula anterior. Por ejemplo, si necesitamos encontrar cuatro raíces, repetimos el bucle cuatro veces.

Almacenaremos la función dada en una variable, tomaremos su derivada usando la función diff() y la almacenaremos dentro de una variable. También debemos almacenar todos los valores raíz dentro de una matriz para acceder fácilmente al valor raíz anterior.

Después de eso, necesitamos usar un bucle para encontrar las raíces y actualizaremos los valores usando la matriz de raíces. Podemos usar la función subs() para actualizar los valores en el ciclo y almacenar el valor raíz en la matriz raíz.

Por ejemplo, definamos una función y usemos una función aleatoria y encontremos sus primeras cinco raíces usando la fórmula anterior en MATLAB. Vea el código a continuación.

clc
clear
fun = @(x) sin(x);
roots = mynewton(fun, 2, 5)

function output = mynewton(fun,a,n)
syms x;
z = fun(x);
derZ = diff(z);
out = zeros(1,n+1);
out(1) = a;

for idx = 1 : n
    numeratorZ = subs(z,x,out(idx));
    denominatorZ = subs(derZ,x,out(idx));
    out(idx+1) = out(idx) - double(numeratorZ)/double(denominatorZ);
end
output = out;
end

Producción :

roots =

    2.0000    4.1850    2.4679    3.2662    3.1409    3.1416

Tenga en cuenta que si el código anterior muestra un error, guarde la función mynewton() en un archivo .m separado con el mismo nombre que la función como mynewton.m y luego cree otro archivo .m y escriba las cuatro líneas superiores de código para llamar a la función o llámela desde la ventana de comandos de MATLAB. El archivo de prueba y mynewton.m deben estar en el mismo directorio.

En el código anterior, definimos la función mynewton() en la que tenemos que pasar la función dada cuyas raíces queremos encontrar, la estimación inicial de la raíz y el número de raíces que queremos encontrar.

Usamos la función zeros() para inicializar la matriz raíz con ceros para que podamos poner los valores después de evaluarlos usando la fórmula.

Usamos la función subs() para actualizar el valor del numerador y el denominador en la fórmula anterior del método Newton-Raphson. El primer argumento de la función subs() es la función dada cuyas raíces queremos encontrar.

El segundo argumento es el valor anterior que queremos cambiar, y el tercero es el valor nuevo que queremos colocar en lugar del valor anterior dentro de la función dada.

Después de la función subs(), la salida estará en forma de función como cos(número), así que usamos la función doble() para convertir los valores a valores numéricos y luego aplicamos la fórmula de Newton-Raphson a estos valores para encontrar el valor de la raíz.

La salida muestra que las raíces y la suposición inicial se han almacenado dentro de la matriz de salida. El código anterior es la representación básica del método de Newton-Raphson, pero podemos agregar otras cosas como la tolerancia o un método para verificar si el algoritmo converge.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook