Apêndice C - Breve introdução à linguagem Python

Durante o trabalho, são utilizados trechos de códigos na linguagem Python. Para auxiliar a introdução nesse universo, é apresentado aqui, uma breve explicação sobre sua instalação e execução de programas. Na última seção, é apresentado o código utilizado para a resolução de sistemas lineares na linguagem.

C.1 Instalando

A linguagem de programação Python é distribuida gratuitamente e pode ser baixada no seu site1. É necessário ressaltar, também, que em distribuições Linux, como o Linux Mint, a linguagem geralmente já vem instalada por padrão. Devido a isso e, também, ao fato de que usuários de ambientes Linux costumam ter conhecimentos avançados sobre instalação de programas, será explicado nessa seção apenas a instalação no sistema operacional Windows.

O executável da linguagem Python pode ser baixado em seu site, na aba Downloads, como pode ser visto na Figura C.1.

Figura C.1 - Página de download da linguagem Python.
Fonte: Elaborada pelo autor, 2019.

Sua instalação é extremamente simples e rápida. Basta executar o instalador baixado da página da Figura C.1, marcar a opção "Add Python 3.8 to PATH", como na Figura C.2 para facilitar a execução de códigos com a linguagem e clicar em Install Now, isto é, instalar agora e esperar até que a instalação termine.

Figura C.2 - Instalador da linguagem Python no Windows.
Fonte: Elaborada pelo autor, 2019.

Após a instalação da linguagem, é necessário instalar alguns pacotes utilizados aqui neste trabalho. Para tanto, é preciso executar o prompt de comandos do Windows, ou terminal em distribuições Linux. No Windows, basta digitar cmd na barra de pesquisa do menu iniciar, como na Figura C.3.

Figura C.3 - Barra de busca com o prompt de comandos do Windows.
Fonte: Elaborada pelo autor, 2019.

Com o prompt de comandos aberto, deve-se executar o código pip install numpy para instalar o pacote numpy. Após a instalação, uma janela parecida com a Figura C.4 deve ser vista. Esse mesmo processo deve ser repetido com os comandos pip install sympy para instalar o pacote sympy e pip install matplotlib para instalar o pacote matplotlib. Esses três pacotes são utilizados durante este trabalho.

Figura C.4 - Prompt de comandos após a instalação do pacote numpy.
Fonte: Elaborada pelo autor, 2019.

C.2 Executando programas

Para executar programas, ou scripts, na linguagem Python, existem diversas formas, sendo a mais convencional delas executar via o prompt de comandos do Windows ou no terminal do Linux. No Windows pode-se utilizar o ambiente de desenvolvimento que é instalado junto a linguagem, chamado de IDLE. Ao abri-lo, deve-se ir no menu File e, então, em New File para criar um novo arquivo. O código deve ser escrito nesse novo arquivo e salvo. Para executar este código basta, então, ir no menu Run e, depois, em Run Module, como na Figura C.5.

Figura C.5 - Janela do IDLE com o menu Run aberto.
Fonte: Elaborada pelo autor, 2019.

A segunda forma, indicada para usuários que detenham um nível de conhecimento mais alto sobre sistemas operacionais, é executar, no prompt de comandos ou no terminal a linha python arquivo.py, onde arquivo.py representa o caminho para o arquivo no sistema. Por exemplo, como os códigos deste trabalho foram desenvolvidos em um ambiente Linux, todos os códigos foram executados deste modo.

C.3 Principais operações

Para facilitar o entendimento dos códigos ao longo do trabalho, é apresentada uma lista com algumas das principais operações aritméticas na linguagem Python na Tabela C.1.

Tabela C.1 - Principais operações na linguagem Python.
Operação Descrição
\(x + y\) Soma de \(x\) e \(y\)
\(x - y\) Subtração de \(x\) por \(y\)
\(x * y\) Produto de \(x\) por \(y\)
\(x / y\) Divisão de \(x\) por \(y\)
\(x\) // \(y\) Parte inteira da divisão de \(x\) por \(y\)
\(x\) % \(y\) O resto da divisão de \(x\) por \(y\)
\(x\) ** \(y\) \(x\) elevado a potência \(y\)
Fonte: Elaborado pelo autor, 2019.

C.4 Resolução de sistemas lineares

O sistema linear com matriz aumentada pode ser facilmente resolvido utilizando métodos trabalhados em Álgebra Linear, como, por exemplo, o método de Gauss-Jordan, de forma manual. Outra forma de se resolver o sistema é fazendo o uso da linguagem de programação Python, através do comando linsolve que utiliza o método de Gauss-Jordan.

Deste modo, seja, o sistema com matriz aumentada

\[ \begin{pmatrix}{3} 2 & 3l & 4l^2 & C \\ 1 & 2l & 3l^2 & \frac{1}{2}C \\ 8 & 18l & \frac{144}{5} l^2 & D \end{pmatrix} \text{,} \]
onde
\[ C=-\frac{ql^2}{12EI} \text{,} \]
e
\[ D=-\frac{3ql^2}{10EI} \text{.} \]

Para a resolução do sistema usando Python é necessário, primeiro, importar alguns componentes da biblioteca SymPy:

from sympy import symbols, Matrix
from sympy.solvers import linsolve

Serão importados os componentes symbols para permitir a definição de símbolos matemáticos, Matrix para a manipulação de matrizes e, finalmente, linsolve para a resolução de sistemas lineares.

Para a definição do sistema, utilizaremos os mesmos símbolos, \(l\), \(C\), e \(D\), que são definidos, dentro da linguagem, utilizando o comando symbols importado:

l, C, D = symbols('l C D')

A matriz aumentada é definida utilizando o componente Matrix importado. Cada uma de suas linhas é escrita como um Array contendo os elementos das colunas. A matriz é escrita, então, como um Array de linhas.

A = Matrix([
    [2, 3 * l ,  4 * l**2      ,  C  ],
    [1, 2 * l ,  3 * l**2      ,  C/2],
    [8, 18 * l,  144 / 5 * l**2,  D  ]
])

A resolução do sistema é feita pelo método linsolve já importado. O método linsolve da linguagem Python utiliza o método de Gauss-Jordan para a resolução de sistemas lineares \cite{SymPy}. Primeiro, definimos três novos símbolos, \(a_1\), \(a_2\) e \(a_3\) que são as incógnitas do sistema e então, executamos o método passando como argumento a matriz \(A\) definida e os símbolos.

a2, a3, a4 = symbols("a2 a3 a4")
sol, = linsolve(A, [a2, a3, a4])
print(sol)

Figura C.6 - Execução do código para a resolução do sistema linear.
Fonte: Elaborada pelo autor, 2019.

O comando print(sol) exibe a solução do sistema linear, como um Array (Veja Figura C.6). O primeiro valor do Array corresponde a incógnita \(a_2\), o segundo valor a \(a_3\) e o último valor a \(a_4\). Assim, \(a_2=-4.5C+1.25D\), \(a_3=\dfrac{1}{l}(10C-2.5D)\) e \(a_4=\dfrac{1}{l^2}(-5C+1.25D)\). Pode-se converter os números decimais para frações obtendo

\[ a_2=\frac{5}{4}D-\frac{9}{2}C \text{,} \]
\[ a_3=\frac{1}{l}\left ( 10C - \frac{5}{2} D \right ) \text{,} \]
\[ a_4=\frac{1}{l^2}\left ( \frac{5}{4}D-5C \right ) \text{.} \]

Substituindo \(C\) e \(D\), de e , em , e e simplificando os valores obtem-se a solução do sistema

\[ a_2 = 0\text{,} \]
\[ a_3 = -\frac{ql}{12EI}\text{,} \]
\[ a_4 = \frac{q}{24EI}\text{.} \]

O código completo utilizado para a resolução do sistema linear com matriz aumentada é apresentado em Código C.1.

Código C.1 - Resolução de sistemas lineares em Python.
from sympy import symbols, Matrix
from sympy.solvers import linsolve

l, C, D = symbols('l C D')

A = Matrix([
    [2, 3 * l ,  4 * l**2      ,  C  ],
    [1, 2 * l ,  3 * l**2      ,  C/2],
    [8, 18 * l,  144 / 5 * l**2,  D  ]
])

a2, a3, a4 = symbols("a2 a3 a4")
sol, = linsolve(A, [a2, a3, a4])

print(sol)
Fonte: Elaborado pelo autor, 2019.
settings