Sei sulla pagina 1di 10

Metodos Numericos

Hua Lun Barrigas


David Gualoto
Departamento de Ciencias Exactas
Nrcs: 4309
Docente Mgs. Fabian Ordo
nez
11 de Mayo de 2015

Trabajo Primer Parcial


1. Conocida la funcion f (x) = x2 + x 23, halle un intervalo [a, b] donde f(a)*f(b)tenga signo
negativo, realice como prueba de escritorio las tres primeras iteraciones y encuentre mediante
el metodo de la biseccion sus races

Prueba de escritorio
Intervalo [3; 5] c1 =
1

3+5
=4
2

f (3) = (3)2 + (3) 23 = 11


f (4) = (4)2 + (4) 23 = 3
f (3) f (4) = 33

Intervalo [4; 5]
4+5
= 4,5
c2 =
2
2
f (4,5) = (4,5) + (4,5) 23 = 1,75
f (4) = (4)2 + (4) 23 = 3
f (4) f (4,5) = 5,25

Intervalo [4; 4,5]


4 + 4,5
c3 =
= 4,25
2
f (4,25) = (4,25)2 + (4,25) 23 = 0,6875
f (4) f (4,25) = 2,0625
Siguiente Intervalo [4,25; 4,5]
C
odigo del programa
function [raiz] = ejer1biseccion(a,b,fx,delta)
%[raiz] = ejer1biseccion(3,5,x.^2+x-23,sqrt(eps))
f=inline(fx);
if((f(a)*f(b))>0)
display (No hay raices)
return
end
iter=0;
while abs(a-b)>delta
if((f(a)*f(b))<0)
c=(a+b)/2;
else f(c)==0
x=c;
return
end

if((f(a)*f(c))<0)
b=c;
else
a=c;
end
iter=iter+1;
end
raiz=c;
end
Ejecuci
on del programa
>> [raiz] = ejer1biseccion(3,5,x.^2+x-23,sqrt(eps))
2

raiz =
4.3218
3. Utilizando el metodo de la biseccion para f (x) =

1
, determine la raz al analizar en el
x1

intervalo [3, 5] y en [0, 4]

Prueba de escritorio
Intervalo [3; 5]
1
= 0,5
f (3) = 31
1
f (5) = 51 = 0,25
f (3) f (5) = 0,125
No existe raz debido a que no hay cambio de signo en el intervalo como lo podemos apreciar
en la grafica
Intervalo [0; 4]
1
= 1
f (0) = 01
1
f (4) = 41 = 0,333
f (0) f (4) = 0,333
El cambio de signo se debe a una asntota en x=1, pero no existe raz en este intervalo y se
puede comprobar mediante la grafica
C
odigo del programa
function [ raiz ] = ejer3(a,b,fx,delta)
f=inline(fx);
if((f(a)*f(b))>0)
display (No hay raices)
return
end
while abs(a-b)>delta
if((f(a)*f(b))<0)
c=(a+b)/2;
else f(c)==0
3

x=c;
return
end
if((f(a)*f(c))<0)
b=c;
else
a=c;
end
end
raiz=c;
end
Ejecuci
on del programa
>> [ raiz ] = ejer3(3,5,(1/(x-1)),sqrt(eps))
No hay raices
5. Por el metodo de la secante, determine las races de la funcion y = x3 5x2 + 3x + 2

Como podemos observar en la grafica utilizaremos los intervalos: [-2;0] y [3;5] que son los
intervalos donde se encuentran las races.
C
odigo del programa
function [raiz ] = ejer4(x0,x1,fx)
x(1)=x0;
x(2)=x1;
f=inline(fx);
n=1;
while abs(x(n+1)-x(n))>=sqrt(eps)
n = n+1;
x(n+1)=x(n)-f(x(n))*(x(n)-x(n-1))/(f(x(n))-f(x(n-1)));
end
raiz=x(n+1);
end
Ejecuci
on del programa
4

>> [raiz ] = ejer4(-2,0,x^3-5*x^2+3*x+2)


raiz =
-0.3914

>> [raiz ] = ejer4(3,5,x^3-5*x^2+3*x+2)


raiz =
4.1642
7. Hallar mediante el metodo de la biseccion, Newton y de la Secante una de las races reales
de la ecuacion f (x) = x2 cos (x) ademas, determine en cada metodo el n
umero de
iteraciones utilizadas, el tiempo, el error absoluto y presente los valores en una tabla
comparativa

Con ayuda de la grafica sabemos que la raiz se encuentra entre el intervalo [0;2] el cual
usaremos.

M
etodo de Bisecci
on
C
odigo del programa
function [tiempo iter raiz] = ejer7biseccion(a,b,fx,delta)
%[tiempo iter raiz] = ejer7biseccion(0,2,(x.^2)-pi*cos(x),sqrt(eps))
f=inline(fx);
if((f(a)*f(b))>0)
display (No hay raices)
return
end
tic
iter=0;
while abs(a-b)>delta
if((f(a)*f(b))<0)
5

c=(a+b)/2;
else f(c)==0
x=c;
return
end

if((f(a)*f(c))<0)
b=c;
else
a=c;
end
iter=iter+1;
end
raiz=c;
tiempo=toc;
end
Ejecuci
on del programa
>> [tiempo iter raiz] = ejer7biseccion(0,2,(x.^2)-pi*cos(x),sqrt(eps))
tiempo =
0.037689609047867

iter =
27

raiz =
1.142395988106728

M
etodo de Newton
C
odigo del programa
function [ n tiempo raiz ] = ejer7newton(x0,fx,gx)
%[ n tiempo raiz ] = ejer7newton(1,(x.^2)-pi*cos(x),2*x+pi*sin(x))
f=inline(fx);
g=inline(gx);
tic
n=1;
if(gx==0)
display (No hay raices)
6

return
end

x(1)=x0;
x(2)=x(1)-f(x(1))/g(x(1));
while abs(x(n+1)-x(n))>sqrt(eps)
n=n+1;
x(n+1)=x(n)-f(x(n))/g(x(n));
end
raiz=x(n+1);
tiempo=toc;
end
Ejecuci
on del programa
>> [ n tiempo raiz ] = ejer7newton(1,(x.^2)-pi*cos(x),2*x+pi*sin(x))
n =
4

tiempo =
0.004256582008265

raiz =
1.142395986171875

M
etodo de la Secante
C
odigo del programa
function [n,tiempo,raiz ] = ejer7Secante(x0,x1,fx)
%[ n,tiempo,raiz ] = ejer7Secante(1,2,(x.^2)-pi*cos(x))
x(1)=x0;
x(2)=x1;
f=inline(fx);
tic
n=1;
while abs(x(n+1)-x(n))>=sqrt(eps)
n = n+1;
x(n+1)=x(n)-f(x(n))*(x(n)-x(n-1))/(f(x(n))-f(x(n-1)));
end
raiz=x(n+1);
tiempo=toc;
end
7

Ejecuci
on del programa
>> [ n,tiempo,raiz ] = ejer7Secante(1,2,(x.^2)-pi*cos(x))
n =
7

tiempo =
0.010088963162648

raiz =
1.142395986171875

Tabla comparativa
Para el error absoluto se trabajo con 10 decimales y con un valor real de raiz=1.1423959862
M
etodo
Raiz
Biseccion 1.1423959881
Newton 1.1423959862
Secante 1.1423959862

Tiempo (s)
0.03769
0.00426
0.01009

Iteraciones
27
4
7

Error absoluto
1,9x109
0
0

9. Aplicar el metodo de Newton para calcular los cortes entre las funciones f (x) = ex y
g (x) = x + 2

Para encontrar donde se cortan las dos funciones se igualas f (x) = g (x) = 0 obteniendo h (x)
f (x) = ex
;
g (x) = x + 2
f (x) = g (x)
ex = x + 2
0 = ex x 2
h (x) = ex x 2
8

C
odigo del programa
function [ raiz ] = ejer9newton(x0,hx,jx)
%[ raiz ] = ejer9newton(0,exp(-x)-x-2,-exp(-x)-1)
f=inline(hx);
g=inline(jx);
n=1;
if(jx==0)
display (No hay raices)
return
end

x(1)=x0;
x(2)=x(1)-f(x(1))/g(x(1));
while abs(x(n+1)-x(n))>sqrt(eps)
n=n+1;
x(n+1)=x(n)-f(x(n))/g(x(n));
end
raiz=x(n+1);
end
Ejecuci
on del programa
>> [ raiz ] = ejer9newton(0,exp(-x)-x-2,-exp(-x)-1)
raiz =
-0.4429
1
11. En la funcion f (x) = x 3 . Se puede aplicar el metodo de Newton para localizar sus races?
Justifique su respuesta

Como podemos observar en el grafico de la funcion antes mencionada no se puede aplicar el


metodo de Newton ya que por las tangentes en cualquier punto va a generar una oscilacion de
izquierda a derecha sin convergencia alguna a la verdadera raiz.
C
odigo del programa
function [ raiz ] = ejer11newton(x0,fx,gx)
%[ raiz ] = ejer11newton(1,x.^(1/3),(1/3)*x.^(-2/3))
f=inline(fx);
g=inline(gx);
n=1;
if(gx==0)
display (No hay raices)
return
end

x(1)=x0;
x(2)=x(1)-f(x(1))/g(x(1));
while abs(x(n+1)-x(n))>sqrt(eps)
n=n+1;
x(n+1)=x(n)-f(x(n))/g(x(n));
end
raiz=x(n+1);
end
Ejecuci
on del programa
>> [ raiz ] = ejer11newton(1,x.^(1/3),(1/3)*x.^(-2/3))
raiz =
NaN -3.7838e+294i

10

Potrebbero piacerti anche