Matlab - Duda con mi código del método de Bisección

 
Vista:
sin imagen de perfil

Duda con mi código del método de Bisección

Publicado por Miguel (1 intervención) el 20/05/2014 01:16:40
Disculpen tengo una duda con mi código cuando trato de evaluar en una función simple se repiten los pasos y no cambian los datos. aquí el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
clc;
fun=input('Introduzca la funcion: F(x)=','s');
i=input('Introduzca el número de iteraciones : ');
a=input('Introduzca a : ');
b=input('Introduzca b : ');
e=input('Introduzca la tolerancia : ');
n=1;
f=inline(fun);
fprintf('\n %6s %7s %8s %10s %8s %8s %8s \n ','A','B','C','F(a)','F(b)','F(c)','|c-a|');
while n<=i
    c=(a+b)/2;
     fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f \n',a,b,c,f(a),f(b),f(c),abs(c-a));
    if f(c)==0
        fprintf('La raiz exacta es: \n %8.4f \n',c);
        break;
    elseif (b-a)/(2^n)<e
        fprintf('La raiz aproximada es: \n %8.4f \n',c);
        break;
    elseif f(a)*f(c)<=0
        c=b;
    else
        c=a;
    end
n=n+1;
end


Los resultados en matlab:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Introduzca la funcion: F(x)=x^3-x^2+x-6
Introduzca el número de iteraciones : 5
Introduzca a : -1
Introduzca b : 3
Introduzca la tolerancia : 0.005
 
      A       B        C       F(a)     F(b)     F(c)    |c-a|
 
  -1.0000   3.0000   1.0000  -9.0000  15.0000  -5.0000   2.0000
 
  -1.0000   3.0000   1.0000  -9.0000  15.0000  -5.0000   2.0000
 
  -1.0000   3.0000   1.0000  -9.0000  15.0000  -5.0000   2.0000
 
  -1.0000   3.0000   1.0000  -9.0000  15.0000  -5.0000   2.0000
 
  -1.0000   3.0000   1.0000  -9.0000  15.0000  -5.0000   2.0000
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda con mi código del método de Bisección

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 22/05/2014 02:16:25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
clc;
clear all
fun=input('Introduzca la funcion: f(x)=','s');
i=input('Introduzca el número de iteraciones : ');
a=input('Introduzca a : ');
b=input('Introduzca b : ');
e=input('Introduzca la tolerancia : ');
n=1;
f=inline(fun);
fprintf('\n %6s %7s %8s %10s %8s %8s %8s \n ','a','b','c','f(a)','f(b)','f(c)','|c-a|');
while n<=i
    c=(a+b)/2;
     fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f \n',a,b,c,f(a),f(b),f(c),abs(c-a));
    if f(c)==0
        fprintf('La raiz exacta es: \n %8.4f \n',c);
        break;
    elseif (b-a)/(2^n)<e
        fprintf('La raiz aproximada es: \n %8.4f \n',c);
        break;
    elseif f(a)*f(c)<0
        b=c;
    else
        a=c;
    end
n=n+1;
end



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
>> biseccionforo
Introduzca la funcion: f(x)=x^3-x^2+x-6
Introduzca el número de iteraciones : 30
Introduzca a : -4
Introduzca b : 6
Introduzca la tolerancia : 0.00001
 
      a       b        c       f(a)     f(b)     f(c)    |c-a|
 
  -4.0000   6.0000   1.0000 -90.0000 180.0000  -5.0000   5.0000
 
   1.0000   6.0000   3.5000  -5.0000 180.0000  28.1250   2.5000
 
   1.0000   3.5000   2.2500  -5.0000  28.1250   2.5781   1.2500
 
   1.0000   2.2500   1.6250  -5.0000   2.5781  -2.7246   0.6250
 
   1.6250   2.2500   1.9375  -2.7246   2.5781  -0.5432   0.3125
 
   1.9375   2.2500   2.0938  -0.5432   2.5781   0.8885   0.1563
 
   1.9375   2.0938   2.0156  -0.5432   0.8885   0.1418   0.0781
 
   1.9375   2.0156   1.9766  -0.5432   0.1418  -0.2082   0.0391
 
   1.9766   2.0156   1.9961  -0.2082   0.1418  -0.0351   0.0195
 
   1.9961   2.0156   2.0059  -0.0351   0.1418   0.0529   0.0098
 
   1.9961   2.0059   2.0010  -0.0351   0.0529   0.0088   0.0049
La raiz aproximada es:
   2.0010






Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado usuario de Matlab, El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda con mi código del método de Bisección

Publicado por MAYTE (1 intervención) el 21/06/2014 01:03:16
muy buena ayuda gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar