domingo, 15 de noviembre de 2015

Código en MATLAB para desarrollar el método de bisección

El programa responsable del proceso iterativo será el siguiente.

function z=Metbiseccion(a,b,err,fun)
while (abs(b-a)> err);
    fa=fun(a);
    fb=fun(b);
    z=a+((b-a)/2)
    fz=fun(z);
    if(fa*fz<0);
        b=z;
    else
        a=z;
    end
end

En un script distinto se implementará el siguiente código, el cual será el receptor de la ecuación problema.

function y=fun(x);
y=x.^3+4*x.^2-10;  %( aquí es donde debes escribir la ecuación problema)
end

No es estrictamente necesario hacer otro script para la función anterior, ya que se puede hacer uso de funciones simbólicas, por lo tanto sería posible escribir el siguiente código en el programa principal como sustitución para el código anteriormente descrito.
y=@(x.^3+4*x.^2-10)
Si realizas este procedimiento no olvides borrar el "@fun" y tampoco olvides escribir y=@(x.^3+4*x.^2-10) antes de llamar al programa Metbisección.

El programa principal, en un scrpt nuevo, será el siguiente.

err=0.001;
a=1; (Intervalo menor)
b=2; (Intervalo mayor)
z=Metbiseccion(a,b,err,@fun);
x=(1:0.1:2.5); ( este intervalo debe ser sustituido por uno en el cual se piensa que la raíz podría encontrarse)
hold on
plot (x,fun(x))
grid on
plot (z, fun(z), '*')

Recordar que "err" se refiere al margen de error deseado, esto debido a que el método de bisección , como todo método numérico, solo es capaz de aproximar el valor de la raíz con respecto del valor real, por lo tanto siempre habrá un error muy pequeño. Recordar también que  los script deben estar guardados en la misma carpeta, de lo contrario MARLAB marcará error. Sin duda hay muchas maneras para automatizar el código, el código aquí mostrado representa un esqueleto, puedes modificarlo y mejorarlo de la manera que mejor te convenga. 

Si te interesa aprender más sobre el método en lápiz y papel, visita nuestra entrada del método de bisección en la sección de "Métodos numéricos en papel".

No hay comentarios:

Publicar un comentario