Sie sind auf Seite 1von 5

Programacion y metodos numericos: Correccion 1o parcial

Mateo Andres Duran Barraza


8 de octubre de 2015

1. Ejercicio 1
1.1. Problema
Se tiene que un n umero X es abundante si la suma de sus divisores es mayor que el n umero en si,
deficiente si la suma es menor que el n
umero y perfecto si ambas son iguales. Se tiene que crear un codigo
umeros son deficientes, decrecientes o perfectos: 4400 8128 10! 240 666666666.
que halle si estos n

1.2. Soluci
on
Se creo un c
odigo que determinaba si un n umero N es deficiente, perfecto o abundante. Para esto se
creo un ciclo en el que si X es divisible por alg
un n
umero, ese numero se sumaria al resto de divisores y
luego al obtener la suma total de divisores se comparo con N y se obtuvo a que clasificacion perteneca.

1.3. Resultados
4400 es un numero abundante, 8128 es un numero perfecto, 3628800 es un numero abundante, para
240 GNU OCTAVE dice que el rango es invalido por lo tanto no se pudo realizar para este n umero, con
666666666 el c odigo no arrojo resultado, se dejo por mas de 5 minutos y segua calculando as que se
prefiri
o dejarlo sin resolver.

1.4. Conclusiones y c
odigo
1. Los n
umeros impares son deficientes.

2. El c
odigo es util para n
umeros relativamente peque nos pero para numeros mas grandes el tiempo
invertido es grande, esto se debe a que el codigo por dentro tiene muy poca matematica.

A. Codigo
function problema1(x)
s=0;
for n=1:(floor((x/2)+1))
a=mod(x,n);
if a==0
s=s+n;
end
end
if s<x
fprintf("%d es un numero deficiente\n",x)
elseif s>x
fprintf("%d es un numero abundante\n",x)
else s==x
fprintf("%d es un numero perfecto\n",x)
end

1
2. Ejercicio 2
2.1. Problema
XN XN
Realizar un c
odigo que calcule m(x) = ( xi )/N y e(x)=log(( exi )/N ) para cualquier vector,
i=1 i=1
luego se debe aplicar a una matriz de tama
no mxn donde m corresponde a vectores y averiguar para que
porcentaje m(x) e(x).

2.2. Soluci
on
El c
odigo realizado hallaba los m(x) y e(x) tanto para vectores como para matrices, luego se cogieron
tres matrices de tama no mxn aleatorio y se compararon sus m(x) y e(x) para hallar el porcentaje para
el que m(x) es mayor que e(x).

2.3. Resultados
Ejemplo. 1

Se usa el c
odigo y se halla el m(x) y e(x) para un vector de 7 columnas.
octave:7> a
a =

4 6 9 5 8 8 9

octave:8> problema2(a)
m = 7
e = 8.0875
Ejemplo. 2

Ahora se procede a usar el c


odigo para 3 matrices de dimension 6x2, 4x3, 4x6.
octave:14> a
a =

7 9
4 5
5 0
4 2
4 3
5 6

octave:15> b
b =

2 9 8
2 0 1
3 1 2
8 8 0

octave:16> c
c =

8 7 5 7 4 4
0 0 5 1 3 5
4 7 0 1 0 8
7 7 8 8 5 7

2
octave:17> problema2(a)
m =

8.0000 4.5000 2.5000 3.0000 3.5000 5.5000

e =

8.4338 4.6201 4.3136 3.4338 3.6201 5.6201

octave:18> problema2(b)
m =

6.3333 1.0000 2.0000 5.3333

e =

8.2153 1.3090 2.3090 7.5947

octave:19> problema2(c)
m =

5.8333 2.3333 3.3333 7.0000

e =

6.8083 3.9816 6.5359 7.3567


Los m(x) correspondientes a e(x) est an colocados en columna, como se puede observar siempre e(x)
m(x), no se coloca el estricto ya que nada nos dice que no pueda ser de esa forma.

2.4. Conclusiones y c
odigo
1. Para cualquier vector e(x) m(x), es decir que m(x) es mayor que e(x) en el 0 % de los casos.

A. Codigo
function problema2(x)
[f,c]=size(x);
a=x;
m=(sum(a))/c;
e=log((sum(e.^a))/c);
m
e

3. Ejercicio 3
3.1. Problema
N
X 1 1 1 1
Se tiene la serie = 1 + + + +. . . Se debe que hallar un programa tal que dado un
i=1
i 2 3 4
n
umero x, diga cuantos terminos hay que sumar para que la suma parcial exceda x por primera vez. En
otras palabras, se debe calcular el menor n
umero entero N tal que
N
X 1
x
i=1
i

Hallar el valor de N para x = 10, x = 100 y x = 1000.

3
3.2. Soluci
on
El programa calcula la serie uno por uno y a penas encuentra un valor mayor que x arroja el N
correspondiente.

3.3. Resultados
Se hall
o el N para los tres valores dados
octave:29> problema3(10)
N = 33
octave:30> problema3(100)
N = 2574
octave:31> problema3(1000)
N = 250731

3.4. Conclusiones y c
odigo
1. El programa es muy lento ya que no tiene mucha matematica interna.

2. A mayor x mayor es el valor de i ya que cada vez aumenta menos.

A. Codigo
function problema3(x)
s(1)=1;
for N=2:999999;
s(N)=s(N-1)+(1/sqrt(N));
if s(N)>x
N
break
end
end

4. Ejercicio 4
4.1. Problema
Todo numero N puede ser representado de la forma N = 2k m, donde k corresponde la exponente
de 2 y m a la parte impar de N. Se debe crear un codigo que calcule k, m, y en particular el k y m de
N=2113123909632.

4.2. Soluci
on
Se cre
o un c
odigo que calculaba la parte impar de N y por lo tanto su parte par(si el n
umero tenia).

4.3. Resultados
Se hall
o el valor de k y m para el N solicitado
octave:38> problema4(2113123909632)
k = 34
m = 123

4
4.4. Conclusiones y c
odigo
1. El c
odigo es relativamente rapido, esto se debe a que solo divide el n
umero por 2 y cuando no
puede ese valor es la parte impar.

A. Codigo
function problema4(x)
if 0==mod(x,2)
k=0;
a=mod(x,2);
while (a==0)
x=x/2;
a=mod(x,2);
m=x;
k=k+1;
end
else 0~=mod(x,2)
k=0;
m=x;
end
k
m