Professional Documents
Culture Documents
PRIMER PARCIAL
Métodos Numéricos
NRC: 1113
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
>> 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
2
Ejecución del Programa:
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
>> 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
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
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
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
8
P P
El sı́mbolo | | significa el determinante de la matriz .
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:
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.
Programa:
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)
>> ErrorAbsRelat
Literal a:
El error absoluto es:
8.1820e-05
Literal b:
El error absoluto es:
350
Literal c:
El error absoluto es:
8.0000e-06
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)
>> 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.
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)
>> RaizNewton
La raiz es:
0.5236
Cantidad de iteraciones
4
15
end
cont=cont+1;
end
disp(’La raiz es’)
disp(c)
disp(’Cantidad de iteraciones’)
disp(cont)
>> 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:
>> CalcWBiseccionIterac
w es igual a
16
0.6121
Cantidad de Iteraciones
17
%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)
>> RaizCuadradaNewton
Ingrese un numero para sacar su raiz:9
La raiz es
3.0000
Cantidad de iteraciones
6
17