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

   
Vista:

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

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

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 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
jjcc94@hotmail.com
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 katherine.mtj@hotmail.com (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