You are on page 1of 17

Deber No1

PRIMER PARCIAL

Métodos Numéricos

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úmero entero
positivo menor que un millón (1000000) y devuelva a pantalla el número 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<=1000000 && round(n)==n
disp(’Numero ingresado:’), disp(n)
if (mod(n,2))==0
disp(’Numero par’)
else
disp(’Numero impar’)
end
else
disp(’El numero ingresado es icorrecto’)
end

Ejecución del Programa:

>> 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ón del Programa:

EJERCICIO 3: Graficar la siguiente función y sus derivadas, en un solo gráfico de manera


superpuesta.

−x
e
 si x < −1
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ón 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ás 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ón del Programa:

4
>> PolRaices(1,2,-2)
Las raices son diferentes

x1 =

0.7321

x2 =

-2.7321
EJERCICIO 5: Tabla de conversión de temperatura. La relación de diversas escalas de
temperatura con la escala Celsius (C), es la siguiente:
F = 95 C + 32

K = C + 273, 15
8
R= 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ón necesaria para su funcionamiento. Además, el
programa siempre esperará información 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ón 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ón m.file con la que se pueda graficar la función paramétri-
ca siguiente: (
x(t) = (R + r)cos(t) − rcos( R+rr
t)
z(t) = R+r
y(t) = (R + r)sin(t) − rsen( 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.
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ón 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úmero de sustancia en la primera columna y las mediciones
realizadas en las otras 4 columnas. Mostrar en pantalla el número 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ón 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ón


1 (− 12 (x−µ)T −1 (x−µ))
P
fx (x1 , ..., xn ) = P e
(2π)n/2 | |1/2
 
T
P 3 −1
Para el caso n = 2, usar los siguientes valores de las constantes u = (10, 10) , = .
−1 4

8
P P
El sı́mbolo | | significa el determinante de la matriz .
Programa:

%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ón del Programa:

EJERCICIO 9: Escriba un programa que busque los números amigables y diferentes entre
1 y 1000. Dos números 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ón del Programa:
>> NumAmigables
Los numeros amigos son

num =

220 284
284 220

EJERCICIO 10: Realizar una función tal que ingresado un numero 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.
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ón del Programa:
>> Primos1aN
Ingrese hasta que numero desea visualizar los numeros primos: 20

10
2

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úmero de cifras significativas de la aproximación.

a)x = 2, 71828182, x̂ = 2, 7182


b)y = 98350, ŷ = 98000
c)z = 0; 000068, ẑ = 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ón 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
h2 h4
cos(h) = 1 − + + O(h6 )
2! 4!

12
Determine el orden de aproximación 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!
1 h2
+ cos(h) = 2 + h + + h3 + O(h4 )
1−h 2
De su producto:

1 h2 h4 h4 h6 h5
∗ 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étodos de la bisección y newton
a mano de la ecuación :
x2 − 4xsin(x) + (2sin(x))2
que sea exacta hasta la segunda cifra significativa , solo con el empleo de una calculadora
Método 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ón x0 = 1,9
f (x0)
x1 = x0 +
f 0 (x0)
f (1,9)
x1 = 1,9 +
f 0 (1,9)
x1 = 1, 8999
Segunda iteración x1 = 1,8999

f (1,8999)
x2 = 1,8999 +
f 0 (1,8999)
0, 00005234
x2 = 1,8999 +
1, 2477
f (x3)
Tercera iteración x3 = x3 + f 0 (x3)

0, 00005135
x3 = 1,8998 +
1, 2463
x3 = 1, 8997
f (x3)
Cuarta iteración x4 = x3 + f 0 (x3)

0, 00004769
x4 = 1,8997 +
1, 2455
x4 = 1, 8996

13
|1,8996 − 1,8997| 10−d
Rx = = 0, 00005263 <
1,8997 2
d=4
Se tienen 4 cifras significativas.

EJERCICIO 14: Con los programas: método de la bisección , newton y método de la se-
cante, 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étodo de la bisección debido a que la gráfica se encuentra por encima
del eje X, dando un error al momento de realizar los diferentes intervalos de operación para el
método, 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ón 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ón del Programa:

>> RaizNewton
La raiz es:
0.5236

Cantidad de iteraciones
4

EJERCICIO 16: Considere 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.
λ = 1; cuando se tiene ésta condición no se encuentra un corte con el eje x, por lo tanto nunca
se podrá encontrar una solución al aplicar el método de la bisección. Si λ = 2; de igual manera
se encuentra sobre el eje x y tampoco se puede aplicar el método. Si λ = 3; ahora si se puede
utilizar el método, debido a que si hay una intersección 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))<0
c=(a+b)/2;
if(fx(a)*fx(c))<0
b=c;
else
a=c;
end
else
disp(’El intervalo ingresado no tiene corte’)
break

15
end
cont=cont+1;
end
disp(’La raiz es’)
disp(c)
disp(’Cantidad de iteraciones’)
disp(cont)

Ejecución del Programa:

>> 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ón del objeto al instante t, esta dada por la fórmula.
g
s(t, w) = ∗ [senh(wt) − sen(wt)]
2w2
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 2 usando el método de la bisección con una tolerancia
de 10− 5 ¿Cuántas iteraciones se requieren para alcanzar la tolerancia indicada?
Programa:

%Programa que calcula w por el método de bisección


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)<0
c=(a+b)/2;
if f(a)*f(c)<0
b=c;
else
a=c;
end
cont=cont+1;
end
end
disp(’w es igual a ’);
disp(c);
disp(’Cantidad de Iteraciones ’)
disp(cont);

Ejecución del Programa:

>> 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úmero positivo a basado en el método 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ón del Programa:

>> RaizCuadradaNewton
Ingrese un numero para sacar su raiz:9
La raiz es
3.0000

Cantidad de iteraciones
6

17

You might also like