Química Programada - Regressão Linear e tratamento de dados em Python

Seções

Regressão linear em Python - Comparando tempo de execução de um algoritmo tradicional e a biblioteca scipy.optimize

Para realizar um ajuste linear com um algoritmo numérico em Python é necessário importar as bibliotecas numpy para fazer as manipulações dos arrays dos dados e a biblioteca matplotlib.pyplot para visualização do ajuste. O algoritmo do ajuste linear mostrado na Figura 1 foi retirado do material do curso online : "Inteligência artificial conceitos, temáticas, desenvolvimento e aplicações". Foi inserida a biblioteca "Time" e um comando no início e no fim do trecho de código com fator de multiplicação 1000 para que seja exibido tempo de execução em ms. Isso é interessante, pois o existem diferentes maneiras de se realizar um ajuste linear usando as bibliotecas do Python. Dessa forma você pode monitorar o desempenho da cada uma e escolher pela mais eficiente. Esse ajuste foi rodado no Googlecolab. Na Figura 2 estão os dados de temperatura e densidade do propilenoglicol com os comandos, a curva obtida e os parâmetros do modelo. O tempo de execução foi de 122 ms, no GoogleColab.

fregressao
Figura 1: Algoritmo regressão linear.
ajuste linear em python para engenharia química
Figura 2: Ajuste da densidade do propilenoglicol (dados obtidos por Química Programada).

Outra forma de obter um ajuste linear em Python é através do uso da função lambda, para declarar a função que você quer utilizar como modelo para a série de dados e a biblioteca scipy.optimize (função curve_fit). Também deverão ser declaradas as bibliotecas numpy e matplotlib.pyplot. Ver Figura 3 . Para o mesmo conjunto de dados o tempo de execução foi de 94 ms e os parâmetros da curva foram praticamente os mesmos.

curve_fit e scipy.optimize na engenharia química
Figura 3: Ajuste da densidade do propilenoglicol com curve_fit (dados obtidos por Química Programada).

2. Ajustes de modelos de curvas com curve_fit

Na Figura 4 foi utilizado um polinômio de grau 3 como função lambda para ajustar a densidade da água, com um bom resultado para o máximo da curva e com bom ajuste para para valores de temperatura à esquerda do máximo, o que não acontece com o uso de uma parábola como modelo. O tempo de execução foi de 206 ms no GoogleColab e a solução é bastante simples, pois não é necessário de um algoritmo para o ajuste, tampouco definir uma função para o polinômio - são usados as funções da biblioteca do Python.

ajuste polinomial na engenharia química
Figura 4: Ajuste da densidade do água com curve_fit.

Na págia 260 da apostila gratuita disponível no site da ABEQ "Métodos Numéricos para Engenheiros Químicos- Algoritmos e aplicações" é proposto um exercício para encontar os parâmetros de um modelo de perfil de velocidade de um fluido em escoamento do tipo u(y)= p*y + q*y2, onde y é a distância da parede em centímetros e u é a velocidade em cm/s medida através de fotografias estroboscópicas de pequenas bolhas de ar. Na Figura 5 é apresentada a solução em Python utilizando função lambda e curve_fit. Tempo de execução no GoogleColab de 97 ms.

perfil de velocidade de fluido em escoamento, método numérico na engenharia química
Figura 5: Perfil de velocidades de um fluido.

3. Referências

logo2
Imagem gerada a partir de fotos do desenvolvedor do site modificadas com o Copilot e ChatGPT.

Desenvolvimento : Química Programada