[MÚSICA] Gostaria de falar para vocês pouco sobre manipulações de matrizes que a gente normalmente faz, normalmente o que é que a gente faz com matrizes? A gente faz somas, multiplicações, subtrações e tem uma série de aplicações aí na engenharia, na ciência, as contabilidades, a economia, estatística, processos 'iii' que utilizam muito matrizes, somas e multiplicações de matrizes. Então, vamos ver como é que a gente pode implementar isso Python. Então, primeiro a soma, a soma é muito simples, né? A soma, tenho duas matrizes três por três, três linhas e três colunas, a primeira é essa aqui, dois, três, quatro, cinco, seis, sete, oito, nove, a segunda é essa aqui, 10, 20, 30, assim por diante. A soma de matrizes, a gente simplesmente pega elementos equivalentes, análogos aqui das duas, soma e coloca na posição análoga do resultado. Então vai ser aqui: 1 + 10 é 11, 2 + 20 22, 3 + 30, 33 e assim por diante. Depois aqui é a mesma coisa na segunda linha, 4 + 40, 44 e assim por diante até ao final aqui da minha matriz está? Então, para fazer essa soma de matrizes, eu preciso percorrer a matriz inteira e fazendo a soma a dos elementos correspondentes. Como é que a gente poderia fazer isso Python? Note que a gente vai ter, vamos fazer uma função soma matrizes, que recebe duas matrizes, matriz a e matriz b como parâmetro e devolve uma terceira matriz, que vai ser essa matriz c, por exemplo, deu o valor devolvido, que é a soma das duas matrizes, está? Então, a gente vai precisar no código, primeiro criar uma matriz c aqui de mesmo tamanho, mesmas dimensões da matriz a e b inicialmente zerada, e calculando e preenchendo ali os valores dessa matriz. Então, vamos fazer isso, só que para criar inicialmente essa matriz c eu vou usar código que a gente tinha escrito já na aula passada, que esse aqui cria_matriz, então eu gravei nesse arquivo matriz.py que a gente fez numa aula passada, esse cria_matriz, eu vou usar esse meu cria_matriz como, vou usar como se fosse módulo, está? Módulo que eu vou importar, então vou criar novo arquivo aqui diferente, e a primeira coisa que eu vou fazer é import matriz, onde essa matriz é o nome do arquivo aqui, matriz ponto.py, então vou importar aquele módulo, portanto aqui dentro eu vou poder usar a minha função cria_matriz. Só que eu vou definir aqui outra função, vou definir a soma_matrizes vai receber duas matrizes como parâmetro, e vou fazer o seguinte, primeiro eu vou chamar de c essa matriz resultante e eu vou fazer inicialmente, eu vou fazer ela ser uma matriz zerada, então vou chamar cria_matriz e agora preciso passar aqui como parâmetro, as dimensões da matriz que eu vou criar. Quais são essas dimensões? Eu vou criar uma para facilitar aqui, tornar mais didático, eu vou querer pegar outras variáveis e guardar essas dimensões, então eu vou falar aqui, números de linhas da matriz, se vocês lembrarem bem, o número de linhas vai ser o comprimento do a, porque lembra Python a gente está considerando essas matrizes como listas de listas, né? Então, seria uma lista de linhas e daí o comprimento do a seria quantas linhas essa matriz tem. Esse aqui é o número de linhas, o número de colunas seria o quê? Seria o comprimento de uma das linhas de a, por exemplo, o comprimento da linha inicial de a, que é o a de zero, o a de zero é a primeira linha de a, então o comprimento da linha zero de a é o número de colunas da matriz a. Está, então pronto, já temos as dimensões, agora eu vou pedir para criar uma matriz com num_lin_linhas, num_col_colunas e o terceiro parâmetro aqui é o valor, eu quero, eu vou começar com ela zerada. Então, pronto, já tenho uma matriz zerada para devolver o valor, já tem onde colocar os cálculos que eu vou fazer, agora eu preciso percorrer todas as linhas e todas as colunas. Então, primeiro, para percorrer todas as linhas, eu vou fazer for, comando for e eu vou ter uma variável chamada lin que vai receber todas as linhas, linha zero, linha linha dois, linha três, até chegar no final da matriz. Então, para isso eu vou fazer for lin in range e qual é que eu quero, que quero que ele vá do zero até onde? Eu quero que ele vá até ao número de linhas, que é o num_lin. Num_lin, está? Então, isso aqui que ele vai fazer, ele vai percorrer, percorre as linhas da matriz, então, isso é comentário que eu coloquei. Daí, para cada linha que é que eu vou querer fazer? Vou querer percorrer todas as colunas daquela linha, então vou precisar de outro for encaixado que para cada linha eu vou percorrer todas as colunas, então a gente vai usar for encaixados aqui vou fazer, qual é que vai ser a variável que vai conter o número da coluna? E daí, agora range no número de colunas. Então, isso aqui, ele percorre as colunas da matriz, para cada linha vai percorrer as colunas daquela linha. Pronto, daí aqui dentro, eu já estou pronto para atribuir o valor de c, então o que é que eu vou fazer? Na posição lin call dessa minha matriz c eu vou atribuir a soma dos elementos correspondentes de a e b, então vai ser a de lin call, mais b de lin call. Pronto, então esse for aqui ele vai percorrer todas as linhas, todas as colunas, então o número de atribuições que ele vai fazer vai ser, a num lin vezes num call, né? Vai preencher a matriz c completamente, e quando eu chegar aqui, terminar o segundo for, eu simplesmente posso fazer return c que ele vai devolver ali o valor da minha da minha matriz somada. Então, vamos salvar isso aqui, vou chamar de soma matrizes salvei o soma matrizes. Agora eu quero fazer testezinho nisso, para fazer testezinho eu vou fazer o seguinte, eu vou colocar aqui, quando a gente executa isso aqui como script, eu vou colocar testezinho para a gente simplesmente ver se está funcionando. Então, se está sendo executado, com o script, ou seja aqui no main, daí vamos colocar teste, vou pegar aquele teste que a gente tinha visto nos slides. Dois, três, [SEM_ÁUDIO] quatro, cinco, seis, sete, oito, nove Então, isso aqui vai ser a minha primeira matriz, matriz a, depois vou querer uma matriz b, opa, matriz b, onde vai ser dez, 20, 30, 40, 50, 60, 70, 80, 90, e daí eu vou fazer, pedir para ele imprimir o soma_matrizes de a,b está? Então, pronto, vou salvar isso aqui. Então, já salvei aqui o soma_matrizes. Daí eu vou executar isto aqui, ao executar isso como script ele já executou esses comandos aqui, né? Porque eu executei como script, então isso aqui passa a ser o main, então ele executou e a soma deu exatamente aquilo que a gente esperava né? O 11, o 22, 33, 44, 55 e assim por diante, que é o que a gente estava esperando mesmo. Então, essa é a soma de matrizes, agora vamos pensar fazer uma coisa mais complicada que é multiplicação de matrizes. Então, pensa aí como é que você faria multiplicação de matrizes, que é bem mais complicado, tente implementar, se esforce bastante e depois veja a minha solução no próximo vídeo. [MÚSICA] [MÚSICA] [MÚSICA]