Este es el codigo del Metodo de Biseccion en Matlab para hallar raices de una funcion
Aqui les va el codigo:
%Metodo de Biseccion - Metodos Numericos Matlab clc; Fx=input('Ingrese la funcion: ','s'); a=input('Ingrese a : '); c=input('Ingrese c : '); e=input('Ingrese el error : '); x=a; Fa=eval(Fx); x=c; Fc=eval(Fx); fprintf('\n %6s %7s %8s %10s %8s %8s %8s \n ','A','B','C','F(a)','F(b)','F(c)','|c-a|'); while abs(c-a)>e b=(a+c)/2; x=b; Fb=eval(Fx); fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f \n',a,b,c,Fa,Fb,Fc,abs(c-a)); if Fa*Fb<=0 c=b; Fc=Fb; else a=b; Fa=Fb; end end fprintf('\nEl resultado sera %.4f\n',b); ezplot(Fx);%graficamos la funcion grid on;
21 comentarios :
▼▲ Mostrar / Ocultar comentariosOie una pregunta..como ingreso la funcion?!! necesito ingresar:
Cos x - x; si me puedes ayudar y la otra es de x^3+4x^2-10
si me puedes ayudar...
Bueno lo que debes hacer es esto donde dice:
1º: Ingrese la funcion: cos(x)-x
2º: Ingrese a: 0.5
3º: Ingrese c: 1
4º: Ingrese el error: 0.001
Para determinar 'a' y 'c', debemos graficar la funcion 'cos(x)-x' para ver en donde se intersecta con el eje x como muestra la siguiente imagen, el punto en donde se da la interseccion de llama 'raiz' y es lo que vamos a hallar con este metodo.
El error siempre mayor que cero, de lo contrario nuestro MATLAB entrara en un bucle infinito.
Para la otra funcion lo mismo, pero debe cambiar 'a' y 'c', segun el grafico de la funcion:
1º: Ingrese la funcion: x^3+4*(x^2)-10
2º: Ingrese a: 1
3º: Ingrese c: 2
4º: Ingrese el error: 0.001
Espero te haya servido y cualquier otra duda que tengas solo ponte en contacto conmigo, gracias.
hola... gracias por el código....
ingresé la función x^2+1 que no tiene raíces reales y siempre me da el límite superior del intervalo... es un error que no consideraste?
hola... gracias por la observacion, me falto ponerle una condicion para identificar si tiene o no raices, tratare de corregirlo.
que tal amigo! oie intento meter sqrt(x)-cos(x) y se trabaaaa... como le puedo hacer? saludos
Hola, me da error en Fa=eval(Fx), porq sera!!! sera??? como trabaja el eval?
el comentario que puse mas arriba explica como introducir correctamente la funcion, gracias!!
Muy buen programa..
Funciona muy bien
De casualidad no tienes un programa para Punto Fijo
Gracias!
Hola porque al meter la funcion 2+ cos(e^x-2)- e^x, me sale raro el resultado y no da la interseccion en la grafia en el pounto que nos dice la corrida del programa.
Saludos
muchas gracias bro
tan(x)-x+2 necesito la raiz ebtre 0 y 5 para esta funcion, como seria para q me ayudes en esa ...
Bueno lo que debes hacer es esto donde dice:
1º: Ingrese la funcion: tan(x)-x+2
2º: Ingrese a: 0
3º: Ingrese c: 5
4º: Ingrese el error: 0.001
Y listo!!
Si el programa arroja error, prueba con intervalos mas cortos.
hola disculpa no tengo idea de como realizar un programa en matlab con los bucles para sumar dos matrices de nxm dimenciones. me podrias ayudar
debo darte la gracias,el programa funciono muy bien, tambien me sirvio de base, le hice unas modificaciones para utilizar un teorema ^^ y otras cosas que creo que le hacian falta,
de igual forma muchas gracias
muchas gracias amigo, exelente!!.. sigue con tus publicaciones
oye no jala el programa al moemento de darle run, por el nombre qe le pongo a qe se debe
lo ensayare
function raiz=Biseccion(f,a,b,n)
F=inline(f);
fprintf('METODO DE BISECCION\n');
fprintf('==========================\n');
fprintf('it a b r \n');
fprintf('======================================\n');
if F(a)*F(b)<0;
for i=1:n
r=(a+b)/2;
if F(a)*F(r)<0;
b=r;
else
a=r;
end
pause(0.25);
fprintf('%3.0f %10.6f %10.6f %10.6f\n',i,a,b,r);
end
raiz=r;
else
raiz='intervalo incorrecto';
end
..... Este es mas facil creo yo :3 .....
muy bueno me sirvió de mucho
se puede itroducir cualquier funcion por ejemplo, cosx + e^-x + x^3 -20?
Claro, Intenta de la siguiente manera: cos(x) + exp(-x) + x^3 - 20, el programa lo resolvera siempre y cuando tenga solucion
Publicar un comentario
Deja tus comentarios respecto al contenido de este post