Actualizado el 21 de Marzo del 2018 (Publicado el 19 de Noviembre del 2017)
2.678 visualizaciones desde el 19 de Noviembre del 2017
100,4 KB
2 paginas
Creado hace 8a (30/01/2017)
Programaci´on: producto di´adico
Objetivos. Programar una funci´on que calcule el producto di´adico de dos vectores dados.
Requisitos. Programaci´on de funciones, ciclos for, entradas de vectores.
1. Definici´on del producto di´adico. Dados dos vectores a ∈ Rm, b ∈ Rn, su producto
di´adico a ⊗ b se define de la siguiente manera:
(cid:104)
(cid:105)m,n
a ⊗ b =
ajbk
.
j,k=1
En otras palabras, a ⊗ b es una matriz m × n, cuya entrada (j, k) es
(a ⊗ b)j,k = ajbk.
En ingl´es su usan las palabras outer product, dyadic product, tensorial product.
2. Ejemplo. Escribir el producto di´adico a ⊗ b de los vectores
Mostrar que el resultado coincide con el producto matricial
a =
a2
a3
,
a1
a1
a2
a3
ab(cid:62) =
(cid:20) b1
b2
(cid:21)
.
(cid:3) .
b2
b =
(cid:2) b1
3. Problema: producto di´adico. En alg´un lenguaje de programaci´on escribir una fun-
ci´on que calcule la matriz ab(cid:62), donde a ∈ Rm y b ∈ Rn son dos vectores dados.
Entrada: a ∈ Rm, b ∈ Rn.
Salida: la matriz ab(cid:62).
Soluci´on en el lenguaje Matlab (guardar en el archivo outerproduct.m):
function [r] = outerproduct(a, b),
m = length(a);
n = length(b);
r = zeros(m, n);
for j = 1 : m,
for k = 1 : n,
r(j, k) = a(j) * b(k);
end
end
end
Programaci´on: producto di´adico, p´agina 1 de 2
4. An´alisis de complejidad. Calcular el n´umero de operaciones de multiplicaci´on en el
algoritmo anterior, suponiendo que m = n. La respuesta es un polinomio de la variable n.
5. 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 siguientes datos:
,
3−4
1
(cid:20) 2
5
(cid:21)
.
a =
b =
Soluci´on en el lenguaje de Matlab (guardar en el archivo testouterproduct1.m):
function [] = testouterproduct1(),
a = [3; -4; 1]; b = [2; 5];
display(outerproduct(a, b));
display(a * b’);
end
6. Pruebas con vectores grandes aleatorios. En alg´un lenguaje de programaci´on
escribir un programa que genere vectores de tama˜nos grandes: n = 10, n = 102, n = 103,
aplique a estos vectores la funci´on del Ejercicio 3 y mida el tiempo de ejecuci´on. Soluci´on
en el lenguaje de Matlab (guardar en el archivo testouterproduct2.m):
function [] = testouterproduct2(),
for n = [512, 1024, 2048],
display(n);
a = rand(n, 1);
b = rand(n, 1);
t1 = cputime();
p = outerproduct(a, b);
t2 = cputime();
display(t2 - t1);
end
end
¿C´omo se cambia el tiempo de ejecuci´on al multiplicar n por 2?
Programaci´on: producto di´adico, p´agina 2 de 2
Comentarios de: Programación: producto diádico (0)
No hay comentarios