Escreva um algoritmo para dada uma matriz Am times n=[cccca11 & a12 & cdots & a1 n a21 & a22 & cdots & a2 n & vdots & & am 1 & am 2 & cdots & am n]
e um vetor bn times 1=[cb1 b2 vdots bn] retorne o produto A cdot b.

Passo 1

Beleza, vamos analisar o que o exercício pede. Ele quer um algoritmo que, dado
  • uma matriz de dimensão ,
  • um vetor de dimensão ,
    retorne o produto .
Conteúdo da matéria: álgebra linear básica (produto de matriz por vetor) e lógica de programação (laços, inicialização, soma e multiplicação).
O que vamos precisar:
  • Saber que o produto de uma matriz por um vetor resulta num vetor de tamanho ,
  • Entender que cada entrada desse vetor é o “produto interno” (dot product) entre uma linha de e o vetor ,
  • Definir laços aninhados para percorrer linhas e colunas.

Passo 2

Antes de codificar, entenda a teoria:
Para cada linha ci ;=;sumj=1^n aij,bj de , o elemento do vetor resultado é
Isso é só a soma de cada vezes — o famoso produto escalar entre a linha e o vetor .

Passo 3

Agora, monta o algoritmo em pseudocódigo, passo a passo:
Algoritmo MatrizVetor(A, b, m, n):
  // A é m×n, b é n×1
  criar vetor c de tamanho m

  para i de 1 até m faça
    c[i] ← 0                // inicializa o acumulador
    para j de 1 até n faça
      c[i] ← c[i] + A[i][j] * b[j]
    fim para
  fim para

  retornar c
Explicando:
  • Primeiro criamos o vetor c com m posições.
  • O laço externo (índice i) escolhe a linha de A.
  • Dentro dele, inicializamos c[i] em zero pra começar a soma.
  • O laço interno (índice j) percorre as colunas da linha i, multiplica A[i][j] por b[j] e acumula em c[i].

Resposta

O algoritmo acima retorna o vetor ci = sumj=1^n aij,bj, cujos componentes são
implementando exatamente o produto .

Exercícios relacionados