Actualizado el 21 de Marzo del 2018 (Publicado el 19 de Noviembre del 2017)
1.212 visualizaciones desde el 19 de Noviembre del 2017
90,4 KB
2 paginas
Creado hace 9a (16/08/2015)
Programaci´on:
producto de dos vectores por componentes
Objetivos. Programar la funci´on que calcule el producto de dos vectores por componen-
tes.
Requisitos. Programaci´on de funciones, ciclos for, entradas de vectores.
1. Producto de dos vectores por componentes. Dados a, b ∈ Rn, denotemos por
a (cid:12) b su producto por componentes:
(cid:104)
(cid:105)n
.
j=1
a (cid:12) b =
ajbj
En el lenguaje de MATLAB el producto a (cid:12) b se puede calcular como a .* b.
2. Problema: producto punto de dos vectores. En alg´un lenguaje de programaci´on
escribir una funci´on que calcule el producto por componentes de dos vectores dados.
Entrada: a, b ∈ Rn.
Condici´on que debe cumplir la entrada: los vectores dados son de la misma longitud.
No tiene que verificar esta condici´on.
Salida: el vector(cid:2)ajbj
(cid:3)n
j=1.
Soluci´on en el lenguaje de MATLAB (guardar en el archivo componentwiseproduct.m):
function p = componentwiseproduct(a, b),
n = length(a);
p = zeros(n, 1);
for j = 1 : n,
p(j) = a(j) * b(j);
end
end
3. An´alisis de complejidad. Calcular el n´umero de operaciones de multiplicaci´on en el
algoritmo anterior. La respuesta es un polinomio de la variable n.
Programaci´on: producto de dos vectores por componentes, p´agina 1 de 2
4. Pruebas con vectores peque˜nos. En alg´un lenguaje de programaci´on escribir un
programa que llame a la funci´on del ejercicio anterior, aplic´andola a los vectores
a =
b =
,
3−4
1
.
2
5−2
Soluci´on en MATLAB (guardar en el archivo testcomponentwiseproduct1.m):
function [] = testcomponentwiseproduct1(),
a = [3; -4; 1]; b = [2; 5; -2];
display(componentwiseproduct(a, b));
display(a .* b);
end
5. Pruebas con vectores grandes aleatorios. En alg´un lenguaje de programaci´on
escribir un programa que genere vectores de tama˜nos grandes: n = 104, luego n = 105,
luego n = 106, aplique a estos vectores la funci´on del Ejercicio 2 y mida el tiempo de
ejecuci´on. Soluci´on en MATLAB (guardar en el archivo testcomponentwiseproduct2.m):
function [] = componentwiseproduct2(),
for n = [100000, 1000000, 10000000],
display(n);
a = rand(n, 1); b = rand(n, 1);
tic;
p = componentwiseproduct(a, b);
t = toc;
display(t);
end
end
¿C´omo se cambia el tiempo de ejecuci´on al multiplicar n por 10?
Programaci´on: producto de dos vectores por componentes, p´agina 2 de 2
Comentarios de: Programación: producto de dos vectores por componentes (0)
No hay comentarios