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".
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