Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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
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
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
Métodos numéricos 3
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1
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
Compilación
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)
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
Métodos numéricos 6
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1
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
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.
%}
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
Métodos numéricos 9
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1
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
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.
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
Métodos numéricos 11
UNIVERSIDAD DE LAS FUERZAS ARMADAS ”ESPE”
Deber No.1
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
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.
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
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
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
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
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.
LATEX
Métodos numéricos 20