Product between vectors

Asked

Viewed 51 times

-1

The user chooses the number of positions of two vectors and makes the product between them and displays in the list the result, the code I made is below

v1 = int(input("Digite a quantidade de posições do seu vetor: "))

lista1 = []

for i in range(v1):

  lista1.append(int(input("Informe o valor da posição %d: " % (i+1))))

vetor1 = lista1

v2 = int(input("Digite a quantidade de posições do seu vetor: "))

lista2 = []

for i in range(v2):

  lista2.append(int(input("Informe o valor da posição %d: " % (i+1))))

vetor2 = lista2

lista3 = []

if len(vetor1) == len(vetor2):

  p = vetor1 * vetor2

  p = lista3

else:

  print("Não é possível calcular o produto escalar de vetores com dimensões distintas.")

Error message:

TypeError                                 Traceback (most recent call last)

<ipython-input-75-a40e9ce08c1c> in <module>()

     11 lista3 = []

     12 if len(vetor1) == len(vetor2):

---> 13   p = vetor1 * vetor2

     14   p = lista3

     15 else:

TypeError: can't multiply sequence by non-int of type 'list'

2 answers

2

There is no sequence multiplication implementation in python, so the error message.

You can calculate the scalar product using the function zip to iterate over the two lists "at the same time" and multiplying their values.

produto_escalar = [a * b for a, b in zip(vetor_1, vetor_2)]

Up I’m using list comprehensions to generate the result list, but you could create a list and enter the values manually.

produto_escalar = []
for a, b in zip(vetor_1, vetor_2):
    produto_escalar.append(a * b)

1

Hello,

From what I understand, the problem lies in trying to directly multiply the vectors. As such vectors are represented by lists, this operation is not possible directly. A possible output is the following, with the realization of the multiplications in isolation between the values of each vector:

v1 = int(input("Digite a quantidade de posições do seu vetor: "))
lista1 = []
for i in range(v1):
  lista1.append(int(input("Informe o valor da posição %d: " % (i+1))))
vetor1 = lista1
v2 = int(input("Digite a quantidade de posições do seu vetor: "))
lista2 = []
for i in range(v2):
    lista2.append(int(input("Informe o valor da posição %d: " % (i+1))))
vetor2 = lista2
lista3 = []
print(vetor1)
print(vetor2)
if len(vetor1) == len(vetor2):
    n = 0
    for c in vetor1:
        lista3.append(vetor1[n] * vetor2[n])
        n = n + 1
    print(f'O produto escalar do vetor informado corresponde a', sum(lista3))
else:
    print("Não é possível calcular o produto escalar de vetores com dimensões distintas.")

Browser other questions tagged

You are not signed in. Login or sign up in order to post.