Sei sulla pagina 1di 20

UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”

Deber No.1

Métodos Numéricos
Departamento de Ciencias Exactas
Nombre: Olivo Sebastián
NRC: 3250

1 Tı́tulo
Estudio de Métodos Numéricos con Matlab y LATEX

2 Objetivo
Aprender, comprender y analizar el uso de el software Matlab y LATEX en la resolución de los problemas propuestos.

2.1 Objetivos Especı́ficos


- Resolver los ejercicios propuestos con el uso de los scripts y funciones de Matlab.
- Realizar las gráficas en los ejercicios requeridos con el graficador de Matlab.

3 Herramientas
- Software Matlab
- Edito LATEX
- Cuaderno de Métodos Numéricos

4 Desarrollo
Resolver los siguientes ejercicios

1. EJERCICIO: Escribir un programa en Matlab que le pida al usuario un número entero positivo menor
que un millón (1000000) y devuelva a pantalla el número e indique si es par o impar.
Ejemplo:
Ingresar: 550
Número par
Código
%{
Escribir un programa en Matlab que le pida al usuario un número entero
positivo menor que un millón (1000000) y devuelva a pantalla el número
e indique si es par o impar.
%}
n=input(’Ingrese un número: ’);
while((n<1)||(n>=1000000))
n=input(’Ingrese un número entero positivo y menor a un millón: ’);
end
if (mod(n,2)==0)
disp(’El número ingresado es par’)
else
disp(’El número ingresado es impar’)
end

Métodos numéricos 1
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

Compilación

Figure 1: Compilación del ejercicio 1

2. EJERCICIO: Realizar un programa en Matlab que permita visualizar un cı́rculo de radio 6.5 y centro
3.

Código
%{
Realizar un programa en Matlab que permita
visualizar un cı́rculo de radio 6.5 y centro 3.
%}
x=-3.5:0.1:9.5;
y=sqrt((6.5)^2-(x-3).^2);
plot(x,y,x,-y)
grid on
axis([-6 12 -10 10])
Compilación

Figure 2: Circunferencia, ejercicio 2

Métodos numéricos 2
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

3. EJERCICIO: Graficar la siguiente función y sus derivadas, en un solo gráfico, de manera superpuesta,
aplicando solamente el comando if. 
−x
e ,
 si x < −1,
|x|, si −1 < x < −1,

 2
x + 1, si x > 1,
Código
%{
Graficar la siguiente función y sus derivadas, en un solo gráfico,
de manera superpuesta, aplicando solamente el comando if.
%}
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
graficof1=plot(x1,f1,’red’);
graficof2=plot(x2,f2,’red’);
graficof3=plot(x3,f3,’red’); %grafico de f ’( x)
graficodf1=plot(x1(2:end),df1,’blue’);
graficodf2=plot(x2(2:end),df2,’blue’);
graficodf3=plot(x3(2:end),df3,’blue’);
axis ([ -2.5 ,2.5 , -6 ,7]) ;
xlabel(’Eje x’)
ylabel(’Eje y’)
hold off
grid on
Compilación

Figure 3: Compilación, ejercicio 3

Métodos numéricos 3
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

4. EJERCICIO: Tabla de conversión de temperatura. La relación de diversas escalas de temperatura con la


escala Celsius (C), es la siguiente:
9
F = C + 32
5
K = C + 273, 15
8
R= C
10
Construir un programa en Matlab que permita pasar de una escala a otra, presentado en varias opciones. El
programa debe solicitar al usuario el ingreso de la información necesaria para su funcionamiento. Además, el
programa siempre esperará información hasta que se pulse la tecla s.

Código
%{
Tabla de conversión de temperatura. La relación de diversas escalas de
temperatura con la escala Celsius (C), es la siguiente:
F=(9/5)C+32
K=C+273,15
R=(8/10)(C)
Construir un programa en Matlab que permita pasar de una escala a otra,
presentado en varias opciones. El programa debe solicitar al usuario el
ingreso de la información necesaria para su funcionamiento. Además, el
programa siempre esperará información hasta que se pulse la tecla s.
%}
syms s
syms x
syms r
n=0;
r=x;
while(r~=s)
disp(’MENU’)
disp(’1.-Transformar de Celsius a Fahrenheit’)
disp(’2.-Transformar de Fahrenheit a Celsius’)
disp(’3.-Transformar de Celsius a Kelvin’)
disp(’4.-Transformar de Kelvin a Celsius’)
disp(’5.-Transformar de Celsius a Rankine’)
disp(’6.-Transformar de Rankine a Celsius’)
n=input(’Elija un opción del menú: ’);
while((n<1)||(n>6))
n=input(’Elija un opción del menú: ’);
end
switch(n)
case 1
T=input(’Ingrese el valor de la temperatura en grados Celsius: ’);
F=(9/5)*T+32;
disp(’Respuesta en grados Fahrenheit:’);disp(F);
case 2
T=input(’Ingrese el valor de la temperatura en grados Fahrenheit: ’);
C=(5/9)*(T-32);
disp(’Respuesta en grados Celsius:’);disp(C);
case 3
T=input(’Ingrese el valor de la temperatura en grados Celsius: ’);
K=T+273.15;
disp(’Respuesta en grados Kelvin:’);disp(K);
case 4
T=input(’Ingrese el valor de la temperatura en grados Kelvin: ’);
C=T-273.15;
disp(’Respuesta en grados Celsius:’);disp(C);
case 5

Métodos numéricos 4
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

T=input(’Ingrese el valor de la temperatura en grados Celsius: ’);


R=(8/10)*(T);
disp(’Respuesta en grados Rankine:’);disp(R);
otherwise
T=input(’Ingrese el valor de la temperatura en grados Rankine: ’);
C=(10/8)*(T);
disp(’Respuesta en grados Celsius:’);disp(C);
end
r=input(’Si desea salir presione la letra s, caso contrario cualquier numero: ’);
if(r==s)
disp(’Gracias por utlizar este programa.’)
end
end

Compilación

Figure 4: Compilación, ejercicio 4

Métodos numéricos 5
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

5. EJERCICIO: Crear una función M.file con la que se pueda graficar la función paramétrica siguiente:
(
x(t) = (R + r) cos(t) − r cos( R+r
r t)
z(t) = R+r
y(t) = (R + r) sin(t) − r sin( r t)

Los parámetros de entrada deben ser R,r,a,b y el número n de puntos. t ∈ [a, b] y a, b ∈ R

Código
%{
Crear una función M.file con la que se pueda graficar la función paramétrica siguiente:
x(t)=(R+r)cos(t)-rcos(((R+r)/(r))t)
y(t)=(R+r)sin(t)-rsin(((R+r)/(r))t)
Los parámetros de entrada deben ser R,r,a,b y el número n de puntos. tE[a,b] y a,b E R
%}
function [ z ] = ejercicio5( R,r,a,b,n )
t=a:n:b;
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
axis([-30 30 -30 30])
end

Compilación

Figure 5: Compilación, ejercicio 5

Métodos numéricos 6
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

6. EJERCICIO: Represente en Matlab la superficie 3D dada por la función


1 (− 21 (x−µ)T
P−1
(x−µ))
fx (x1 , ..., xn ) = n P 1
e
(2π) 2 | | 2
 
3 −1
Para el caso n=2, usar los siguientes valores de las contantes µ = (10, 10)T , =
P P
. El sı́mbolo | |
P −1 4
significa el determinante de la matriz .

Código
%{
Represente en Matlab la superficie 3D dada por la función
%}
syms x1 x2;
x=[x1;x2];
u=transpose([10 10]);
E=[3 -1;-1 4];
k=(2*pi)*sqrt(det(E)) ;
exponente=-0.5*transpose(x-u)*E*(x-u);
f=1/k*exp(exponente) ;
[x1 x2]=meshgrid(8:0.005:12) ;
f=eval(f);
mesh(x1,x2,f)

Compilación

Figure 6: Compilación, ejercicio 6

Métodos numéricos 7
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

7. EJERCICIO: Realizar una función tal que ingresado un número N, se impriman por pantalla todos los
números primos de 1 hasta N.
Ej: Ingreso el número 13 y se imprimen por pantalla: 1,3,5,7,11,13.

Código
%{
Realizar una función tal que ingresado un número N, se impriman
por pantalla todos los números primos de 1 hasta N.
Ej: Ingreso el número 13 y se imprimen por pantalla: 1,2,3,5,7,11,13.
%}

N=input(’Ingrese un número positivo: ’);


while(N<1)
N=input(’Ingrese un número positivo: ’);
end
for i=1:1:N
aux=0;
for j=1:1:i
if(mod(i,j)==0)
aux=aux+1;
end
end
if((aux==1)||(aux==2))
disp(i)
end
end
Compilación

Figure 7: Compilación, ejercicio 7

Métodos numéricos 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

8. EJERCICIO: En cada uno de los casos siguientes, halle el error absoluto E y el error relativo R y
determine el número de cifras significativas de la aproximación.
a) x = 2, 71828182, x
b = 2, 7182
b) y = 98350, yb = 98000
c) z = 0, 000068, zb = 0, 00006

Código
%{
En cada uno de los casos siguientes, halle el error absoluto E y
el error relativo R y determine el número de cifras
significativas de la aproximación.
a) x=2,71828182 x=2,7182
b) y=98350 y=98000
c) z=0,000068 z=0,00006
%}
x=input(’Ingrese el valor exacto: ’);
xa=input(’Ingrese el valor aproximado: ’);
E=abs(x-xa);
disp(’El error absoluto es: ’);disp(E)
R=abs((abs(x-xa))/x);
disp(’El error relativo es: ’);disp(R)
for d=0:1:20
r=(10.^(-d))/2;
if(R>r)
break;
end
end
disp(’El número de cifras de la aproximación es: ’);disp(d-1)
Compilación

Figure 8: Compilación, ejercicio 8

Métodos numéricos 9
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

9. EJERCICIO: Complete el siguiente cálculo.


Z 14 Z 41 
x4 x6

2
ex dx ≈ 1 + x2 + + dx ≈ pb
0 0 2! 3!
Determine que tipo de error se presenta en esta situación y compare su resultado con el valor exacto de
p = 0, 2553074606.

Código
%{
Complete el siguiente cálculo y determine que tipo de error se
presenta en esta situación y compare su resultado con el valor
exacto de p=0,2553074606.
%}
clc
syms x
p=0.2553074606
a=0;
b=1/4;
y=(1+x.^2+(x.^4/2)+(x.^6/6));
pa=int(y,x,a,b);
suma=double(pa);
disp(’Se presenta el error de truncamiento’)
E=abs(p-suma);
fprintf(’El error absoluto es: %.24f\n’,E)
R=(abs(p-suma))/p;
fprintf(’El error relativo es: %.24f\n’,R)
for d=0:1:20
r=(10.^(-d))/2;
if(R>r)
break;
end
end
fprintf(’El número de cifras significativas es: %d\n’,d-1)
Compilación

Figure 9: Compilación, ejercicio 9

Métodos numéricos 10
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

10. EJERCICIO: Complete los siguientes cálculos y diga que tipo de error se presenta en cada situación.

sin π4 + 0, 00001 − sin π4


 
0, 70711385222 − 0, 70710678119
a) = = ···
0, 00001 0, 00001

ln(2 + 0, 00005) − ln(2) 0, 69317218025 − 0, 69314718056


b) = = ···
0, 00005 0, 00005

Código
%{
Complete los siguientes cálculos y diga que tipo de error se presenta en cada situación.
%}
disp(’a)’)
a=(0.70711385222-0.70710679119)/(0.00001);
fprintf(1,’%f\n’,a);
disp(’b)’)
b=(0.69317218025-0.69314718056)/(0.00005);
fprintf(1,’%f\n’,b);
fprintf(’Se pierde el número de cifras significativas\n’);
Compilación

Figure 10: Compilación, ejercicio 10

11. EJERCICIO: Dados los desarrollos de Taylor


1
= 1 + h + h2 + h3 + O(h4 )
1−h
y
h2 h4
cos(h) = 1 − + + O(h6 )
2! 4!

Métodos numéricos 11
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

Determine el orden de aproximación de su suma y de su producto.

La suma es:

1 h2 h4
+ cos(h) = 1 + h + h2 + h3 + O(h4 ) + 1 − + + O(h6 )
1−h 2! 4!
1 h2
+ cos(h) = 2 + h + + h3 + O(h4 )
1−h 2
El producto es:

h2 h4
 
1 2 3 4
 6
∗ cos(h) = 1 + h + h + h + O(h ) 1 − + + O(h )
1−h 2! 4!
1 h2 h3
∗ cos(h) = 1 + h + + + O(h4 )
1−h 2 2

12. EJERCICIO: Encuentre una raı́z positiva, con los métodos de la bisección y newton, a mano, de la
ecuación
x2 − 4x sin(x) + 2(2 sin(x))2 = 0;
que sea exacta hasta la segunda cifra significativa, solo con el empleo de una calculadora.

Código
%{
Encuentre una raı́z positiva, con los métodos de la bisección y newton, a mano, de la ecuación
x^2-4x\sin(x)+(2\sin(x))^2=0;
que sea exacta hasta la segunda cifra significativa, solo con el empleo de una calculadora.
%}
clc
fprintf(’Método de la bisección\n’)
a=1;
b=3;
aux=0;
x=-15:0.1:15;
y=@(x)(x.^2-4.*x.*sin(x)+(2.*sin(x)).^2);
plot(x,y(x),’r’);
grid on
xlabel(’Eje x’)
ylabel(’Eje y’)
title(’Gráfica del ejercicio 12’)
axis([-3 3 -3 6])
while(abs(a-b)>0.01)
if(y(a)*y(b)<0)
aux=1;
c=(a+b)/2;
if(y(a)*y(c)<0)
b=c;
else
a=c;
end
else
disp(’No existe raiz en dicho intervalo’)
break;
end
end
if(aux==1)
fprintf(’El valor de la raiz es: %f\n\n’,c);
end
fprintf(’\nMétodo de Newton\n’)

Métodos numéricos 12
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

Xo=-1;
y=@(x)(x^2-4*x*sin(x)+(2*sin(x))^2);
dy=@(x)(2*x-4*(x*cos(x)+sin(x))+4*sin(2*x));
X1=Xo-(y(Xo)/(dy(Xo)));
aux=X1;
fprintf(’Valor inicial X1 Error\n’)
while(abs(aux-Xo)>0.01)
fprintf(’%.6f %.6f %.6f\n’,Xo,X1,aux-Xo)
Xo=aux;
X1=Xo-(y(Xo)/(dy(Xo)));
aux=X1;
end
fprintf(’El valor de la raı́z es: %f\n\n’,X1);
Compilación

Nota: No se puede encontrar las raı́ces con el método de la bisección ya que este método no es muy confiable
ya que sólo se ejecuta cuando el producto de la función evaluada en el punto a del intervalo con la función
evaluada en el punto b del intervalo da como resultado un número negativo.

13. EJERCICIO: Con los programas: método de la bisección, newton y método de la secante, encuentre
la raı́z de
f (x) = x − tan(x)
en el intervalo [1,2]. Compare y comente los resultados obtenidos.

Código
%{
Con los programas: método de la bisección, newton y método de la secante, encuentre la raı́z de
f(x)=x-tan(x)
en el intervalo [1,2]. Compare y comente los resultados obtenidos.
%}
clc
disp(’Método de la bisección’)
a=1;
b=2;
aux=0;
y=@(x)(x-tan(x));
while(abs(a-b)>0.000001)
if(y(a)*y(b)<0)
aux=1;
c=(a+b)/2;
if(y(a)*y(c)<0)

Métodos numéricos 13
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

b=c;
else
a=c;
end
else
disp(’No existe raiz en dicho intervalo’)
break;
end
end
if(aux==1)
fprintf(’El valor de la raiz es: %f\n\n’,c);
end
disp(’Método de Newton’)
Xo=1.2;
y=@(x)(x-tan(x));
X1=Xo-(y(Xo)./(1-((1./(cos(Xo))).^2)));
aux=X1;
while(abs(aux-Xo)>0.000001)
Xo=aux;
X1=Xo-(y(Xo)./(1-((1/(cos(Xo))).^2)));
aux=X1;
end
if(X1>2||X1<1)
fprintf(’El valor de la raı́z es: %f \n’,X1)
fprintf(’pero no se encuentra dentro del intervalo establecido.\n\n’)
else
fprintf(’El valor de la raı́z es: %f\n\n’,X1)
end
disp(’Método de la Secante’)
Xo=0;
X1=1;
y=@(x)(x-tan(x));
X2=X1-((y(X1)*(Xo-X1))/(y(Xo)-y(X1)));
aux=X2;
while(abs(X2-X1)>0.000001)
Xo=X1;
X1=X2;
X2=X1-((y(X1)*(Xo-X1))/(y(Xo)-y(X1)));
end
fprintf(’El valor de la raı́z es: %f \n’,X2)
fprintf(’pero no se encuentra dentro del intervalo establecido.\n\n’)

Métodos numéricos 14
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

Compilación

Figure 11: Compilación, ejercicio 13

Como se puede ver todos los resultados son diferentes con cada método, esto se debe a que cada uno tiene
diferentes condiciones sistematizadas para su ejecución, de manera que esta función no cumple con ciertas
condiciones de cada método.

14. EJERCICIO: Encontrar mediante el método de newton las raı́ces de la ecuación.



3 sin(x) = cos(x)

Código
%{
Encontrar mediante el método de newton las raı́ces de la ecuación.
\sqrt{3}\sin(x)=\cos(x)
%}
Xo=3;
y=@(x)(sqrt(3).*sin(x)-cos(x));
X1=Xo-(y(Xo)./(sqrt(3).*cos(Xo)+sin(Xo)));
aux=X1;
while(abs(aux-Xo)>0.000001)
Xo=aux;
X1=Xo-(y(Xo)./(sqrt(3).*cos(Xo)+sin(Xo)));
aux=X1;
end
disp(X1)

Métodos numéricos 15
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

Compilación

Figure 12: Compilación, ejercicio 14

15. EJERCICIO: Considérese la función 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étodo de la bisección.

Código
Encuentre un intervalo que contenga un cero de f para cada valor de gamma
y calcule dicho cero con el método de la bisección.
%}
gamma=0;
while(gamma<3)
gamma=gamma+1;
fprintf(’\nPara gamma igual a %d\n’,gamma)
y=@(x)(cosh(x)+cos(x)-gamma);
a=1
b=3
aux=0;
while(abs(a-b)>0.000001)
if(y(a)*y(b)<0)
aux=1;
c=(a+b)/2;
if(y(a)*y(c)<0)
b=c;
else
a=c;
end
else

Métodos numéricos 16
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

break;
end
end
if(aux==1)
fprintf(’El valor de la raı́z en dicho intervalo es: %f\n’,c);
else
fprintf(’No hay ninguna raı́z en dicho intervalo\n’);
end
end
Compilación

Figure 13: Compilación, ejercicio 15

16. EJERCICIO: Un objeto está situado en un plano cuya pendiente verı́a a una tasa constante ω. La posición
del objeto, al instante t, está dada por la fórmula
g
s(t, γ) = [sinh(ωt) − sin(ωt)] ,
2ω 2
donde g = 9, 8m/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 método de la bisección, con una tolerancia de 10−5 . ¿Cuántas
iteraciones se requiere para alcanzar la tolerancia indicada?

Código
%{
Un objeto está situado en un plano cuya pendiente verı́a a una tasa
constante w. La posición del objeto, al instante t, está dada por la fórmula
s(t,w)=[g/(w^2)][sinh(wt)-sin(wt)],
donde $g=9,8m/s^2$ es la aceleración de la gravedad. Asumiendo que el objeto
se ha desplazado 1 metro en 1 segundo, calcule el valor de $\omega$,
usando el método de la bisección, con una tolerancia de 10^(-5).
¿Cuántas iteraciones se requiere para alcanzar la tolerancia indicada?
%}
a=0.1;
b=10;
g=9.8;
t=1;

Métodos numéricos 17
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

s=1;
cont=0;
aux=0;
y=@(w)(((g./(2*(w.^2))).*(sinh(w.*t)-sin(w.*t)))-s);
while(abs(a-b)>0.00001)
cont=cont+1;
if((y(a)*y(b))<0)
aux=1;
c=((a+b)/2);
if((y(a)*y(c))<0)
b=c;
else
a=c;
end
else
disp(’No existe ceros en el intervalo’)
break;
end
end
if(aux==1)
disp(’El valor de w es: ’);disp(c)
disp(’El numero de iteraciones realizado es: ’);disp(cont)
end
Compilación

Figure 14: Compilación, ejercicio 16

Métodos numéricos 18
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

17. EJERCICIO: Escriba e implemente un programa en Matlab para calcular la raı́z cuadrada de un número
positivo a, basado en el método de Newton.

Código
%{
Escriba e implemente un programa en Matlab para calcular
la raı́z cuadrada de un número positivo a, basado
en el método de Newton.
%}
Xo=2;
a=input(’Ingrese el valor de un numero positivo: ’);
while(a<1)
a=input(’Ingrese el valor de un numero positivo: ’);
end
y=@(x)(x.^2-a);
X1=Xo-((y(Xo))./(2*Xo));
aux=X1;
while(abs(aux-Xo)>0.000001)
Xo=aux;
X1=Xo-(y(Xo))/(2*Xo);
aux=X1;
end
disp(’La raı́z cuadrada es: ’)
disp(X1)
Compilación

Figure 15: Compilación, ejercicio 17

Métodos numéricos 19
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1

5 Conclusiones
- Con el uso del software Matlab se puede realizar cálculos más extensos y complejos de manera eficiente
en comparación con otros programas o calculadoras.

- Pude obtener resultados con gran exactitud gracias al software Matlab, ya que en otros programas de
cálculo ocurren diferentes errores de aproximación o redondeo y por ende se produce pérdida de cifras
significativas.
- Podemos realizar documentos de calidad en el editor LATEX, ya que es una herramienta para la claridad y
nitidez en la parte correspondiente a matemática.

Fecha lı́mite de entrega: 28 de Noviembre de 2016

Correspondencia a: Patricio Pugarin


Email: pmpugarin@espe.edu.ec

LATEX

Métodos numéricos 20

Potrebbero piacerti anche