Aula de hoje. Python para disciplinas básicas. Computação científica. Introdução. Álgebra Linear. Álgebra linear

Documentos relacionados
Curso básico de Python para estudantes de Física

Aula 10 Introdução ao NumPy

Python - Matrizes e vetores. George Sand

Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias

PROGRAMA DE DISCIPLINA

Geometria Analítica e Álgebra Linear

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Matrizes material teórico

Pré-requisitos Algebra Linear. Lorí Viali. Afiliação

Uma matriz m x n é um quadro de elementos dispostos em m linhas e n colunas. Os valores de m e n são sempre positivos e inteiros.

Elementos de Matemática Avançada

Universidade Federal de Alagoas UFAL Centro de Tecnologia - CTEC Programa de Pós-Graduação em Engenharia Civil - PPGEC

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Revisão: Matrizes e Sistemas lineares. Parte 01

Introdução ao Python. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Análise multivariada

Pensamento. "A escada da sabedoria tem os degraus feitos de números." (Blavatsky) Prof. MSc. Herivelto Nunes

Apostila de Matemática 10 Matriz

Apostila de Matemática 11 Determinante

Instituto de Economia UFRJ Prof: Ary Álgebra Linear 2017/1 PROGRAMA

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS CONSELHO DE GRADUAÇÃO

Álgebra Linear e Geometria Anaĺıtica. Matrizes e Sistemas de Equações Lineares

Autovalores e Autovetores

Revisão de Álgebra Linear

Álgebra Linear I - Aula Forma diagonal de uma matriz diagonalizável

Aula de hoje. Códigos numéricos. Códigos binários. Armazenamento de dados. Armazenamento de dados. Armazenamento de dados

Álgebra Linear. Professor Alessandro Monteiro. 1º Sábado - Matrizes - 11/03/2017

Álgebra Linear e Geometria Analítica Bacharelados e Engenharias Parte I - Matrizes

ÁLGEBRA LINEAR E GEOMETRIA ANALÍTICA

UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: ÁLGEBRA LINEAR PROF.: MARCELO SILVA.

n. 1 Matrizes Cayley (1858) As matrizes surgiram para Cayley ligadas às transformações lineares do tipo:

Esquações Lineares e Matrizes

Notas em Álgebra Linear

Vetores e Geometria Analítica

MATRIZES. Fundamentos de Matemática- Ciências Contábeis

PLANO DE ENSINO e APRENDIZAGEM Álgebra Linear

a mnx n = b m

Séries Numéricas 2,10,12,16,17,18,19,? 2,4,6,8,10,? 2,4,8,16,32,?

Determinantes - Parte 02

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Algoritmos e Programação

5. Seja A uma matriz qualquer. Assinale a afirmativa

PLANO DE ENSINO E APRENDIZAGEM

Aula 5 - Produto Vetorial

Álgebra Linear I - Aula 22

G3 de Álgebra Linear I

Eduardo. Matemática Matrizes

- identificar operadores ortogonais e unitários e conhecer as suas propriedades;

Renato Martins Assunção

Formação Continuada Nova Eja. Plano de Ação II INTRODUÇÃO

Aula 7 - Revisão de Álgebra Matricial

Geometria Analítica e Álgebra Linear

Algoritmos Numéricos 2 a edição

MATRIZES. Conceitos e Operações

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Determinantes e Matrizes Inversas

ALGEBRA LINEAR 1 RESUMO E EXERCÍCIOS* P1

G3 de Álgebra Linear I

MP-208: Filtragem Ótima com Aplicações Aeroespaciais

Acadêmico(a) Turma: Capítulo 2: MATRIZES

O Eletromagnetismo é um ramo da física ou da engenharia elétrica onde os fenômenos elétricos e magnéticos são estudados.

INTRODUÇÃO À ÁLGEBRA LINEAR. Prof.ª Chiara Maria S. L. Dias 3ª fase Licenciatura em Matemática

PLANO DE ENSINO CURSO ENGENHARIA AMBIENTAL MATRIZ 519

FACULDADE PITÁGORAS DE LINHARES Prof. Esp. Thiago Magalhães

Aulas práticas de Álgebra Linear

. Repare que ao multiplicar os vetores (-1,1) e

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Câmpus Medianeira PLANO DE ENSINO. CURSO Engenharia Elétrica MATRIZ 548

MATRIZES. Álgebra Linear e Geometria Analítica Prof. Aline Paliga

Murilo F. Tomé ICMC-USP

ÁLGEBRA LINEAR E GEOMETRIA ANALÍTICA

GAN00140-Álg. Linear GAN00007 Int à Alg. Linear Aula 3 2ª. Parte: Matrizes e Operações Matriciais

Matemática para jogos 1 Aula 2 Matrizes: Tipos, operações e propriedades Mark Joselli

Roteiros e Exercícios - Álgebra Linear v1.0

São tabelas de elementos dispostos ordenadamente em linhas e colunas.

6 Matrizes. Matrizes. Aluno Matemática Eletricidade Básica Desenho Técnico A B C D 3 7 4

Teorema da Triangularização de Schur e Diagonalização de Matrizes Normais

Econometria. Operações básicas de vetores. Operações básicas de vetores. Operações básicas de vetores. Independência de vetores

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Aulas práticas de Álgebra Linear

Aula 6. Resolução de sistemas de equações lineares: Método de Gauss. Input/output. Laboratório Numérico 1

Transcrição:

SCC 14 - Introdução à Programação para Engenharias Python para disciplinas básicas Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes 1 Aula de hoje Integração da disciplina programação com o ciclo básico de Engenharia Computação científica Álgebra Linear Operações com matrizes Sistemas de equações André de Carvalho - ICMC/USP Introdução Python possui bibliotecas para várias áreas de conhecimento Inclusive disciplinas do ciclo básico de Engenharia Propósito deste módulo do curso Mostrar programas que implementam alguns conceitos a serem vistos no básico Computação científica Computação científica Utiliza linguagens de programação para escrita de programas para Álgebra linear Cálculo diferencial e integral Cálculo numérico Estatística Gráficos Otimização Por meio de bibliotecas científicas (adds on) NumPy, SciPy, Matplotlib André de Carvalho - ICMC/USP 3 André de Carvalho - ICMC/USP 4 Álgebra Linear Área da matemática que estuda vetores, espaços vetoriais e equações lineares Usada pela Geometria Analítica para calcular formatos geométricos complexos Representa e manipula matrizes Utilizada em várias operações matemáticas importantes para as Engenharias Álgebra linear Componentes básicos Valores escalares: 5 1 Vetores: 4 1 3 Matrizes: 3 4 0 André de Carvalho - ICMC/USP 5 André de Carvalho - ICMC/USP 6 1

Matrizes Uma matriz m por n (m x n) é uma tabela com m linhas e n colunas Ex. Matriz x3 Uma matriz 1 por n (ou n por 1) é um 1 vetor A 1 3 3 4 0 x3 Ex. Vetor 4 André de Carvalho - ICMC/USP 7 Tipos especiais de matrizes 4 3 4 3 1 3 3 1 4 1 3 4 0 1 0 1 3 1 Retangular Quadrada Simétrica 3 0 0 1 0 0 0 1 0 0 1 0 0 0 5 0 0 1 Diagonal Identidade André de Carvalho - ICMC/USP 8 Python tem uma biblioteca arrays nativa Sequências de valores, parecidas com listas Não implementa várias operações sobre matrizes Para duas dimensões, matriz é simulada por um array de arrays (D array) Ex.: representa 1 por [[1,][3,4]] 3 4 Para três dimensões, é usado um array de arrays de arrays... André de Carvalho - ICMC/USP 9 Biblioteca arrays nativa de Python Para manipular matrizes, necessário percorrer as listas Problemas para manipular matrizes são mais complicados e lentos Biblioteca numpy tem duas classes com funções para criar e manipular matrizes Classe numpy matrix Classe numpy ndarray André de Carvalho - ICMC/USP 10 Matriz x array Operações com matrizes são mais fáceis utilizando matrix Multiplicação Array: multiplica elementos correspondentes de dos arrays Matrix: multiplica matriz por outra matriz Outras operações Matrix tem métodos específicos Classe numpy ndarray Trabalha com N dimensões Semelhante a listas Mas todos os elementos devem ser do mesmo tipo Em geral int ou float Criação de um array pode ser feita com a função numpy.array Retorna numpy.ndarray André de Carvalho - ICMC/USP 11 André de Carvalho - ICMC/USP 1

Classe numpy ndarray Torna rápidas operações com grande quantidade de valores numéricos Muito mais rápido que usar listas Grande número de operações matriciais Multiplica elemento a elemento Ao invés de linha por coluna Opção: método matmul Tipo numpy array A = np.array (((1, 3, ), (3, 4,0))) B = np.array (((1, 0), (0, 1), (0, 1))) C = np.array (((4), (), (5))) D = np.array ((1,, 4)) print ( Array A: \n", A) print ("Array B: \n", B) print ("Array C: \n", C) print ("Array D: \n", D) André de Carvalho - ICMC/USP 13 André de Carvalho - ICMC/USP 14 Tipo numpy array A = np.array (((1, 3, ), (3, 4,0))) B = np.array (((1, 0), (0, 1), (0, 1))) C = np.array (((4), (), (5))) D = np.array ((1,, 4)) print ( Array A: \n", A) print ("Array B: \n", B) print ("Array C: \n", C) print ("Array D: \n", D) print ( Elemento de C: \n", C[0]) print ("Elemento de D: \n", D) Array A: [[1 3 ] Array B: [[1 0] [0 1] [0 1]] Array C: [4 5] Array D: [1 4] Matrizes podem ser inicializadas de diferentes formas: A1 = np.array (((1, 3, ), (3, 4,0))) A = np. array ([[1, 3, ], [3, 4,0]]) print ("Matriz A: \n", A1) André de Carvalho - ICMC/USP 15 André de Carvalho - ICMC/USP 16 Matrizes podem ser inicializadas de diferentes formas: A1 = np.array (((1, 3, ), (3, 4,0))) A = np. array ([[1, 3, ], [3, 4,0]]) print ("Matriz A: \n", A1) Matriz A1: [[1 3 ] Matriz A: [[1 3 ] André de Carvalho - ICMC/USP 17 Operações com arrays C = np.array ([[4], [], [5]]) D = np.array ((1,, 4)) print ("C: ") print(c) print (C.shape) print (C.ndim) print (C.size) print (C[0]) print ("D: ") print(d) print (D.shape) print (D.ndim) print (D.size) print (D[1]) André de Carvalho - ICMC/USP 18 3

Operações com arrays C = np.array ([[4], [], [5]]) D = np.array ((1,, 4)) print ("C: ") print(c) print (C.shape) print (C.ndim) print (C.size) print (C[1,0]) print ("D: ") print(d) print (D.shape) print (D.ndim) print (D.size) print (D[1]) C: [[4] [] [5]] (3, 1) 3 D: [1 4] (3,) 1 3 Retorna tupla com apenas 1 elemento André de Carvalho - ICMC/USP 19 Operações com arrays A = np.array(((1, 3, ), (3, 4,0))) B = np.array (((1, 0), (0, 1), (0, 1))) print ("A: ") print(a) print (A.shape) print (A.ndim) print (A.size) print (A[1,]) print ("B: ") print(b) print (B.shape) print (B.ndim) print (B.size) print (B[1,1]) André de Carvalho - ICMC/USP 0 Operações com arrays A = np.array(((1, 3, ), (3, 4,0))) B = np.array (((1, 0), (0, 1), (0, 1))) print ("A: ") print(a) print (A.shape) print (A.ndim) print (A.size) print (A[1,]) print ("B: ") print(b) print (B.shape) print (B.ndim) print (B.size) print (B[1,1]) A: [[1 3 ] (, 3) 6 0 B: [[1 0] [0 1] [0 1]] (3, ) 6 1 André de Carvalho - ICMC/USP 1 Função arrange de numpy Equivalente a função range de Python >>> np.arange( 3, 0, 5 ) array([3, 8, 13, 18]) Aceita argumentos float >>> np.arange( 1,, 0.,) array([1, 1., 11.4, 1.6, 1.8]) André de Carvalho - ICMC/USP Operações com matrizes Multiplicação por escalar Soma Produto de matrizes Transposta de uma matriz Inversa de uma matriz Determinante de uma matriz Resolução de sistemas de equações Multipicação de matriz por escalar A = A Supor: 1 3 = A 3 4 0 6 4 A 6 8 0 André de Carvalho - ICMC/USP 3 André de Carvalho - ICMC/USP 4 4

Multipicação de matriz por escalar Multipicação de matriz por escalar A = np.array (((1, 3, ), (3, 4,0))) B = *A C = A*.5 print ("Matrix A: \n", A) print ("Matrix B: \n", B) print ("Matrix C: \n", C) A = np.array (((1, 3, ), (3, 4,0))) B = *A C = A*.5 print ("Matrix A: \n", A) print ("Matrix B: \n", B) print ("Matrix C: \n", C) Matrix A: [[1 3 ] Matrix B: [[ 6 4] [6 8 0]] Matrix C: [[.5 7.5 5. ] [ 7.5 10. 0. ]] André de Carvalho - ICMC/USP 5 André de Carvalho - ICMC/USP 6 Soma de matrizes Soma de matrizes A + B = B + A Supor: A 1 3 3 4 0 4 4 A B 5 4 1 3 1 B 0 1 A = np.array (((1, 3, ), (3, 4,0))) B = np.array ([[3, -1, ], [, 0,1]]) print ("A+B = \n", (A+B)) Matriz A: [[1 3 ] Matriz B: [[ 3-1 ] [ 0 1]] A+B = [[4 4] [5 4 1]] André de Carvalho - ICMC/USP 7 André de Carvalho - ICMC/USP 8 A x B B x A A mxn x B nxk = C mxk Supor: A 1 3 3 4 0 19 6 A B 17 1 m c a b ij ip pj p1 3 1 1x3+3x+x5 B 1 5 Na classe array, multiplicação de matrizes multiplica os elementos correspondentes Matrizes precisam ter as mesmas dimensões A 4 3 1 B 1 3 4 41 3 4 6 A* B 3 1 4 6 4 André de Carvalho - ICMC/USP 9 André de Carvalho - ICMC/USP 30 5

A = np.array ([[1, ],[3, 4]]) B = np.array ([[, -1],[0, ]]) print ("Matriz AxB: \n", A*B) A = np.array ([[1, ],[3, 4]]) B = np.array ([[, -1],[0, ]]) print ("Matriz AxB: \n", A*B) Matriz A: [[1 ] [3 4]] Matriz B: [[ -1] [ 0 ]] Matriz AxB: [[ -] [ 0 8]] André de Carvalho - ICMC/USP 31 André de Carvalho - ICMC/USP 3 A = np.array ([[1, 3, ], [3, 4, 0]]) B = np.array ([[3, -1], [, 1], [5, ]]) C = np.matmul(a, B) print ("Matriz AxB: \n", C) Método matmul() permite multiplicar matrizes do tipo array A = np.array ([[1, 3, ], [3, 4, 0]]) B = np.array ([[3, -1], [, 1], [5, ]]) C = np.matmul(a, B) print ("Matriz AxB: \n", C) Método matmul() permite multiplicar matrizes do tipo array Matriz A: [[1 3 ] Matriz B: [[ 3-1] [ 1] [ 5 ]] AxB: [[19 6] [17 1]] André de Carvalho - ICMC/USP 33 André de Carvalho - ICMC/USP 34 Transposta de uma matriz Inverte linha com coluna 1 a 4 A 1 3 3 4 0 T a 1 4 T A 1 3 3 4 0 1 T T ( a ) 4 Transposta de uma matriz A = np.array ([[1, 3, ], [3, 4, 0]]) print ("Tansposta de A: \n", np.transpose(a)) André de Carvalho - ICMC/USP 35 André de Carvalho - ICMC/USP 36 6

Transposta de uma matriz Determinante de uma matriz A = np.array ([[1, 3, ], [3, 4, 0]]) print ("Tansposta de A: \n", np.transpose(a)) Matriz A: [[1 3 ] Tansposta de A: [[1 3] [3 4] [ 0]] Outra operação comum é o cálculo do determinante de uma matriz Matriz deve ser quadrada O determinante é uma propriedade escalar de uma matriz Permite ver se uma matriz tem uma inversa André de Carvalho - ICMC/USP 37 André de Carvalho - ICMC/USP 38 Autovalores e autovetores Um vetor de n-dimensões pode ser visto uma direção em um espaço n-dimensional Autovetores Vetores x que não mudam de direção quando multiplicados por uma matriz A Autovalores Indicam se o vetor aumento ou reduziu seu tamanho e se manteve ou mudou seu sentido ao ser multiplicado por A André de Carvalho - ICMC/USP 39 Determinante, autovetores e autovalores A = np.array (((1, 3, ), (3, 4,0), (1,, 3))) determinante = np.linalg.det(a) autovals, autovecs = np.linalg.eig(a) print ("Matriz A \n",a) print ("Determinante de A: \n", determinante) print ("Autovetores de A: \n", autovecs) print ("Autovalores de A: \n",autovals) Matriz A [[1 3 ] [3 4 0] [1 3]] Determinante de A: -11.0 Autovetores de A: [[-0.54579703-0.84419959 0.6706531] [-0.65179135 0.5377533-0.45560193] [-0.5656778-0.0589704 0.84917784]] Autovalores de A: [ 6.5113995-0.75359619.414564] André de Carvalho - ICMC/USP 40 Sistemas de equações Uma das principais operações de AL é resolver sistemas de equações lineares Duas ou mais equações lineares com as mesmas variáveis Encontrar, se possível, valores das variáveis x +3y +z = 1-3x +y +z = - x -y -4z = 4 Sistemas de equações A = np.array (((1, 3, ), (3, 4,0), (1,, 3))) print ("Matriz A \n",a) b = np.array((1, -, 4)) print ("Vetor b \n",b) c =np.linalg.solve(a, b) print ("Solução de Ax=b é c = ",c) André de Carvalho - ICMC/USP 41 André de Carvalho - ICMC/USP 4 7

Sistemas de equações A = np.array (((1, 3, ), (3, 4,0), (1,, 3))) print ("Matriz A \n",a) b = np.array((1, -, 4)) print ("Vetor b \n",b) c =np.linalg.solve(a, b) print ("Solução de Ax=b é c = ",c) Matriz A [[1 3 ] [3 4 0] [1 3]] Vetor b [ 1-4] Solução de Ax=b é c = [ 0.90909091-1.18181818 1.8181818] André de Carvalho - ICMC/USP 43 Conclusão Integração da displina programação com o ciclo básico de Engenharia Computação científica Álgebra Linear Operações com matrizes Sistemas de equações André de Carvalho - ICMC/USP 44 Perguntas André de Carvalho - ICMC/USP 45 8