Deber 1 Metodos Numericos Pugarin

Deber No1 PRIMER PARCIAL M´ etodos Num´ ericos Nombre: Chrisitian Moposita NRC: 1113 Fecha: 22 de Noviembre del 201

Views 104 Downloads 1 File size 537KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Deber No1

PRIMER PARCIAL

M´ etodos Num´ ericos

Nombre: Chrisitian Moposita

NRC: 1113

Fecha: 22 de Noviembre del 2017

1

EJERCICIO 1: Escribir un programa en Matlab que le pida al usuario un n´ umero entero positivo menor que un mill´on (1000000) y devuelva a pantalla el n´ umero e indique si es par o impar. Programa: %Progrma que pide al usuario un numero entero positivo menor que 1000000 %devolviendo el numero e indicando si es par o impar n=input(’Ingrese un numero entero positivo menor a 1 millon: ’); if n>0 && n> ParImpar Ingrese un numero entero positivo menor a 1 millon: 5347 Numero ingresado: 5347 Numero impar >> ParImpar Ingrese un numero entero positivo menor a 1 millon: 82368 Numero ingresado: 82368 Numero par EJERCICIO 2: Realizar un programa en Matlab que permita visualizar un c´ırculo de radio 6.5 y centro 3. Programa: %Programa para graficar un circulo de radio 6.5 y centro 3 t=0:pi/30:2*pi; x=(6.5)*(cos(t))+3; y=(6.5)*(sin(t)); plot(x,y) line(xlim,[0 0],’color’,’r’); line([0 0],ylim,’color’,’r’); grid on axis square axis([-4 10 -7 7]) xlabel(’Eje X’) ylabel(’Eje Y’) title(’Circulo’) 2

Ejecuci´on del Programa:

EJERCICIO 3: Graficar la siguiente funci´on y sus derivadas, en un solo gr´afico de manera superpuesta.  −x  si x < −1 e f (x) = |x| si − 1 < x < 1   2 x + 1 si x > 1 Programa: %Programa que grafica funciones y sus derivadas superpuestas x1=-10:0.01:-1; x2=-1:0.01:1; x3=1:0.01:10; f1=exp(-x1); f2=abs(x2); f3=x3.^2+1; df1=diff(f1)./diff(x1); df2=diff(f2)./diff(x2); df3=diff(f3)./diff(x3); hold on line(xlim,[0 0],’color’,’r’); line([0 0],ylim,’color’,’r’); plot(x1,f1,’blue’); plot(x2,f2,’blue’); plot(x3,f3,’blue’); plot(x1(2:end),df1,’green’); plot(x2(2:end),df2,’green’); plot(x3(2:end),df3,’green’); axis square axis([-4,4,-8,8]) hold off grid on xlabel(’Eje X’) 3

ylabel(’Eje Y’) title(’Grafica de: Funcion(Azul), Derivada(Verde)’) Ejecuci´on del Programa:

EJERCICIO 4: Elabore un programa que permita calcular las ra´ıces reales de un polinomio de segundo grado de la forma ax2 + bx + c = 0. Tenga en cuenta que dependiendo del valor del discriminante (D = b2 − 4ac) el sistema puede dar ra´ıces reales (D ≥ 0) o ra´ıces complejas (D < 0). El programa debe informar al usuario si el sistema no tiene ra´ıces reales. Adem´as se debe indicar si las ra´ıces reales son iguales (D = 0) o diferentes (D > 0). Programa: %Programa que calcula las raices de un polinomio function PolRaices(a,b,c) d=b^2 - 4*a*c; if d>=0 x1=(-b + sqrt(b.^2 -4*a*c))/(2*a); x2=(-b - sqrt(b.^2 -4*a*c))/(2*a); if x1==x2 disp(’Las raices son iguales’) x1 x2 else disp(’Las raices son diferentes’) x1 x2 end else disp(’El polinomio tiene raices imaginarias’) end end Ejecuci´on del Programa: 4

>> PolRaices(1,2,-2) Las raices son diferentes x1 = 0.7321

x2 = -2.7321 EJERCICIO 5: Tabla de conversi´on de temperatura. La relaci´on de diversas escalas de temperatura con la escala Celsius (C), es la siguiente: F = 95 C + 32 K = C + 273, 15 R=

8 C 10

Construir un programa en Matlab que permita pasar de una escala a otra. El programa debe solicitar al usuario el ingreso de la informaci´on necesaria para su funcionamiento. Adem´as, el programa siempre esperar´a informaci´on hasta que se pulse la tecla s. Programa:

%Programa que convierte grados celsius a Fahrenheit, Kelvin o Reaumur. while true disp(’Transformar de: ’) disp(’1)Celsius a Fahrenheit’) disp(’2)Celsius a Kelvin’) disp(’3)Celsius a Reaumur’) disp(’s)Salir’) c=input(’Escoja una opcion: ’,’s’); switch c case ’1’ while true t=input(’Ingresar la temperatura en Celsius o digite "s" para salir: ’,’ if t==’s’ break; end x=eval(t); t=((9/5)*x)+32; disp(’La temperatura en Fahrenheite es: ’) disp(t) end case ’2’ while true t=input(’Ingresar la temperatura en Celsius o digite "s" para salir: ’,’ if t==’s’ break; end 5

x=eval(t); t=x+273.15; disp(’La temperatura en Kelvin es: ’) disp(t)

end case ’3’ while true t=input(’Ingresar la temperatura en Celsius o digite "s" para salir: ’,’ if t==’s’ break; end x=eval(t); t=(8/10)*x; disp(’La temperatura en Reaumur es: ’) disp(t) end case ’s’ disp(’El programa ha finalizado’) break; otherwise disp(’Ingrese una opcion valida.’) end end Ejecuci´on del Programa: >> ConvTemp Transformar de: 1)Celsius a Fahrenheit 2)Celsius a Kelvin 3)Celsius a Reaumur s)Salir Escoja una opcion: 1 Ingresar la temperatura en Celsius o digite "s" para salir: 180 La temperatura en Fahrenheite es: 356 Ingresar la temperatura en Celsius o digite "s" para salir: s Transformar de: 1)Celsius a Fahrenheit 2)Celsius a Kelvin 3)Celsius a Reaumur s)Salir Escoja una opcion: 2 Ingresar la temperatura en Celsius o digite "s" para salir: 180 La temperatura en Kelvin es: 453.1500 Ingresar la temperatura en Celsius o digite "s" para salir: s Transformar de: 1)Celsius a Fahrenheit 6

2)Celsius a Kelvin 3)Celsius a Reaumur s)Salir Escoja una opcion: 3 Ingresar la temperatura en Celsius o digite "s" para salir: 180 La temperatura en Reaumur es: 144 Ingresar la temperatura en Celsius o digite "s" para salir: s Transformar de: 1)Celsius a Fahrenheit 2)Celsius a Kelvin 3)Celsius a Reaumur s)Salir Escoja una opcion: s El programa ha finalizado EJERCICIO 6: Crear una funci´on m.file con la que se pueda graficar la funci´on param´etrica siguiente: ( t) x(t) = (R + r)cos(t) − rcos( R+r r z(t) = R+r y(t) = (R + r)sin(t) − rsen( r t) Los par´ametros de entrada deben ser R, r, a, b y el n´ umero n de puntos. t ∈ [a, b] y a, b ∈ R. Programa: function GrafParam(R, r, a, b, n) t=linspace(a,b,n) x=(R+r)*cos(t)-r*cos(((R+r)/r)*t); y=(R+r)*sin(t)-r*sin(((R+r)/r)*t); plot(x,y) grid on end Ejecuci´on del Programa:

7

EJERCICIO 7: Realizar un programa en donde el peso de una muestra se determina realizando 4 pesadas, se descarta el menor peso y se promedian los otros tres. Considere que el usuario ingresa una tabla con el n´ umero de sustancia en la primera columna y las mediciones realizadas en las otras 4 columnas. Mostrar en pantalla el n´ umero de muestra, las mediciones, el peso eliminado y el peso promedio de cada sustancia pesada. Programa: %Programa que determina el promedio de cada peso eliminando el peso menor function PromPeso p1=input(’Ingrese el primer peso: ’); p2=input(’Ingrese el segundo peso: ’); p3=input(’Ingrese el tercer peso: ’); p4=input(’Ingrese el cuarto peso: ’); pt=[p1; p2; p3; p4]; p= min(pt); prom =(sum(pt)-p)/3; disp(’Los pesos son ’) pesos=pt disp(’El peso de menor valor es’) disp(p) disp(’El promedio de los pesos es’) disp(prom) end Ejecuci´on del Programa: >> PromPeso Ingrese el primer peso: 1 Ingrese el segundo peso: 2 Ingrese el tercer peso: 3 Ingrese el cuarto peso: 4 Los pesos son pesos = 1 2 3 4 El peso de menor valor es 1 El promedio de los pesos es 3 EJERCICIO 8: Represente en Matlab la superficie 3D dada por la funci´on fx (x1 , ..., xn ) =

P 1 (− 12 (x−µ)T −1 (x−µ)) P e (2π)n/2 | |1/2

T

Para el caso n = 2, usar los siguientes valores de las constantes u = (10, 10) , 8

 P

=

3 −1 −1 4

 .

El s´ımbolo | Programa:

P

| significa el determinante de la matriz

P

.

%Programa para presentar una superficie de una funcion en 3D syms x1 x2; x=[x1;x2]; u=transpose([10 10]); s=[3 -1;-1 4]; n=-(1/2)*transpose(x-u)*s*(x-u); d=2*pi*sqrt(det(s)); f=exp(n)/d; [x1 x2]=meshgrid(8:0.002:12); f=eval(f); surf(x1,x2,f,’EdgeColor’,’none’) Ejecuci´on del Programa:

EJERCICIO 9: Escriba un programa que busque los n´ umeros amigables y diferentes entre 1 y 1000. Dos n´ umeros son amigables si el primero es la suma de los divisores del segundo y viceversa. Programa: %Programa que determina los numeros amigables entre 1 y 1000 x1=0; x2=0; x3=1; for i=2:1:1000 for j=1:1:i/2 a=mod(i,j); if a==0 x1=x1+j; end end if x1>=3 for k=1:1:x1/2 9

b=mod(x1,k); if b==0 x2=x2+m; end end end if x2==i; if x1~=i; num(x3,1)=i; num(x3,2)=x1; x3=x3+1; end end x1=0; x2=0; end disp(’Los numeros amigos son’) num Ejecuci´on del Programa: >> NumAmigables Los numeros amigos son num = 220 284

284 220

EJERCICIO 10: Realizar una funci´on tal que ingresado un numero N, se impriman por pantalla todos los n´ umeros primos de 1 hasta N. Ej: Ingreso el n´ umero 13 y se imprimen por pantalla: 1, 3, 5, 7, 11, 13. Programa: %Programa que imprime numeros primos del 1 hasta N n=input(’Ingrese hasta que numero desea visualizar los numeros primos: ’); for i=2:n cont=0; for j=1:n if mod(i,j)==0 cont=cont+1; end end if(cont==2) disp(i); end end Ejecuci´on del Programa: >> Primos1aN Ingrese hasta que numero desea visualizar los numeros primos: 20 10

2 3 5 7 11 13 17 19 EJERCICIO 11: En cada uno de los casos siguientes, halle el error absoluto Ez y el error relativo Rz y determine el n´ umero de cifras significativas de la aproximaci´on. a)x = 2, 71828182, xˆ = 2, 7182 b)y = 98350, yˆ = 98000 c)z = 0; 000068, zˆ = 0; 00006 Programa: %Programa para encontrar error absoluto y relativo x=2.71828182; x1=2.7182; y=98350; y1=98000; z=0.000068; z1=0.00006; disp(’Literal a: ’) eabx=abs(x-x1); erelx=abs((x-x1)/x); csigx=floor(-(log(2*erelx)/log(10))); disp(’El error absoluto es: ’) disp(eabx) disp(’El error relativo es:’) disp(erelx) disp(’La cifra significativa es:’) disp(csigx) disp(’Literal b: ’) eaby=abs(y-y1); erely=abs((y-y1)/y); csigy=floor(-(log(2*erely)/log(10))); disp(’El error absoluto es: ’) disp(eaby) disp(’El error relativo es:’) disp(erely) disp(’La cifra significativa es:’) 11

disp(csigy) disp(’Literal c: ’) eabz=abs(z-z1); erelz=abs((z-z1)/z); csigz=floor(-(log(2*erelz)/log(10))); disp(’El error absoluto es: ’) disp(eabz) disp(’El error relativo es:’) disp(erelz) disp(’La cifra significativa es:’) disp(csigz) Ejecuci´on del Programa: >> ErrorAbsRelat Literal a: El error absoluto es: 8.1820e-05 El error relativo es: 3.0100e-05 La cifra significativa es: 4 Literal b: El error absoluto es: 350 El error relativo es: 0.0036 La cifra significativa es: 2 Literal c: El error absoluto es: 8.0000e-06 El error relativo es: 0.1176 La cifra significativa es: 0 EJERCICIO 12: Dados los desarrollos de Taylor : 1 = 1 + h + h2 + h3 + O(h4 ) 1−h cos(h) = 1 −

h2 h4 + + O(h6 ) 2! 4! 12

Determine el orden de aproximaci´on de su suma y de su producto. De su suma: 1 h2 h4 + cos(h) = 2 + h + h2 − + h3 + + O(h6 ) + O(h4 ) 1−h 2 4! h2 1 + cos(h) = 2 + h + + h3 + O(h4 ) 1−h 2 De su producto: h2 h4 h4 h6 h5 1 ∗ cos(h) = 1 − + + O(h6 ) + h2 − + + h2 ∗ O(h6 ) + h3 − + 1−h 2! 4! 2! 4! 2! h7 h2 h4 + h3 ∗ O(h6 ) + O(h4 ) − ∗ O(h4 ) + ∗ O(h4 ) + O(h6 ) ∗ O(h4 ) 4! 2! 4! 1 h2 h3 ∗ cos(h) = 1 + h + + + O(h4 ) 1−h 2! 2! EJERCICIO 13: Encuentre una ra´ız positiva , con los m´etodos de la bisecci´on y newton a mano de la ecuaci´on : x2 − 4xsin(x) + (2sin(x))2 que sea exacta hasta la segunda cifra significativa , solo con el empleo de una calculadora M´etodo de Newton f (x) = x2 − 4x ∗ sin(x) + (2 ∗ sin(x))2 f 0 (x) = 2x − 4sin(x) − 4x ∗ cos(x) + 4sin(x) ∗ cos(x) Primera iteraci´on x0 = 1,9 x1 = x0 +

f (x0) f 0 (x0)

x1 = 1,9 +

f (1,9) f 0 (1,9)

x1 = 1, 8999 Segunda iteraci´on x1 = 1,8999

Tercera iteraci´on x3 = x3 +

x2 = 1,8999 +

f (1,8999) f 0 (1,8999)

x2 = 1,8999 +

0, 00005234 1, 2477

x3 = 1,8998 +

0, 00005135 1, 2463

f (x3) f 0 (x3)

x3 = 1, 8997 Cuarta iteraci´on x4 = x3 +

f (x3) f 0 (x3)

x4 = 1,8997 +

0, 00004769 1, 2455

x4 = 1, 8996 13

Rx =

|1,8996 − 1,8997| 10−d = 0, 00005263 < 1,8997 2 d=4

Se tienen 4 cifras significativas. EJERCICIO 14: Con los programas: m´etodo de la bisecci´on , newton y m´etodo de la secante, encuentre una ra´ız de f (x) = x − tan(x) en el intervalo [1,2]. Compare y comente los resultados obtenidos. No se puede utilizar el m´etodo de la bisecci´on debido a que la gr´afica se encuentra por encima del eje X, dando un error al momento de realizar los diferentes intervalos de operaci´on para el m´etodo, nunca encuentra un valor real. Programa: %Programa que calcula una raiz a traves del metodo de biseccion, newton o %secante x=1; fx= @(x)(x-tan(x)); gx = @(x)(1-(sec(x))^2); x1=x-fx(x)/gx(x); cont=1; while abs(x1-x)>0.000001 x=x1; x1=x-fx(x)/gx(x); cont=cont+1; end disp(’La raiz es:’) disp(x) disp(’Cantidad de iteraciones’) disp(cont) Ejecuci´on del programa: >> RaizMetodBisecNewtSecant La raiz es: 2.1004e-06 Cantidad de iteraciones 34 Mientras se elija un punto mas cercano al corte menos iteraciones se va a obtener y sera simplificara un poco el trabajo para la maquina. EJERCICIO 15: Encontrar mediante el metodo de newton la siguiente ecuacion. √ 3 ∗ sin(x) = cos(x)

Programa:

14

%Programa que encuentra las raices de la ecuacion mediante newton x=1; fx= @(x)(sqrt(3)*sin(x)-cos(x)); gx = @(x)(sqrt(3)*cos(x)+sin(x)); x1=x-fx(x)/gx(x); cont=1; while abs(x1-x)>0.000001 x=x1; x1=x-fx(x)/gx(x); cont=cont+1; end disp(’La raiz es:’) disp(x) disp(’Cantidad de iteraciones’) disp(cont) Ejecuci´on del Programa: >> RaizNewton La raiz es: 0.5236 Cantidad de iteraciones 4 EJERCICIO 16: Considere la funci´on f (x) = cosh(x) + cos(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´etodo de la bisecci´on. λ = 1; cuando se tiene ´esta condici´on no se encuentra un corte con el eje x, por lo tanto nunca se podr´a encontrar una soluci´on al aplicar el m´etodo de la bisecci´on. Si λ = 2; de igual manera se encuentra sobre el eje x y tampoco se puede aplicar el m´etodo. Si λ = 3; ahora si se puede utilizar el m´etodo, debido a que si hay una intersecci´on con el eje x. Se plantea un intervalo [0,3]. Programa: %Programa que calcula la raiz con el metodo de biseccion a=0; b=3; cont=0; fx=@(x)(cosh(x)+cos(x)-3); while abs(b-a)>0.0000001 if(fx(a)*fx(b)) RaizBiseccion La raiz es 1.8579 Cantidad de iteraciones 25 EJERCICIO 17: Un objeto esta situado en un plano cuya pendiente var´ıa a una tasa constante W. La posici´on del objeto al instante t, esta dada por la f´ormula. s(t, w) =

g ∗ [senh(wt) − sen(wt)] 2w2

donde g = 9,8m/s2 es la aceleraci´on de la gravedad. Asumiendo que el objeto se ha desplazado 1 metro en 1 segundo. calcule el valor de 2 usando el m´etodo de la bisecci´on con una tolerancia de 10− 5 ¿Cu´antas iteraciones se requieren para alcanzar la tolerancia indicada? Programa: %Programa que calcula w por el m´ etodo de bisecci´ on a=0.55; b=1.3; cont=0; f=@(w)((9.8*(sinh(w)-sin(w)))/(2*w^2)-1); while abs(b-a)>0.00001 if f(a)*f(b) CalcWBiseccionIterac w es igual a 16

0.6121 Cantidad de Iteraciones 17 EJERCICIO 18: Escriba e implemente un programa en Matlab para calcular la ra´ız cuadrada de un n´ umero positivo a basado en el m´etodo de Newton. Programa: %Programa que saca la raiz cuadrada a parti de un numero positivo pedido al usuario n=input(’Ingrese un numero para sacar su raiz:’); fx=@(x)(x.^2-n); gx=@(x)(2*x); x1=n-fx(n)/gx(n); cont=1; while abs(x1-n)>0.000001 n=x1; x1=n-fx(n)/gx(n); cont=cont+1; end disp(’La raiz es’) disp(n) disp(’Cantidad de iteraciones’) disp(cont) Ejecuci´on del Programa: >> RaizCuadradaNewton Ingrese un numero para sacar su raiz:9 La raiz es 3.0000 Cantidad de iteraciones 6

17