Olá, conseguiu fazer a multiplicação de matrizes? Vamos fazer agora o conjunto aqui. Multiplicação de matrizes é mais complicado porque a soma era só somar os elementos análogos, a multiplicação não é só multiplicar os elementos análogos. A definição de multiplicação de matrizes assim como a matemática define e, é utilizado nas engenharias, nas ciências, na economia aí afora é diferente. Como é que é? Então se eu quero multiplicar essa matriz aqui, supor, uma matriz de duas linhas três colunas, por uma matriz de duas colunas e três linhas, que que eu tenho que fazer? Primeiro, eu pego essa primeira linha e multiplico ela inteira como produto vetorial pela primeira coluna. Como que seria esse calculo aqui? Eu tenho que fazer, esse vezes mais aqui, esse dois vezes três, não é? Dois vezes três mais três vezes cinco, três vezes cinco. Quanto dá isso? Aqui dá 15 mais seis, 21 22 não é? Então o primerio elemento aqui dessa minha matriz vai ser 22. Daí eu tenho que fazer a mesma coisa. O segundo elemento aqui vai ser a primeira linha da primeira matriz vezes a segunda coluna da segunda matriz. Daí eu preciso fazer esse cálculo. Então, esse cálculo seria esse vezes dois, dois vezes quatro, três vezes seis, isso dá 28. Então aqui viria o 28. Depois o elemento aqui de baixo, da segunda linha da primeira coluna seria a segunda linha vezes a primeira coluna daqui. Então, seria o quatro vezes mais cinco vezes três mais seis vezes cinco, que dá 49, não é? Então, aqui seria o 49. E finalmente, aqui o último elemento do meu resultado seria última linha vezes a última coluna, então seria quatro vezes dois, dá oito, mais cinco vezes quatro, dá vinte, mais seis vezes seis, 36 que dá 64. Então, esse é o jeito de eu fazer multiplicação de matrizes e é isso que a gente vai precisar implementar. Então, é pouquinho mais complicado porque a gente vai precisar primeiro de dois laços encaixados para percorrer todas as linhas e as colunas dessa matriz resultante, que nem a gente fez aqui. A gente calculou quatro coisas e a gente vai precisar desses duas linhas duas colunas, dois foram encaixados para percorrer essas linhas e as colunas na matriz resultante, daí, para cada elemento da matriz resultante a gente precisa de terceiro for encaixado que é quem vai fazer o produto vetorial, que vai fazer o produto de uma linha dessa primeira matriz com uma coluna da segunda matriz. Então vamos implementar isso aqui Python. Eu vou abri aqui o iDLE vou abrir novo arquivo, new file, então, se porque eu quero criar aqui mat_mul multiplicação de matrizes, recebi duas matrizes como parâmetro, primeira coisa que eu preciso me atentar é o numero de linhas e colunas das matrizes. Então, eu posso fazer algo desse aqui, desse tipo. Número de linhas de A o número de colunas de A recebe quanto? O len de A e o len de A de zero já vimos isso, não é? E agora eu vou fazer a mesma coisa para a matriz B então o número de linhas de B e o número de colunas de B, recebe o len de B e o B de zero, len de B de zero então pronto. Agora, para dar certo essa multiplicação o número de colunas de A tem que ser igual ao número de linhas B, se não vai dar certo o algoritmo da multiplicação. Então, eu posso fazer assert aqui para verificar isso. Então, eu preciso que o número de colunas de A seja igual ao número de linhas de B. Se não for, nem adianta eu tentar calcular a multiplicação. E agora, eu vou precisar então de uma variável para guardar o resultado, eu vou chamar de C e vez de criar uma matriz agora chamando aquele método que a matriz que eu usei na soma, eu vou criando a matriz à medida que eu vou calculando aqui para a gente ver outra forma de fazer isso. Então, eu vou começar o C com uma lista vazia aqui, e daí, para cada linha eu vou acrescentando os elementos aos poucos. Então, eu vou fazer o seguinte: for linha in range daí eu vou percorrer aqui as linhas do A, então, a gente vai percorrer todas as linhas do A faça o seguinte, então, que a gente vai estar começando uma nova linha. O que que a gente vai fazer? Vai começar uma nova linha. Eu vou começar acrescentando no C uma nova linha vazia então pronto. Com esse comando eu acrescentei uma nova linha vazia ao C e agora vamos preencher essa linha. Para preencher essa linha a gente vai percorrer todas as colunas aqui do B então se eu dou o número de colunas do B [SEM_ÁUDIO] e aqui agora eu vou adicionando uma nova coluna na linha. Então, primeiro, agora a gente esse produto vetorial a gente vai fazer uma soma de multiplicações de valores da matriz A com valores da matriz B e a gente vai ter que ir acumulando essa soma, então, a gente precisa inicializar aquela célula da matriz C com o elemento neutro da soma que é zero. A gente vai começar a acumular uma soma, então vamos inicializar com o zero para fazer isso aqui a linha, essa certa linha do C eu vou acrescentar no final dela zero. E daí, a partir daí a gente vai fazendo uma soma acumulativa. Para fazer essa soma acumulativa a gente vai precisar daquele terceiro for, que é o for que vai fazer o produto vetorial. Então, for daí eu vou ter uma outra variável eu vou chamar de K, variável qualquer in range, e daí o que a gente vai precisar fazer aqui, a gente vai precisar do num de colunas do A. E daí sim a gente vai atribuir e fazer o cálculo. Então, para o C de linha coluna eu vou acrescentar então uma soma acumulativa, então eu vou usar mais igual e aqui vai ter a multiplicação, então eu pego o A na matriz A, o que está na linha Linha, e o que está na coluna K eu vou multiplicar pela matriz B que está na linha K e na coluna Coluna. Então, fazendo isso essa linha vai fazer aquele produto vetorial. E ele vai fazer o produto vetorial quantas vezes? Ele vai fazer num linhas de A vezes num colunas B vezes e dessa forma vai preenchendo todos os elementos ali da matriz, daí, ao chegar ao final eu simplesmente vou fazer return C, vamos colocar aqui no final desse script exemplinho só. Então, se eu fizer isso aqui, então, se eu tiver executando como script, e não importando essa função como módulo daí o que que eu gostaria? Primeiro vamos definir o A? Eu vou pegar aquele meu exemplo mesmo, está? Então é dois, três, quatro, cinco, seis A recebe não é? E daí o B recebe aquele mesmo do exemplo, dois, segunda linha três, quatro e a terceira linha é cinco, seis. Então, esse aqui é testezinho, daí, simplesmente eu vou dar print chamar função, que a função se chama mat_mul a vírgula b Então pronto. Salvar aqui salvar num arquivo chamado multiplica matrizes, salvar. E eu vou executar aqui esse módulo como se fosse script. Executou, deu sorte de não ter nenhum erro de compilação de sintaxe, até que eu acertei de primeira por sorte, por sorte ou experiencia e ele deu aqui o cálculo. O cálculo foi o que a gente tinha calculado 22, 28, 49, 64 22, 28, 49, 64. Então, dê uma estudada nesse código de multiplicação de matrizes, que é algo pouquinho mais complicado mas que é jeito de a gente exercitar bem aí o cérebro com manipulação de matriz. Então por hoje é só. [MÚSICA] [MÚSICA] [MÚSICA]