Programaci´ on: construcci´ on de vectores

Texto completo

(1)

Programaci´ on: construcci´ on de vectores

cuyas componentes est´ an dadas por ciertas reglas

Objetivos. Aprender a construir vectores cuyas componentes est´an dadas por ciertas reglas.

Requisitos. Programaci´on con funciones, arreglos y ciclos. Comandos especiales para crear progresiones aritm´eticas.

Ejemplo: vector de 1 y −1, varios m´ etodos de construcci´ on

1. Ejemplo: signos alternantes, soluci´on con ciclos. Dado un n´umero natural n, la funci´on tendr´a que regresar el vector

v =(−1)k−1n k=1.

Por ejemplo, para n = 5 la funci´on debe regresar el vector 1, −1, 1, −1, 1>. Ejemplo de soluci´on con un ciclo (guardar en alt1.m):

function [v] = alt1(n), v = zeros(n, 1);

for j = 1 : n,

v(j) = (-1) ^ (j - 1);

end end

Para probar la funci´on, ejecutamos uno por uno los siguientes comandos en el int´erprete:

alt1(5) alt1(8)

2. Signos alternantes, soluci´on con dos puntos y operaciones por componentes.

El lenguaje Matlab es c´omodo usar la operaci´on : (dos puntos) para construir progresiones aritm´eticas de n´umeros enteros. Para recordar la sintaxis de la operaci´on :, ejecutamos los siguientes comandos:

3 : 7 1 : 3 : 20 10 : -2 : 1

Adem´as est´an definidas operaciones por componentes:

[2; 2; 2; 2; 2] .^ [1; 2; 3; 4; 5]

Programaci´on: construcci´on de vectores, p´agina 1 de 4

(2)

Lo mismo podemos escribir de manera m´as eficiente:

repmat(2, 5, 1) (1 : 5)’

repmat(2, 5, 1) .^ (1 : 5)’;

Usando las herramientas anteriores construimos el vector de 1 y −1 sin ciclos:

function [v] = alt2(n),

v = repmat(-1, n, 1) .^ (1 : n)’;

end

3. Usar una relaci´on recursiva. Podemos notar que v1 = 1 y para cada j ∈ {2, . . . , n}

se cumple la igualdad vj = −vj−1. function [v] = alt3(n),

v = ones(n, 1);

for j = 2 : n,

v(j) = - v(j - 1);

end end

4. Poner valores correctos en lugares adecuados, con dos ciclos. Otra idea es poner los valores 1 y −1 en lugares adecuados del vector construido. Primero realizamos esta idea con ciclos:

function [v] = alt4(n), v = zeros(n, 1);

for j = 1 : ceil(n / 2), v(2 * j - 1) = 1;

end

for j = 1 : floor(n / 2), v(2 * j) = -1;

end end

5. Poner valores correctos en lugares adecuados, con un ciclo.

function [v] = alt5(n), v = zeros(n, 1);

for j = 1 : floor(n / 2), v(2 * j - 1) = 1;

v(2 * j) = -1;

end

if mod(n, 2) == 1, v(n) = 1;

end end

Programaci´on: construcci´on de vectores, p´agina 2 de 4

(3)

6. Poner valores correctos en lugares adecuados, sin ciclos. Se recomienda ejecutar los siguientes comandos:

w = ones(6, 1);

w([2, 5, 6]) = 7;

w(1 : 2 : 6) = -5;

Ahora podemos resolver el mismo problema sin ciclos:

function [v] = alt6(n), v = ones(n, 1);

v(2 : 2 : n) = -1;

end

Ejercicios

En cada uno de los siguientes ejercicios est´an dados vectores de longitudes 4 y 5. Hay que descubrir (adivinar) una regla simple que define estos vectores y escribir una funci´on que construya vectores de esta forma de longitud dada n. Se recomienda probar varios m´etodos de soluci´on.

Se pueden omitir los ejercicios cuyas soluciones ya son obvias.

7. Vector con valores 5 y −7.

n = 4 :

 5

−7 5

−7

, n = 5 :

 5

−7 5

−7 5

 .

8. Progresi´on aritm´etica rec´ıproca.

n = 4 :

 1 1/2 1/3 1/4

, n = 5 :

 1 1/2 1/3 1/4 1/5

 .

9. Progresi´on aritm´etica invertida.

n = 4 :

 4 3 2 1

, n = 5 :

 5 4 3 2 1

 .

Programaci´on: construcci´on de vectores, p´agina 3 de 4

(4)

10. Progresi´on geom´etrica con base 3.

n = 4 :

 1 3 9 27

, n = 5 :

 1 3 9 27 81

 .

11. Vector constante de longitud n cuyas componentes son iguales a n.

n = 4 :

 4 4 4 4

, n = 5 :

 5 5 5 5 5

 .

12. Progresi´on aritm´etica m´odulo 3.

n = 4 :

 0 1 2 1

, n = 5 :

 0 1 2 0 1

 .

13. Al ritmo de vals.

n = 4 :

 3 0 0 3

, n = 5 :

 3 0 0 3 0

 .

14. Factoriales.

n = 4 :

 1 1 2 6

, n = 5 :

 1 1 2 6 24

 .

15. Multiplicar por 2 y a˜nadir 3.

n = 4 :

 1 2 5 10

, n = 5 :

 1 2 5 10 13

 .

Programaci´on: construcci´on de vectores, p´agina 4 de 4

Figure

Actualización...

Referencias

Actualización...

Related subjects :