deber 1

20
1 ESCUELA POLITECNICA DEL EJERCITO CARRERA DE INGENIERIA MECANICA METODOS NUMERICOS DEBER 1 JOSE LUIS DE LA TORRE

Upload: jose-de-la-torre

Post on 05-Dec-2014

186 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Deber 1

1  

   

   

ESCUELA POLITECNICA DEL EJERCITO

CARRERA DE INGENIERIA MECANICA

 

 

METODOS NUMERICOS DEBER 1

JOSE LUIS DE LA TORRE

   

Page 2: Deber 1

2  

1. En los casos siguientes, aplicar el método de Newton con la estimación inicial propuesta, y explicar por qué falla el método.

                                       

y = 2x3 − 6x2 + 6x −1y = 4x3 −12x2 +12x −3y = −x3 +3x2 − x +1

y = x −13

 

x =1

x = 32

x =1x = 2

clc %borrar pantalla clear all %Borra todas las variables cradas anteriormente syms x % DeclaraciÛn de variables disp(' ESCUELA POLIT…CNICA DEL EJ…RCITO'); %ImpresiÛn de texto disp(''); disp(''); disp(' RESOLUCI”N DE ECUACIONES NO LINEALES'); disp(''); disp(''); disp(''); disp('INTEGRANTES: Jose Luis De La Torre Moreno'); disp(' '); disp('CURSO: Sexto Mecanica'); disp('MATERIA: M…TODOS NUM…RICOS'); disp(''); disp(''); disp(''); disp('M…TODO DE NEWTON-RAPHSON'); y=input('FunciÛn: 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('N˙mero de iteraciones:'); fa=subs(y,x,a); %Evalua la funciÛn con a fb=subs(dy,x,a); %Evalua la derivada de la funciÛn 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;

Page 3: Deber 1

3  

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 ecuaciÛn title('M…TODO DE NEWTON'); %Titulo en la gr·fica 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 método en si sea malo para hallar el cero de esta función, solo que el dato inicial no es el adecuado. Caso 3: ANALISIS: Con el dato inicial la sucesión que se obtiene es de 0 y 1 alternante, con lo que nunca converger a ningún valor. Intuimos con este ejemplo que no deben darse condiciones oscilantes en el entorno que f′(x) tomemos para comenzar la construcción de la sucesión recurrente, sino que debe ser monótona en cierto sentido hacia el cero de la función f.

Page 4: Deber 1

4  

Caso 4: ANALISIS: El pico que, entorno a x=1,formalagrafica dela función ,unido ala obvia raíz que tiene, es una mala condición 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 ecuación ex-3x=0 tiene raíz a r=0,61906129. Comenzando con el intervalo [0,1], realizar seis interacciones por el Método de bisección para encontrar la raíz aproximada. ¿Cuántos decimales significativos tiene dicha aproximación?. ¿Cuántas interacciones son necesarias para que la raíz 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

Page 5: Deber 1

5  

3. Sabiendo que existe una raíz de la ecuación x3+x=6 entre 1,55 y 1,75 ¿Cuántas interacciones son necesarias hasta obtener mediante el método de bisección, un intervalo de amplitud menor o igual que 10-3 que contenga a la raíz?. Calcular todas la interacciones necesarias. clc %borrar pantalla clear all %Borra todas las variables cradas anteriormente syms x % DeclaraciÛn de variables disp(' ESCUELA POLIT…CNICA DEL EJ…RCITO'); %ImpresiÛn de texto disp(''); disp(''); disp(' RESOLUCI”N DE ECUACIONES NO LINEALES'); disp(''); disp(''); disp(''); disp('INTEGRANTES: Jose Luis De La Torre Moreno'); disp(' '); disp('CURSO: Sexto Mecanica'); disp('MATERIA: M…TODOS NUM…RICOS'); disp(''); disp(''); disp(''); disp('M…TODO DE NEWTON-RAPHSON'); y=input('FunciÛn: 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('N˙mero de iteraciones:'); fa=subs(y,x,a); %Evalua la funciÛn con a fb=subs(dy,x,a); %Evalua la derivada de la funciÛn 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;

Page 6: Deber 1

6  

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 ecuaciÛn title('M…TODO DE NEWTON'); %Titulo en la gr·fica 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 raíz.

4. Considere la función 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 método de la bisección. clc clear all disp(’Bisecci ́on’)

Page 7: Deber 1

7  

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

Page 8: Deber 1

8  

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 posición del objeto, al instante t, esta dada por la formula.

donde g = 9,8 m/s2, es la aceleración 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 10−5. ¿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

Page 9: Deber 1

9  

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 raíz cuadrada de un numero positivo a, basado en el método 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

Page 10: Deber 1

10  

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 túnel de altura h. El proyectil llega a su alcance máximo cuando α es tal que sin(α) = donde g = 9, 8 m/s2 es la aceleración de la gravedad. Calcule α usando el método 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 raíz: ‘); 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

Page 11: Deber 1

11  

8. Encontrar mediante el método de la bisección las raíces de la ecuación en el intervalo [0, π/2] con una tolerancia de 10−4 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;

Page 12: Deber 1

12  

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

9. Aplicar el método de Newton para calcular las raíces reales del polinomio clc %borrar pantalla clear all %Borra todas las variables cradas anteriormente syms x % DeclaraciÛn de variables disp(' ESCUELA POLIT…CNICA DEL EJ…RCITO'); %ImpresiÛn de texto disp(''); disp(''); disp(' RESOLUCI”N DE ECUACIONES NO LINEALES'); disp(''); disp(''); disp(''); disp('INTEGRANTES: Jose Luis De La Torre Moreno'); disp(' '); disp('CURSO: Sexto Mecanica'); disp('MATERIA: M…TODOS NUM…RICOS'); disp(''); disp(''); disp(''); disp('M…TODO DE NEWTON-RAPHSON'); y=input('FunciÛn: 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

Page 13: Deber 1

13  

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('N˙mero de iteraciones:'); fa=subs(y,x,a); %Evalua la funciÛn con a fb=subs(dy,x,a); %Evalua la derivada de la funciÛn 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 ecuaciÛn title('M…TODO DE NEWTON'); %Titulo en la gr·fica xlabel('x'); ylabel('f(x)'); grid on;

Page 14: Deber 1

14  

10. Hallar mediante el método de Newton las raíces reales de la ecuación

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;

Page 15: Deber 1

15  

11. Calcular por el método de Newton la raíz de la siguiente ecuación 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

Page 16: Deber 1

16  

12. Aplicar el método de Newton para calcular el inverso de un numero no nulo. Calcular el inverso de los números: 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

Page 17: Deber 1

17  

13. Aplicar el método de Newton para calcular la raíz cuadrada de un numero positivo. Calcular la raíz cuadrada de los números: 9π y 100.

Page 18: Deber 1

18  

14. Aplicar el método de Newton para calcular la raíz quinta de un numero positivo. Calcular la raíz quinta de los números: 32 y 100000. clc clear all disp(’Raíz 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 método de Newton para calcular el logaritmo de un numero positivo. Calcular el logaritmo de los números: 4, 100 y 5 × 10−6. 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

Page 19: Deber 1

19  

16. La función f (x) = e−x2 (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 deberán incluir el test de parada sobre el numero de iteraciones permitidas. Aplicar el método de Newton para calcular la raız de la funcion dada, considerando los diferentes tests de parada con valor inicial x0 = 3 y con una tolerancia de δ1 =δ2 =10−6 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));

Page 20: Deber 1

20  

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