You are on page 1of 20

ESCUELA POLITECNICA DEL EJERCITO CARRERA DE INGENIERIA MECANICA

METODOS NUMERICOS DEBER 1 JOSE LUIS DE LA TORRE


1

1. En los casos siguientes, aplicar el mtodo de Newton con la estimacin inicial propuesta, y explicar por qu falla el mtodo.

y = 2 x3 6 x2 + 6 x 1

x =1

y = 4 x 3 12 x 2 + 12 x 3 x = 3 2 y = x 3 + 3x 2 x + 1 x =1 y = 3 x 1 x=2
clc %borrar pantalla clear all %Borra todas las variables cradas anteriormente syms x % Declaracin de variables disp(' ESCUELA POLITCNICA DEL EJRCITO'); %Impresin de texto disp(''); disp(''); disp(' RESOLUCIN DE ECUACIONES NO LINEALES'); disp(''); disp(''); disp(''); disp('INTEGRANTES: Jose Luis De La Torre Moreno'); disp(' '); disp('CURSO: Sexto Mecanica'); disp('MATERIA: MTODOS NUMRICOS'); disp(''); disp(''); disp(''); disp('MTODO DE NEWTON-RAPHSON'); y=input('Funcin: y ='); %lee la entrada y alamcena en y dy=input('derivada de y=');%lee la entrada dy alamcena en dy absc=-10:.001:10; %Rango inferior y superior con incrementos de 0.01 figure(1) %Crea una ventana para desplegar una figura 1 plot(absc,subs(y,x,absc)); %Grafica x e y grid on %Activar la cuadricula del plano xlabel('x'); %Poner las etiqueta en el eje x ylabel('f(x)'); %Poner las etiqueta en el eje y e=0.000001; k=0; disp(''); disp(''); disp('DATOS'); a=input('Valor inicial Xo= '); b=input('Nmero de iteraciones:'); fa=subs(y,x,a); %Evalua la funcin con a fb=subs(dy,x,a); %Evalua la derivada de la funcin con a int i; double xsol; i = 1; while (i<= b) xsol= a - (subs(y,x,a)/subs(dy,x,a)); i= i+1; a= xsol;

end disp(''); disp(''); disp('la raiz es:'); disp(a); d=-5:.001:5; figure(2) plot(d,subs(y,x,d)); hold on %Mantener la figura en la misma pantalla plot(a,subs(y,x,a),'*r') %Grafique la raiz de la ecuacin title('MTODO DE NEWTON'); %Titulo en la grfica xlabel('x'); ylabel('f(x)'); grid on;

Caso 1: ANALISIS: El metodo de Newton no es valido para esta ecuacion debido a que con este valor de x=1 la derivada de la funcion se hace cero lo que crea una indeterminacion. Caso 2: ANALISIS: Como en el anterior caso cuando x=1 la derivada se anuna, lo mismo va a pasra cuando x=3/2, la deriva es cero. Sin embargo, eso no significa que el mtodo en si sea malo para hallar el cero de esta funcin, solo que el dato inicial no es el adecuado. Caso 3: ANALISIS: Con el dato inicial la sucesin que se obtiene es de 0 y 1 alternante, con lo que nunca converger a ningn valor. Intuimos con este ejemplo que no deben darse condiciones oscilantes en el entorno que f(x) tomemos para comenzar la construccin de la sucesin recurrente, sino que debe ser montona en cierto sentido hacia el cero de la funcin f.

Caso 4: ANALISIS: El pico que, entorno a x=1,formalagrafica dela funcin ,unido ala obvia raz que tiene, es una mala condicin para poder apoyarnos en el uso de rectas tangentes. Toda la regularidad que necesitamos, aqu falta, tras acercarse inicialmente, cambia de signo, lo alterna, y se va alejando

2. La ecuacin ex-3x=0 tiene raz a r=0,61906129. Comenzando con el intervalo [0,1], realizar seis interacciones por el Mtodo de biseccin para encontrar la raz aproximada. Cuntos decimales significativos tiene dicha aproximacin?. Cuntas interacciones son necesarias para que la raz obtenida tenga un error menor que 10-4? function r=bisecc(a,b,e,d,m,f) g=inline(f) u=g(a); v=g(b); if sign(a) == sign(b) 'ingrese otro intervalo' end for i=1:m c=((a+b)/2); w=g(c); if abs(w)<=e || abs(b-a)<=d r=c if sign(u) ~= sign(w) b=c; v=w; else a=c; u=w; end end end

3. Sabiendo que existe una raz de la ecuacin x3+x=6 entre 1,55 y 1,75 Cuntas interacciones son necesarias hasta obtener mediante el mtodo de biseccin, un intervalo de amplitud menor o igual que 10-3 que contenga a la raz?. Calcular todas la interacciones necesarias. clc %borrar pantalla clear all %Borra todas las variables cradas anteriormente syms x % Declaracin de variables disp(' ESCUELA POLITCNICA DEL EJRCITO'); %Impresin de texto disp(''); disp(''); disp(' RESOLUCIN DE ECUACIONES NO LINEALES'); disp(''); disp(''); disp(''); disp('INTEGRANTES: Jose Luis De La Torre Moreno'); disp(' '); disp('CURSO: Sexto Mecanica'); disp('MATERIA: MTODOS NUMRICOS'); disp(''); disp(''); disp(''); disp('MTODO DE NEWTON-RAPHSON'); y=input('Funcin: y ='); %lee la entrada y alamcena en y dy=input('derivada de y=');%lee la entrada dy alamcena en dy absc=-10:.001:10; %Rango inferior y superior con incrementos de 0.01 figure(1) %Crea una ventana para desplegar una figura 1 plot(absc,subs(y,x,absc)); %Grafica x e y grid on %Activar la cuadricula del plano xlabel('x'); %Poner las etiqueta en el eje x ylabel('f(x)'); %Poner las etiqueta en el eje y e=0.000001; k=0; disp(''); disp(''); disp('DATOS'); a=input('Valor inicial Xo= '); b=input('Nmero de iteraciones:'); fa=subs(y,x,a); %Evalua la funcin con a fb=subs(dy,x,a); %Evalua la derivada de la funcin con a int i; double xsol; i = 1; while (i<= b) xsol= a - (subs(y,x,a)/subs(dy,x,a)); i= i+1; a= xsol; end disp(''); disp(''); disp('la raiz es:'); disp(a); d=-5:.001:5;

figure(2) plot(d,subs(y,x,d)); hold on %Mantener la figura en la misma pantalla plot(a,subs(y,x,a),'*r') %Grafique la raiz de la ecuacin title('MTODO DE NEWTON'); %Titulo en la grfica xlabel('x'); ylabel('f(x)'); grid on;

ANALISIS: Se pudo observar que el intervalo escogido fue el correcto debido a que no hubo interferencias en el proceso as mismo se obtuvo 11 interacciones para llegar a la raz.

4. Considere la funcin f(x) = cosh(x), con = 1,2,3. Encuentre un intervalo que contenga un cero de f para cada valor de y calcule dicho cero con el mtodo de la biseccin. clc clear all disp(Bisecci on)

disp(Funci on cosh(x)-cos(x)-y) syms x nro = input(Ingrese un n umero y: ); switch nro case 1, disp(N umero Ingresado 1) f=cos(x).*cosh(x)+nro; case 2, disp(N umero Ingresado 2) f=cos(x).*cosh(x)+nro; case 3, disp(N umero Ingresado 3) f=cos(x).*cosh(x)+nro; otherwise, disp(El n umero es mayor que 3) end f fun=inline(f); fun e=0.0000001; k=0; ezplot(fun,[0 20 -20 20]) %cuadricula grid on h=input(Valor inferior: ); b=input(Valor superior: ); fa=feval(fun,h); fb=feval(fun,b); if (fa*fb>0) disp(La funci on deben tener signo distinto) return else incr=b-h; while incr>e c=(h+b)/2; fc=feval(fun,c); if fc==0 h=c; b=c; else if (fa*fc)<0 b=c; fb=fc; else h=c; fa=fc; end incr=b-h; k=k+1; end end r=feval(fun,c); end disp(Ra z de la Funci on: x* = ) disp(N umero de iteraciones: ) k disp(Residuo) r

ANALISIS: Se pudo observar que luego de haber hecho 11 interacciones se llego a un error muy bajo lo que nos hace presumir que el intervalo en el mas optimo. 5. Un objeto esta situado en un plano cuya pendiente varia a una tasa constante . La posicin del objeto, al instante t, esta dada por la formula.

donde g = 9,8 m/s2, es la aceleracin de la gravedad. Asumiendo que el objeto se ha desplazado 1 metro en 1 segundo, calcule el valor de , usando el metodo de la biseccion, con una tolerancia de 105. Cu antas iteraciones se requieren para alcanzar la tolerancia indicada? function posiciontiempo clc clear all disp('Bisecci ?on') disp('Funcion cosh(x)-cos(x)-y') syms w f=(9.8/(2.*w^2)).*(sinh(w)-sin(w)) f fun=inline(f); fun e=10^(-5); k=0; ezplot(fun,[-3 5 -15 15]) %cuadricula grid on a=input('Valor inferior: '); b=input('Valor superior: '); fa=feval(fun,a); fb=feval(fun,b); if (fa*fb>0) disp('La funci ?on deben tener signo distinto') return else

incr=b-a; while incr>e c=(a+b)/2; fc=feval(fun,c); if fc==0 a=c; b=c; else if (fa*fc)<0 b=c; fb=fc; else a=c; fa=fc; end incr=b-a; k=k+1; end end r=feval(fun,c); end disp('Ra ??z de la Funci ?on: x* = ') disp('N ?umero de iteraciones: ') k disp('Residuo') r

6. Escriba e implemente un programa en matlab para calcular la raz cuadrada de un numero positivo a, basado en el mtodo de Newton. clc clear all disp(Raiz cuadrada de un Pumero) a=input( Ingrese el numero que desea sacar la raiz: ); x=0.0001; z = 9999; while abs(x-z)>0.000001

z=x; x= (1/2)*(x+(a/x)); end; disp(La raiz cuadrada es:?) x

7. Un proyectil es lanzado con velocidad inicial v y un ngulo o en un tnel de altura h. El proyectil llega a su alcance mximo cuando es tal que sin() = donde g = 9, 8 m/s2 es la aceleracin de la gravedad. Calcule usando el mtodo de Newton, asumiendo que v0 = 10 m/s y h1 m. clc clear all syms x; tol=0.000001; f=asin(0.4429446918)-x fun=inline(f); ezplot(fun,[-5 5 -20 70]) grid on x0=input(Ingrese el valor m ?as cercano a la raz: ); i=1; fx(i)=x0; f1=subs(f,x,fx(i)); z=diff(f); d=subs(z,x,fx(i)); ea(1)=100; while abs(ea(i))>=tol; fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1)); ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100); i=i+1; end fprintf(i fx(i) Error aprox (i) \n); for j=1:i; fprintf(%2d \t %11.7f \t %7.3f \n?,j-1,fx(j),ea(j)); end

10

8. Encontrar mediante el mtodo de la biseccin las races de la ecuacin

en el intervalo [0, /2] con una tolerancia de 104 clc clear all disp(Biseccion) disp(Funcion sqrt(3) * sin(x) - cos(x)) syms x f=sqrt(3) * sin(x) - cos(x) fun=inline(f); fun e=10^-4; k=0; ezplot(fun,[-pi/2 pi -3 3]) %cuadricula grid on a=input(Valor inferior: ); b=input(Valor superior: ); fa=feval(fun,a); fb=feval(fun,b); if (fa*fb>0) disp(La funcion deben tener signo distinto) return else incr=b-a; while incr>e c=(a+b)/2; fc=feval(fun,c); if fc==0 a=c; b=c; else if (fa*fc)<0 b=c;

11

fb=fc; else a=c; fa=fc; end incr=b-a; k=k+1;

9. Aplicar el mtodo de Newton para calcular las races reales del polinomio

clc %borrar pantalla clear all %Borra todas las variables cradas anteriormente syms x % Declaracin de variables disp(' ESCUELA POLITCNICA DEL EJRCITO'); %Impresin de texto disp(''); disp(''); disp(' RESOLUCIN DE ECUACIONES NO LINEALES'); disp(''); disp(''); disp(''); disp('INTEGRANTES: Jose Luis De La Torre Moreno'); disp(' '); disp('CURSO: Sexto Mecanica'); disp('MATERIA: MTODOS NUMRICOS'); disp(''); disp(''); disp(''); disp('MTODO DE NEWTON-RAPHSON'); y=input('Funcin: y ='); %lee la entrada y alamcena en y dy=input('derivada de y=');%lee la entrada dy alamcena en dy absc=-10:.001:10; %Rango inferior y superior con incrementos de 0.01 figure(1) %Crea una ventana para desplegar una figura 1 plot(absc,subs(y,x,absc)); %Grafica x e y

12

grid on %Activar la cuadricula del plano xlabel('x'); %Poner las etiqueta en el eje x ylabel('f(x)'); %Poner las etiqueta en el eje y e=0.000001; k=0; disp(''); disp(''); disp('DATOS'); a=input('Valor inicial Xo= '); b=input('Nmero de iteraciones:'); fa=subs(y,x,a); %Evalua la funcin con a fb=subs(dy,x,a); %Evalua la derivada de la funcin con a int i; double xsol; i = 1; while (i<= b) xsol= a - (subs(y,x,a)/subs(dy,x,a)); i= i+1; a= xsol; end disp(''); disp(''); disp('la raiz es:'); disp(a); d=-5:.001:5; figure(2) plot(d,subs(y,x,d)); hold on %Mantener la figura en la misma pantalla plot(a,subs(y,x,a),'*r') %Grafique la raiz de la ecuacin title('MTODO DE NEWTON'); %Titulo en la grfica xlabel('x'); ylabel('f(x)'); grid on;

13

10. Hallar mediante el mtodo de Newton las races reales de la ecuacin

clc clear all disp(Newton-Raphson) syms x y=x^2+10*cos(x); y1=2*x+10*sin(x); figure(1) fun=inline(y); dfun=inline(y1); %cuando se utilice inline ezplot(fun,[-10,10]) %cuadricula grid on a=input(?Punto inicial (Xi): ?) fx=feval(fun,a); dfx=feval(dfun,a); e=0.00001; k=0; b=a-(fx/dfx); while (abs(b-a)>e) a=b; fx=feval(fun,a); dfx=feval(dfun,a); b=a-(fx/dfx); k=k+1; end disp(la raiz es: ) b %disp(Eln numero de interaccioneses: ); k; r=feval(fun,b); %disp(?El residuo es: ?); r;

14

11. Calcular por el mtodo de Newton la raz de la siguiente ecuacin no lineal

clc clear all syms x; tol=0.000001; f=x^2-2*x*exp(-x)+exp(-2*x) fun=inline(f); ezplot(fun,[-5 5 -20 70]) grid on x0=input(?Valor cercano a la raiz: ?); i=1; fx(i)=x0; f1=subs(f,x,fx(i)); z=diff(f); d=subs(z,x,fx(i)); ea(1)=100; while abs(ea(i))>=tol; fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1)); ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100); i=i+1; end fprintf(?i fx(i) Error aprox (i) \n?); for j=1:i; fprintf(?%2d \t %11.7f \t %7.3f \n?,j-1,fx(j),ea(j)); end

15

12. Aplicar el mtodo de Newton para calcular el inverso de un numero no nulo. Calcular el inverso de los nmeros: 8,-0,5 y 1000. clc clear all x=0.0001; a=8; z= 9999; disp(inverso de 8) while abs(x-z)>0.000001 z=x; x =2*x-x^2*a; end x disp(inverso de -0,5) x=-0.0001; a=-0.5; z= 9999; while abs(x-z)>0.000001 z=x; x=2*x-x^2*a; end x disp(inverso de 1) x=0.00001; a=1000; z= 9999; while abs(x-z)>0.000001 z=x; x=2*x-x^2*a; end x

16

13. Aplicar el mtodo de Newton para calcular la raz cuadrada de un numero positivo. Calcular la raz cuadrada de los nmeros: 9 y 100.

17

14. Aplicar el mtodo de Newton para calcular la raz quinta de un numero positivo. Calcular la raz quinta de los nmeros: 32 y 100000. clc clear all disp(Raz Quinta de 32) x=0.0001; a=32; xi= 9999; while abs(x-xi)>0.0000001 xi=x; x=(1/5)*(4*x+(a/x^4)); end x disp(Ra z Quinta de 10^5) x=0.0001; a=10^ 5; xi= 9999; while abs(x-xi)>0.000001 xi=x; x=(1/5)*(4*x+(a/x^4)); end x 15. Aplicar el mtodo de Newton para calcular el logaritmo de un numero positivo. Calcular el logaritmo de los nmeros: 4, 100 y 5 106. clc clear all disp( log 4) x=0.5; a=4; xi= 9999; while abs(x-xi)>0.00001 xi=x; x=x-(((10^x)-a)/((10^x)*log(x))); end x disp(log 100) x=3; a=100; xi= 9999; while abs(x-xi)>0.00001 xi=x; x=x-(((10^x)-a)/((10^x)*log(x))); end x disp( log 510^-6) x=0.5; a=510^-6; xi= 9999; while abs(x-xi)>0.00001 xi=x; x=x-(((10^x)-a)/((10^x)*log(x))); end x

18

16. La funcin f (x) = ex2 (x 10)5 tiene una multiplicidad m = 5 en x = 10. Escribir en Matlab un programa general del metodo de Newton para encontrar raices en el que el usuario puede escoger el test de parada. Se consideran las condiciones de parada siguientes: a) Sobre el error |xk+1 xk| 1 b) Sobre el valor absoluto de la funci on |f(xk) 2| c) Las dos condiciones anteriores Todas las opciones de parada debern incluir el test de parada sobre el numero de iteraciones permitidas. Aplicar el mtodo de Newton para calcular la raz de la funcion dada, considerando los diferentes tests de parada con valor inicial x0 = 3 y con una tolerancia de 1 =2 =106 clc clear all syms x f=(exp(x^2))*(x-10)^5 fun=inline(f); ezplot(fun,[-100 100 -100 100]) grid on x=0.0001; a=9; z = 9999; nro = input(Test de parada: ); switch nro case 1, disp(Valor ingresado: 1) x0=input(Valor inicial: ); while abs(x-z)>abs(x-x0) z=x; x= (1/2)*(x+(a/x)); end; x case 2, disp(Valor ingresado: 2) x0=input(Valor inicial: ); x=abs(x+x0); while abs(x-z)>feval(fun,x) z=x; x= (1/2)*(x+(a/x));

19

end; x case 3, disp(Valor ingresado: 3) while abs(x-z)>abs(x-x0) & abs(x-z)>feval(fun,x) z=x; x= (1/2)*(x+(a/x)); end; x otherwise, disp(El n umero es mayor que: 3) end

20

You might also like