Vous êtes sur la page 1sur 8

BISECCIÓN

1) Buscar una función y =f(x) que le corresponda según la tabla anterior, la cual tenga por
lo menos un cero en un determinado intervalo I.

f ( x )= √7+ x−x

a) Grafíquela para ubicar el cero o ceros de f en el intervalo I

clc

clear

>> x=(-7:0.001:15);

>> y1=sqrt(7+x);

>> y2=x;

>> plot(x,y1,'r','linewidth',2)

hold on

plot(x,y2,'c','linewidth',2)

hold of

grid on

a) Aplique el programa de bisección que está en el campus para encontrar un valor


aproximado de un cero de f. Si hubieran varios ceros de f en I, aplique bisección
para encontrar un valor aproximado del mayor cero de f. Considere tolerancia =
10^(-6).

function [c] = bisec(f,a,b,tol)


%DATOS
% f es la funci?n a la que se le va a aplicar bisecci?n y es
introducida
% como una cadena de caracteres 'f'
% a y b son los extremos del intervalo
% tol es la tolerancia para el error
%RESULTADOS
k=0;
ya=feval(f,a);
yb=feval(f,b);
if ya*yb<0
while abs(a-b)>tol
c = (a+b)/2;
yc=feval(f,c);
fprintf('%5d%15.11f%15.11f%15.11f%15.11f\n',k,a,b,c,yc);
k=k+1;
if ya*yc==0
a=b;
elseif ya*yc<0
b=c;yb=yc;
else
a=c;ya=yc;
end
end
else
fprintf('Cambiar limites');
end

function y=bisec1(x)
y=sqrt(7+x)-x;
end

format long

>> a=0

a=

>> b=5

b=

5
>> tol=10.^-6

tol =

1.000000000000000e-06

>> bisec1('f',a,b,tol)

0 0.00000000000 5.00000000000 2.50000000000 3.41629073187

1 0.00000000000 2.50000000000 1.25000000000 1.47314355131

2 0.00000000000 1.25000000000 0.62500000000 0.15499637075

3 0.00000000000 0.62500000000 0.31250000000 -0.85065080981

4 0.31250000000 0.62500000000 0.46875000000 -0.28893570170

5 0.46875000000 0.62500000000 0.54687500000 -0.05666002187

6 0.54687500000 0.62500000000 0.58593750000 0.05139534962

7 0.54687500000 0.58593750000 0.56640625000 -0.00203745206

8 0.56640625000 0.58593750000 0.57617187500 0.02482260630

9 0.56640625000 0.57617187500 0.57128906250 0.01142910413

10 0.56640625000 0.57128906250 0.56884765625 0.00470503609

11 0.56640625000 0.56884765625 0.56762695313 0.00133610443

12 0.56640625000 0.56762695313 0.56701660156 -0.00035009447

13 0.56701660156 0.56762695313 0.56732177734 0.00049314966

14 0.56701660156 0.56732177734 0.56716918945 0.00007156379

15 0.56701660156 0.56716918945 0.56709289551 -0.00013925629

16 0.56709289551 0.56716918945 0.56713104248 -0.00003384399

17 0.56713104248 0.56716918945 0.56715011597 0.00001886046

18 0.56713104248 0.56715011597 0.56714057922 -0.00000749162

19 0.56714057922 0.56715011597 0.56714534760 0.00000568446

20 0.56714057922 0.56714534760 0.56714296341 -0.00000090358

21 0.56714296341 0.56714534760 0.56714415550 0.00000239044

22 0.56714296341 0.56714415550 0.56714355946 0.00000074343


ans =

0.567143559455872

NEWTON

2) Buscar una función y =f(x) que le corresponda según la tabla anterior, la cual tenga por
lo menos un cero en un determinado intervalo I.
a) Grafíquela para ubicar el cero o ceros de f en el intervalo I
f ( x )= √ x + x

>> x=(0:0.0001:15);

>> y1=sqrt(x);

>> y2=-x;

>> plot(x,y1,'r','linewidth',2)

hold on

plot(x,y2,'c','linewidth',2)

hold of

grid on
b) Aplique el programa de newton que está en el campus para encontrar un valor
aproximado de un cero de f. Considere
tol= 10^(-7) , un número máximo de iteraciones N=100
y con respecto al punto inicial p0, escoja tres puntos iniciales distintos.
Debe correr el programa de newton 3 veces, cambiando los puntos iniciales
p0.

function [p1]= newton(f,df,p0,tol,N)


% DATOS
% f es la funcion introducida como una
% cadena de caracteres 'f' dos veces diferenciable
% df es la derivada de f, introducida como una
% cadena de caracteres 'df'
% p0 es la aproximacion inicial a un cero de f
% tol es la tolerancia
% N es el numero maximo de iteraciones
% RESULTADOS
% p1 es la aproximacion final al cero de f
for k=1:N
p1 = p0 - feval(f,p0)/feval(df,p0);
fprintf('%7d %15.12f\n ',k,p1);
if abs(p1-p0) < tol, break
end
p0=p1;
end

function y=newton(x)
y=sqrt(1./x)+x;
end

function y=newton(x)
y=-1./(2.*sqrt(x))+1;
end

>> newton('f','df',0.5,tol,N)
1 -6.035533905933
2 -0.319604270146
3 -0.972376704702
4 -0.153944375345
5 -0.316178202002
6 -0.975140829734
7 -0.153371014848
8 -0.312638421798
9 -0.977966292560
10 -0.152805436950
11 -0.308979998571
12 -0.980855169915
13 -0.152248505178
14 -0.305197764087
15 -0.983809619394
16 -0.151701148188
17 -0.301286303149
18 -0.986831881789
19 -0.151164364651
20 -0.297239944040
21 -0.989924283261
22 -0.150639228489
23 -0.293052749266
24 -0.993089237313
25 -0.150126894495
26 -0.288718506755
27 -0.996329246489
28 -0.149628604352
29 -0.284230721730
30 -0.999646903722
31 -0.149145693082
32 -0.279582609514
33 -1.003044893249
34 -0.148679595932
35 -0.274767089554
36 -1.006525990976
37 -0.148231855729
38 -0.269776781054
39 -1.010093064184
40 -0.147804130714
41 -0.264604000629
42 -1.013749070421
43 -0.147398202871
44 -0.259240762508
45 -1.017497055408
46 -0.147015986764
47 -0.253678781885
48 -1.021340149771
49 -0.146659538872
50 -0.247909482138
51 -1.025281564369
52 -0.146331067444
53 -0.241924006746
54 -1.029324583948
55 -0.146032942828
56 -0.235713236865
57 -1.033472558819
58 -0.145767708280
59 -0.229267815707
60 -1.037728894215
61 -0.145538091182
62 -0.222578180990
63 -1.042097036926
64 -0.145347014629
65 -0.215634606951
66 -1.046580458757
67 -0.145197609293
68 -0.208427257595
69 -1.051182636293
70 -0.145093225447
71 -0.200946253068
72 -1.055907026406
73 -0.145037445009
74 -0.193181751264
75 -1.060757036846
76 -0.145034093404
77 -0.185124046989
78 -1.065735991218
79 -0.145087251028
80 -0.176763691207
81 -1.070847087560
82 -0.145201263990
83 -0.168091633086
84 -1.076093349674
85 -0.145380753802
86 -0.159099387657
87 -1.081477570327
88 -0.145630625556
89 -0.149779231982
90 -1.087002245370
91 -0.145956074079
92 -0.140124432643
93 -1.092669497833
94 -0.146362587456
95 -0.130129507150
96 -1.098480991047
97 -0.146855947181
98 -0.119790521432
99 -1.104437829914
100 -0.147442224141

ans =

-0.147442224141209 - 0.448440658752259iclc
>> newton('f','df',80,tol,N)
1 -3.340273219431
2 -0.294098994707
3 -0.129347329409
4 1.129033900620
5 0.492876960862
6 0.641355441777
7 0.564307915073
8 0.567138763408
9 0.567143290398
10 0.567143290410

ans =

0.567143290409784 + 0.000000000000000i
clc
>> newton('f','df',5,tol,N)
1 -0.507864927028
2 -1.731158077925
3 0.283434013057
4 0.615977917078
5 0.748515021458
6 0.593169593525
7 0.570065857776
8 0.567142180017
9 0.567143290449
10 0.567143290410

ans =

0.567143290409784 - 0.000000000000000i

>>
c) Analice la convergencia de cada una de las tres sucesiones obtenidas en el
ítem b). Compárelas con el resultado esperado según el gráfico.

Se observa que en todos los puntos semillas se obtiene la misma respuesta.