Você está na página 1de 41

Universidade Federal Fluminense

Escola de Engenharia
Curso de Graduação em Engenharia Mecânica

Vitor Ferreira Serrano & Ciro de Hollanda Sodré


Ribeiro

Implementação de método numérico para simulação de


vibrações não lineares

Niterói – RJ
2019
1

Vitor Ferreira Serrano & Ciro de Hollanda Sodré Ribeiro

Implementação de método numérico para simulação de vibrações não lineares

Trabalho de Conclusão de Curso apresentado ao


Curso de Graduação em Engenharia Mecânica da
Universidade Federal Fluminense, como requisito
parcial para obtenção do Grau de Engenheiro Me-
cânico.

Orientador: Prof. Dr. Heraldo Silva da Costa Mattos

Niterói – RJ
2019
Ficha catalográfica automática - SDC/BEE
Gerada com informações fornecidas pelo autor

S487i Serrano, Vitor Ferreira


Implementação de Método Numérico para Simulação de
Vibrações Não Lineares / Vitor Ferreira Serrano, Ciro de
Hollanda Sodré Ribeiro ; Heraldo Silva da Costa Mattos,
orientador. Niterói, 2019.
41 f. : il.

Trabalho de Conclusão de Curso (Graduação em Engenharia


Mecânica)-Universidade Federal Fluminense, Escola de
Engenharia, Niterói, 2019.

1. Método Runge Kutta de quarta ordem. 2. Amortecimento


não linear. 3. Python. 4. Produção intelectual. I. Ribeiro,
Ciro de Hollanda Sodré. II. Mattos, Heraldo Silva da Costa,
orientador. III. Universidade Federal Fluminense. Escola de
Engenharia. IV. Título.

CDD -

Bibliotecária responsável: Fabiana Menezes Santos da Silva - CRB7/5274


iii

Vitor Ferreira Serrano & Ciro de Hollanda Sodré Ribeiro

Implementação de método numérico para simulação de vibrações não lineares

Trabalho de Conclusão de Curso apresentado ao


Curso de Graduação em Engenharia Mecânica da
Universidade Federal Fluminense, como requisito
parcial para obtenção do Grau de Engenheiro Me-
cânico.

Aprovado em 06 de Dezembro de 2019.

BANCA EXAMINADORA

Prof. Dr. Heraldo Silva da Costa Mattos - Orientador


Universidade Federal Fluminese - UFF

MSc. Camila Ranucci de Luca


Universidade Federal Fluminense - UFF

MSc. Fernanda Felix Enne


Universidade Federal Fluminese - UFF

Niterói – RJ
2019
iv

Resumo

Esse trabalho tem três objetivos básicos: (1) implementar um código na linguagem
Python para aproximar a solução de equações diferenciais ordinárias usando a técnica
de Runge-Kutta de quarta ordem; (2) Estudar numericamente as vibrações e o amorteci-
mento de impacto de um veı́culo usando o modelo linear clássico massa-mola-amortecedor;
(3) Propor e estudar numericamente um sistema de amortecimento não-linear elasto-
viscoplástico. O problema linear, por ter solução analı́tica, permite comparar essa solução
com a aproximação numérica e estimar o erro envolvido, validando o código. O estudo
de vibrações não lineares está se tornando cada vez mais importante devido aos novos
materiais poliméricos usados em diferentes aplicações, entre elas a absorção de energia e
proteção contra impactos. A análise numérica preliminar feita no caso não linear mostra
o potencial dessas aplicações e estimula o prosseguimento de estudos experimentais.

Palavras-chave: Método de Runge Kutta de quarta ordem, Amortecimento não


linear, Python
v

Abstract

The present study had three basic goals: (1) to implement a code using the Python
language to approximate the solution of ordinary differential equations using the Runge-
Kutta 4th order method; (2) To perform the numerical analysis of vibrations and impact
damping of a vehicle using the classic linear mass-spring-damper linear model; (3) To pro-
pose and elasto-viscoplastic model for the damping system and to perform the numerical
analysis of the system behavior. Since the linear problem has an analytical solution, it
is possible to compare this solution with the numerical approximation and to estimate
the error involved, validating the code. The study of nonlinear vibrations is becoming
increasingly important due to the new polymeric materials used in different applications,
including energy absorption and impact protection. The preliminary numerical analy-
sis made in the nonlinear case shows the potential of these applications and encourages
further experimental studies.

Keywords: 4th order Runge-Kutta method, Nonlinear damping, Phyton .


vi

Dedicamos esse trabalho à todos que nos aju-


daram e nos apoiaram até aqui. À todos que
fazem parte de nossas vidas e que já passa-
ram por ela, mas que nunca serão esquecidos.
vii

Agradecimentos

Agradecimento I:
Agradeço aos meus pais, Valmir e Angela, que sempre prezaram muito pela minha
educação e sempre me apoiaram em todos os momentos de minha vida. O que sou hoje é
reflexo do carinho deles. Às demais pessoas que já passaram ou estão na minha vida que
apoiam e me aturam, muito obrigado por compartilhar essa jornada comigo.

Agradecimento II:
Gostaria de agradecer primeiro a Deus que tornou tudo possı́vel:
À minha famı́lia e aos meus pais, José e Rosalia, que foram minha primeira escola,
ensinaram-me os bons valores, a prática do bem, a ética de se fazer o que é certo e a
buscar a igualdade e a justiça. Eles não mediram esforços para me oferecer o melhor que
puderam. Estendo esse agradecimento à minha avó, minha segunda mãe, e a todas as
amigas que trabalharam em minha casa que com sua doçura e amor me ensinaram a viver.
Aos meus melhores amigos, Raphael e Luı́sa, que estiveram sempre comigo nos
momentos alegres e tristes, passaram comigo por muitas fases da vida, mas nunca desisti-
ram e me ajudaram a atravessar todas as dificuldades. Ajudaram-me também a conhecer
a mim mesmo e a lutar pelos nossos direitos.
Aos meus amigos, com os quais partilho as mesmas bandeiras e esperanças, agra-
deço por todos momentos importantes que tivemos, todas as viagens e partilhas. Todas
as vitórias e também as derrotas. Obrigado a todos voluntários que acreditam, se somam
aos projetos e ajudam a construir um mundo melhor.
Às duas escolas que passei, gostaria de agradecer muito pela minha formação, me
tornaram um ser humano mais equilibrado e crı́tico. Centrinho e Gaylussac me concede-
ram um amplo conhecimento geral, acadêmico e de vida. Construı́ram valores em mim
que guardarei para sempre.
viii

À Igreja e aos padres, gostaria de agradecer pelos amigos que são, pela formação
em busca da Equidade em favor dos menos favorecidos. Por todas oportunidades que tive
de servir ao próximo, aos que tinham fome ou quaisquer outras necessidades. Cada grupo,
cada debate e cada evento me fizeram ser uma pessoa melhor.
À faculdade sem a qual não poderia ter essa formação tão ampla e benéfica. E aos
professores por partilharem seus conhecimentos comigo com tanto prazer e zelo. Obrigado
por todas as horas gastas na dedicação à docência confeccionando e corrigindo provas,
preparando materiais e aulas.
A todos os meus colegas de faculdade, que me apoiarem sempre nas dificuldades em
todos os momentos de estudos antes das provas, mas também nos momentos de churrasco,
Choppadas e cantareiras. Em especial gostaria de agradecer ao Vitor, por todo esforço e
dedicação na construção desse projeto, sem você nada disso seria possı́vel.
ix

Lista de Figuras

2.1 Desenhos esquemáticos de casos de vibrações simplificados . . . . . . . . . 5


2.2 Funcionamento do Metodo Runge Kutta 4 ordem [1] . . . . . . . . . . . . 8
2.3 Comunidade online: stackoverflow . . . . . . . . . . . . . . . . . . . . . . . 9

3.1 Modelo Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10


3.2 Solução Analı́tica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Analı́tico vs Numérico com dt=0,02 . . . . . . . . . . . . . . . . . . . . . . 13
3.4 Analı́tico vs Numérico com dt=0,01 . . . . . . . . . . . . . . . . . . . . . . 13
3.5 Analı́tico vs Numérico com dt=0,005 . . . . . . . . . . . . . . . . . . . . . 14
3.6 Analı́tico vs Numérico com dt=0,001 . . . . . . . . . . . . . . . . . . . . . 15
3.7 Analı́tico vs Numérico com dt=0,02 (superamortecido) . . . . . . . . . . . 16
3.8 Analı́tico vs Numérico com dt=0,01 (superamortecido) . . . . . . . . . . . 17
3.9 Analı́tico vs Numérico com dt=0,001 (superamortecido) . . . . . . . . . . . 17
3.10 Analı́tico vs Numérico com dt=0,0001 (superamortecido) . . . . . . . . . . 18
3.11 Modelo Não Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.12 Influência do dt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.13 Velocidade x Tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.14 Aceleração x Tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.15 Posição x Tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.16 Deformação Plástica x Tempo . . . . . . . . . . . . . . . . . . . . . . . . . 23

5.1 Função Runge Kutta 4a Ordem em Python . . . . . . . . . . . . . . . . . . 26


5.2 Função Runge Kutta 4a Ordem em Python com Stoperror . . . . . . . . . 27
5.3 Implementação do código para o caso linear . . . . . . . . . . . . . . . . . 27
5.4 Implementação do código para o caso não-linear . . . . . . . . . . . . . . . 28
x

Lista de Tabelas

3.1 Resultados Analı́tico vs Numérico com dt=0,02 . . . . . . . . . . . . . . . 13


3.2 Resultados Analı́tico vs Numérico com dt=0,01 . . . . . . . . . . . . . . . 14
3.3 Resultados Analı́tico vs Numérico com dt=0,005 . . . . . . . . . . . . . . . 14
3.4 Resultados Analı́tico vs Numérico com dt=0,001 . . . . . . . . . . . . . . . 15
3.5 Comparação do tempo de processamento em relação ao dt . . . . . . . . . 16
3.6 Comparação do tempo de processamento em relação ao dt (superamortecido) 18
Conteúdo

Resumo iv

Abstract v

Agradecimentos vii

Lista de Figuras ix

Lista de Tabelas x

1 Introdução 1
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Revisão Bibliográfica 4
2.1 Vibrações Mecânicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Classificação de Vibrações . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Componentes de Sistemas Discretos . . . . . . . . . . . . . . . . . . 5
2.2 Vibrações Não Lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1 Fontes de não linearidade . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Métodos Numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1 Runge Kutta de 4a Ordem . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Aplicação do Método Numérico 10


3.1 Caso Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1 Resolução Analı́tica . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

xi
xii

3.1.2 Runge-Kutta 4a para solução linear . . . . . . . . . . . . . . . . . . 11


3.1.3 Solução Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Caso Não-Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.1 Runge-Kutta 4a ordem para solução não-linear . . . . . . . . . . . 20
3.3 Discussão de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4 Conclusão 24
4.0.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Referências Bibliográficas 25

5 Appendix 26
5.1 Código Fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Capı́tulo 1

Introdução

A análise matemática de vibração de um modelo fı́sico pode ser dividida em 4


passos: Modelagem do sistema, formulação das equações matemáticas de governo, solução
destas equações de governo e interpretação fı́sica dos resultados.[3]
No primeiro passo de uma análise de vibrações, identifica-se a natureza do sistema
e todas as variáveis fı́sicas relevantes que estão envolvidas.
No segundo passo, aplica-se as leis conhecidas da fı́sica e os princı́pios de dinâ-
mica para se obter as equações que regem o comportamento do sistema. As restrições
geométricas, tal qual as relações cinemáticas entre deslocamento, velocidade e aceleração,
geralmente são necessárias para completar a modelagem matemática do sistema e para
formular as equações iniciais e/ou de contorno.[3]
No terceiro passo, soluções analı́ticas ou numéricas são aplicadas para o desenvol-
vimento de uma equação ou modelo, que represente o movimento futuro do problema.
Por fim, o quarto passo é a interpretação fı́sica dos resultados obtidos. Sendo isso,
fundamental para a validação do modelo matemático e confirmação de sua acuracidade.
Muitos problemas de engenharia podem ser modelados matematicamente, sendo
uma representação idealizada e simplificada de algum fenômeno natural. As soluções das
equações devem respeitar os aspectos mais relevantes no comportamento do problema
modelado. No entanto, muitas vezes não é possı́vel justificar a utilização de hipóteses
simplificadoras que modificam a natureza do problema, tal como a linearidade. Isso quer
dizer, não se pode forçar um problema a satisfazer hipóteses que permitiriam a obtenção
de uma solução exata. Assim, se faz necessário a utilização de métodos numéricos para a
sua solução.[2]
2

1.1 Motivação
Quando se fala em vibrações, seu comportamento fı́sico só pode ser demonstrado,
em sua maioria, através de modelos matemáticos não-lineares devido à sua alta comple-
xidade e variáveis envolvidas no ambiente em questão.
Como esse modelos matemáticos, em sua maioria, somente podem ser resolvidos
através de métodos numéricos, o tema desse trabalho foi escolhido visando obter um
melhor entendimento da resolução desse tipo de problema e a aquisição de novos conhe-
cimentos no processo de desenvolvimento desses modelos
Tendo a compreensão de métodos numéricos almejada e a dominação da linguagem
de programação escolhida nesse trabalho, acredita-se que abre-se um caminho não só
para a resolução de diversos outros problemas clássicos da engenharia, mas também para
diversos problemas modernos que lidamos no mercado de trabalho na atualidade.
Assim, esse trabalho visa aplicar os conhecimentos adquiridos durante o curso com
os fundamentos de uma ferramenta de programação para que, a união dessas informações
sirva de carga para o sucesso profissional.

1.2 Objetivo
O objetivo desse trabalho é expor o desenvolvimento e implementação do método
de Runge Kuta de 4a ordem para solução de um modelo de vibração não-linear, discorrer
erros envolvidos, sua construção na linguagem de programação e interpretação fı́sica dos
resultados.
O propósito é otimizar o modelo matemático de forma que possa ser utilizado para
a solução de problemas reais de vibração não-lineares de materiais elasto-viscoplásticos
e ao fim do trabalho ter conhecimento suficientes de Python para realizar análises mais
complexas e desenvolver o código mais rápido

1.3 Metodologia
Estabelecido um problema simplificado de vibração linear em que seja possı́vel
realizar a sua solução analı́tica, será criado uma representação em espaço de estados a
ser resolvida a partir das equações que o regem. Assim, o método numérico de Runge-
3

Kutta de 4a ordem será escrito em Python e implementado no problema para encontrar


sua solução. Como nesse primeiro momento, o problema escolhido é linear, os resultados
dos métodos de solução analı́tico e numérico serão amplamente discutidos. Variações dos
inputs, configurações do método e suas particularidades também serão discorridos visando
a validação da programação realizada.
Tendo o código numérico inicial validado, a segunda parte do trabalho é o estabele-
cido um problema real de vibração não-linear, ligeiramente parecido com inicial utilizado.
Realizando modificações no código prevenidos de assuntos discutidos no primeiro mo-
mento visando sua otimização e melhor resolução do novo problema, o segundo modelo
será resolvido e seus resultados fı́sicos discutidos.
Assim, será possı́vel ter uma análise detalhada de uma simulação de impacto,
obtendo resultados comportamentais do material escolhido e nuances do método numérico
escolhido.
Capı́tulo 2

Revisão Bibliográfica

2.1 Vibrações Mecânicas

2.1.1 Classificação de Vibrações

As vibrações mecânicas podem ser dividas nos seguintes critérios:


Quanto à excitação: Livres (vibram sem sua frequência natural e não há força
de excitação externa) ou forçadas (vibra na frequência de excitação).
Quanto ao amortecimento: Amortecidas ou não amortecidas.
Quanto ao deslocamento: Retilı́neo, torsional, ou combinação de ambos.
Quanto as propriedades fı́sicas: Discreto (número finito de graus de liberdade)
ou contı́nuo (número infinito de graus de liberdade).

Esse trabalho será focado os casos de vibrações livres, amortecidas, retilı́neas e discretas,
onde pode-se fazer diretas referências a casos do cotidiano, simplificadamente aplicadas.

4
5

Figura 2.1: Desenhos esquemáticos de casos de vibrações simplificados


[7]

2.1.2 Componentes de Sistemas Discretos

Sistemas Dinâmicos são descritos por equações diferenciais e, se diferenciam dos


Estáticos, devido à sequência de saı́da depender da sequência de entrada.
Os sistemas não-lineares são aqueles que variam no tempo e também não atendem
ao princı́pio da superposição.
Eles podem ser distintos entre Contı́nuos ou Discretos, caso as componentes dos
vetores de estado pertencerem ao grupo dos números Reais ou Inteiros, respectivamente.
Os sistemas Discretos, podem variar por causa do tempo ou por eventos pontuais
e ainda variam caso as componentes dos vetores de estados forem definidas por tempos
Reais quaisquer (Tempo Contı́nuo) ou Naturais especı́ficos (Tempo Discreto).
Nesse trabalho, será focado casos de Sistemas Dinâmicos, variantes no tempo, não-
lineares, de Estado Discreto, Dirigidos por Eventos e de Tempo Discreto.

2.2 Vibrações Não Lineares


A natureza é essencialmente não linear a sua descrição a partir de modelos não
lineares é mais realista. Assim, os modelos de vibrações não lineares englobam uma
variedade maior de fenômenos da natureza.
Os sistemas não lineares são bem mais difı́ceis de serem analisados principalmente
pois o princı́pio da superposição linear não é válida [7], ou seja, a resposta do sistema para
a soma de todos os seus estı́mulos não é igual a resposta se cada estı́mulo fosse aplicado
separadamente.

2.2.1 Fontes de não linearidade

Nota-se que se pode considerar não linearidades fı́sicas (ou materiais) ou geométri-
cas dos sistemas envolvidos. Do ponto de vista fı́sico, pode-se considerar não linearidades
constitutivas como comportamento elásticos não lineares, plasticidade ou outros fenôme-
nos correlatos. Do ponto de vista geométrico, podemos pensar em impactos ou grandes
deslocamentos. [7]

2.3 Métodos Numéricos


A utilização de métodos numéricos para a solução de equações diferenciais ordiná-
rias com problema de valor inicial é de fundamental importância e será resolvido através
do método de diferenças finitas. A ideia geral desses métodos é a discretização do domı́nio
e a substituição das derivadas presentes no problema por aproximações envolvendo o valor
numérico da função.[4]
Alguns exemplos desse tipo de método são: Método de Euler, trapézio, Runge-
Kutta e predictor corrector. Após análise das particularidades de cada método, levando
em conta o poder computacional exigido para se obter resultados satisfatórios para o
presente trabalho, foi escolhido o método de Runge Kutta de quarta ordem para ser
trabalhado.

2.3.1 Runge Kutta de 4a Ordem

O método de Runge-Kutta é provavelmente um dos métodos mais populares e


o de quarta ordem é um dos mais utilizados para obter soluções aproximadas de valor
inicial. Cada método de Runge-Kutta consiste em comparar um polinômio de Taylor
apropriado para eliminar o cálculo das derivadas, fazendo-se várias avaliações da função
a cada passo. O método de Runge-Kutta pode ser entendido como um aperfeiçoamento
do método de Euler, com uma melhor estimativa da derivada da função.[1] No método
7

de Euler a estimativa do valor de yn+1 é realizado com o valor de yn com a derivada no


ponto xn No método de Runge-Kutta, busca-se uma melhor estimativa da derivada com a
avaliação da função em mais pontos no intervalo [xn ,xn+1 ]. Um método de Runge-Kutta
de ordem n possui um erro da ordem de 0(hn+1 ).[4]
De modo geral, o método de Runge-Kutta é dado por

yi+1 = yi + h(inclinação) (2.1)

onde inclinação é uma constante que é obtida através do cálculo da inclinação em


vários pontos no interior do subintervalo. A ordem do método indica o número de pontos
usado em um subintervalo para determinar o valor da inclinação, o método de Runge-
Kutta de segunda ordem utiliza a inclinação em dois pontos, o método de terceira ordem
utiliza três pontos, e assim por diante.[3]
A equação clássica para o método Runge Kutta de 4 ordem é

1
yi+1 = yi + (K1 + 2K2 + 2K3 + K4 ) (2.2)
6
Onde:

1 1 1 1
K1 = f (xi , yi )K2 = f (xi + h, yi K1 h)K3 = f (xi + h, K2 h)K4 = f (xi +h, K3 h) (2.3)
2 2 2 2

O método clássico de Runge-Kutta e ilustrado esquematicamente na figura 2.2. Os


gráficos a, b, c e d, mostram a determinação do passo. Dentro da figura 2.2 O gráfico (a)
mostra o passo k1 e como ele foi utilizado para o k2; O gráfico (b) mostra como o passo
k2 e utilizado para achar o k3; O gráfico (c) mostra como k3 e utilizado para achar k4;
O gráfico (d) ilustra a aplicação da equação tal, onde o passo e usado pra calcular y+1
utilizando a media dos passos k1,k2, k3 e k4.[1]
8

Figura 2.2: Funcionamento do Metodo Runge Kutta 4 ordem [1]

2.4 Python
Para este trabalho, a linguagem escolhida para se escrever e resolver o método
numérico foi a Python, criada e lançada por Guido Van Rosum em 1991. Essa linguagem
está se tornando cada vez mais comum na indústria 4.0 com o crescimento de novas áreas
que trabalham com grandes dados, ciência de dados e machine learning, além de ser
comumente utilizada para fins acadêmicos no ramo de engenharia.
Em resumo, Python é uma linguagem funcional, ou seja, faz uso principalmente
de funções matemáticas e o valor de retorno é o resultado das funções de entrada; In-
terpretada: significa que ela é executada por um interpretador para posteriormente ser
executada pelo processador; Imperativa: descreve as ações por meio de comandos que
variam o estado de um programa; Orientada para objetos (POO): contém dados na forma
de campo e códigos na forma de procedimentos; De alto nı́vel: significa ser próxima à lin-
guagem humana, o que permite ser facilmente aprendida e não requere conhecimento em
um nı́vel elevado sobre o processamento de computadores para masterizá-la; De tipagem
dinâmica: não exige declaração de dados pois são capazes testar e escolher as variáveis
durante a própria execução.
Os principais pontos para esse escolha são: (1) ter um gerenciamento de memória
automático o que a torna automatizadamente eficiente; (2) ser orientada a objetos, o que
9

facilita a programação; (3) vasta biblioteca de funções prontas e otimizadas que se pode
utilizar;(4) tipagem dinâmica, diferente da linguagem aprendida no curso e (4) grande
comunidade de usuários e fóruns de discussão, o que facilita muito no suporte a eventuais
problemas. Abaixo pode-se ver o fórum pt.stackoverflow.com onde usuário de diversas
linguagens se ajudam e discutem sobre sua utilização com o mundo. Uma das maiores
comunidades de usuários é em relação ao Python.

Figura 2.3: Comunidade online: stackoverflow


Capı́tulo 3

Aplicação do Método Numérico

3.1 Caso Linear


Para a validação do método numérico, em um caso linear, Foi escolhido um pro-
blema em que seja conhecida sua solução analı́tica para realizar a comparação dos re-
sultados. Um caso clássico de vibração, próximo ao problema não linear desejado, será
representado a seguir.
O exemplo escolhido é uma representação de um automóvel com sistema de amorte-
cimento contra impactos. Esse sistemas, pode ser dimensionado nesse primeiro momento
como um sistema massa-mola-amortecedor, conforme a figura abaixo.

Figura 3.1: Modelo Linear


11

Sendo corpo de massa m a uma velocidade V, possuindo um amortecedor de coe-


ficiente de amortecimento c e uma mola de contante elástica k acoplados. O objetivo, é
escrever uma equação que descreva o movimento do corpo.

3.1.1 Resolução Analı́tica

Pode-se encontrar em diversas literaturas, sua solução analı́tica: [7]

 √  √  
c 2 k c 2 k
c
− 2m t ( 2m ) −m t −( 2m ) −m t
x(t) = e D1 e + D2 e (3.1)

Onde suas constante são definidas pelas condições iniciais do problema.


Neste caso, vamos considerá-lo como subamortecido, para que a sua visualização
seja interessante. Assim, a relação c2 − 4mk 6 0 deve ser verdadeira [7].
Escolheu-se assim, as seguintes condições iniciais:

v = 10m/s2 ; c = 800N s/m ; k = 50000N/m ; m = 250kg (3.2)

Pode-se visualizar a solução no gráfico a seguir:

Figura 3.2: Solução Analı́tica

3.1.2 Runge-Kutta 4a para solução linear

A forma mais simplória de se escrever a lógica do método de Runge Kutta descrito


acima, é a representada abaixo em pseudo-código.
12

Input: Parâmetros do problema: Massa, velocidade inicial, coeficientes de mola e


amortecimento, dt, no de passos
Output: Posição e velocidade a cada instante

Receba os valores dos parâmetros e crie a matriz A e Z0


for i = 0 to número de passos desejado do
Calcule o valor de K1, utilize o k anterior para calcular o k adjacente até o k4
calcule o z com os valores de k1, k2, k3 e k4
adicione os resultados no vetor de posição e velocidade
end
Plote velocidade e Posição em relação ao tempo
Algorithm 1: Código Runge Kutta 4a ordem simples

Na próxima sessão, o código será validado para um caso não linear, que possui uma
solução analı́tica conhecida. Haverá uma discussão sobre os erros envolvidos, sua otimi-
zação, e como será adaptado para a finalidade desejada, que é a resolução de um caso de
vibração não linear. Assim, também pode-se estudar a sua convergência. Diferentemente
de um caso linear, em que pode-se realizar a comparação entre os resultados numéricos e
analı́ticos, na maioria dos casos não lineares isso não é possı́vel de ser realizado.

3.1.3 Solução Numérica

Para comparar-se a efetividade do método numérico aplicado. visualizações e ta-


belas foram montadas, variando-se o dt utilizado, isto é, o passo do método e plotando o
resultado das duas soluções sobrepostos. O erro utilizado foi o erro relativo [4]

Ra − Rn
Erro(%) = | | × 100% (3.3)
Ra
Onde Ra e Rn representam, respectivamente, os resultados analı́ticos e numéricos.
Assim, dado o código descrito em 3.1, e a solução analı́tica proposta em 3.2, pode-
mos ver a evolução da solução conforme a escolha do valor de dt.
13

Figura 3.3: Analı́tico vs Numérico com dt=0,02

Tempo (s) Xa (m) Xn (m) Erro (%)


1 0,03976 0,06879 58,33256
1,5 0,01420 0,02478 43,71289
2 0,00138 -0,00959 96,42742
2,5 -0,00197 -0,02323 177,939

Tabela 3.1: Resultados Analı́tico vs Numérico com dt=0,02

Figura 3.4: Analı́tico vs Numérico com dt=0,01


14

Tempo (s) Xa (m) Xn (m) Erro (%)


1 0,03977 0,05091 22,39612
1,5 0,01420 0,01650 9,50232
2 0,00138 -0,00431 49,97257
2,5 -0,00196 -0,01051 71,50235

Tabela 3.2: Resultados Analı́tico vs Numérico com dt=0,01

Figura 3.5: Analı́tico vs Numérico com dt=0,005

Tempo (s) Xa (m) Xn (m) Erro (%)


1 0,03977 0,04462 9,76004
1,5 0,01420 0,01484 2,64133
2 0,00138 -0,00143 24,63457
2,5 -0,00196 -0,00586 32,67546

Tabela 3.3: Resultados Analı́tico vs Numérico com dt=0,005


15

Figura 3.6: Analı́tico vs Numérico com dt=0,001

Tempo (s) Xa (m) Xn (m) Erro (%)


1 0,03976 0,04063 1,74546
1,5 0,01420 0,01427 0,25787
2 0,00137 0,00083 4,84705
2,5 -0,00195 -0,00269 6,14527

Tabela 3.4: Resultados Analı́tico vs Numérico com dt=0,001

Como se pode observar nos gráficos acima e mostrados nas tabelas, o método das
diferenças finitas Runge Kutta de 4a ordem torna-se preciso quanto menor for o intervalo
de tempo dt escolhido. Pode-se verificar isso através dos erros relativos nas tabelas. Além
disso, com o estudo feito baixo, rodou-se o mesmo código com o intuito de avaliar a a
influência da escolha do dt no tempo de processamento do programa. Assim, pode-se
tomar critérios para escolher um dt adequado futuramente para a resolução do código não
linear.
16

dt no passos loop (ns) total (s)


0,02 250 41,9 0,016189
0,01 500 41,9 0,019234
0,005 1000 42,1 0,028955
0,0025 2000 57 0,056375
0,001 5000 71,8 0,155143
0,0001 50000 71,7 1,501796

Tabela 3.5: Comparação do tempo de processamento em relação ao dt

Atento ao fato de que, o tempo de processamento necessário para a resolução


desse código é linearmente proporcional ao dt escolhido. Para as ordens de grandeza
que o trabalho se propõe a trabalhar, pode-se verificar que os estudos a prosseguir, não
demandarão uma preocupação com o poder computacional disponı́vel para se obter uma
análise com a acurácia desejada.
Como o caso a ser resolvido a seguir é superamortecido, uma análise semelhante
foi realizada nesse fase de validação do código. Consegue-se observar uma evolução seme-
lhante de acordo com a escolha do dt, como representado abaixo:

Figura 3.7: Analı́tico vs Numérico com dt=0,02 (superamortecido)


17

Figura 3.8: Analı́tico vs Numérico com dt=0,01 (superamortecido)

Figura 3.9: Analı́tico vs Numérico com dt=0,001 (superamortecido)


Figura 3.10: Analı́tico vs Numérico com dt=0,0001 (superamortecido)

O mesmo estudo do tempo de processamento foi realizado, e suas conclusões estão


alinhadas com o caso anterior pois os resultados foram semelhantes.

dt no passos loop (ns) total (s)


0,02 250 47,1 0,018198
0,01 500 47,1 0,021621
0,001 5000 80,7 0,174397
0,0001 50000 81,3 1,678957

Tabela 3.6: Comparação do tempo de processamento em relação ao dt (superamortecido)

3.2 Caso Não-Linear


Os modelos de vibração não lineares, raramente possuem soluções analı́ticas, em
métodos diretos apenas para casos extremamente especı́ficos. Desta forma, técnicas ro-
bustas e universais precisam trabalhar com versões linearizadas dessas equações, o que
permite o uso dos método descrito anteriormente nesse trabalho.
Para a solução do caso não linear proposto neste trabalho e exemplificado na fi-
gura 3.1, pode-se utilizar o mesmo conceito discorrido na sessão anterior. Porém, iremos
realizar modificações no código para que seja possı́vel a sua resolução e para garantirmos
a convergência nos resultados.
19

Figura 3.11: Modelo Não Linear

Para este caso de amortecimento, temos que:

mẍ = F (x, ẋ) (3.4)

F = k(x − xp ) (3.5)

 N
p F
ẋ = ; xp = (t = 0) = 0 (3.6)
c
N
F − Fy

1
p
ẋ = ; F = F y + C(ẋp ) N quandoF > F y (3.7)
c
Onde k, c e N são constantes positivas que caracterizam o amortecedor e xp re-
presenta sua deformação plástica. Para a resolução do código, a seguinte mudança de
variáveis deve ser realizada: z 1 = x, z 2 = ẋ, z 3 = xp , tomando assim, a notação vetorial
final em espaços de estados dessa resolução:
       
z˙1 f 1 (z, t) z2 0
       
  k  0  
ż = z˙2  ; f (z, t) = f 2 (z, t) = − m (z 1 − z 2 ) ; z = v  (3.8)
  
       
k(z −z )
z˙3 f 3 (z, t) ( 1c 3 )N 0

Diferentemente da solução linear, aqui não temos um modelo para compararmos e


vermos se a simulação está convergindo. Porém, com as análises anteriores de dt e os
erros relativos envolvidos, pode-se tirar conclusões suficientes para modificar o código se
iniciar o modelo com bons parâmetros que farão com que seus resultados sejam aceitáveis
e próximos à realidade.
20

3.2.1 Runge-Kutta 4a ordem para solução não-linear

Até o momento, tem-se escolhido a quantidade de passos do código como ”input”,


ou seja, quantas vezes nosso método numérico irá calcular o próximo valor da variável
desejada é escolhido manualmente. Com uma ligeira modificação no código, pode-se
otimizá-lo, para que seja possı́vel realizar um estudo de convergência do modelo.
O novo código é descrito a seguir:

Input: Parâmetros do problema: Massa, velocidade inicial, coeficientes de mola e


amortecimento, dt, erro, no máximo de passos
Output: Posição, velocidade e deformação plástica a cada instante

Receba os valores dos parâmetros e crie a matriz A e Z0 e inicie o valor de i como 0


while i < no maximodepassos to and Z[i + 1] − Z[1] < erro do
Calcule o valor de K1, utilize o k anterior para calcular o k adjacente até o k4
calcule o z com os valores de k1,k2,k3, k4 e dt
adicione os resultados no vetor de posição, velocidade e deformação
Adicione 1 à variável i
end
Plote velocidade, Posição e deformação em relação ao tempo
Algorithm 2: Código Runge Kutta 4a ordem com critério de parada

Utilizando critérios de erro absoluto, baseados nos estudos anteriores para o caso linear,
levando em consideração conceitos como underflow explicados anteriormente na linguagem
escolhida podemos saber o número de passos exatos em que a condição do erro é satis-
feita, assim, descobrindo a quantidade de passos necessários para o programa representar
adequadamente o problema proposto.
Consegue-se mostrar de uma forma simples, que o dt escolhido, ainda influencia
em muito no resultado obtido para o caso linear, Como mostrado abaixo.
21

Figura 3.12: Influência do dt

3.3 Discussão de Resultados


Tendo o código completo do jeito planejado, simulações do comportamento do
impacto foram realizadas. O material escolhido para o teste é um Polı́mero Nylon com as
seguintes propriedades:

c = 500N s/m ; k = 4000N/m (3.9)

Este material foi escolhido devido a ampla aplicação de polı́meros dessa natureza
vem sendo cada vez mais comumente utilizado em toda a indústria. As condições de
contorno escolhidas para a simulação de impacto estão descritas a seguir:

v = 2, 7m/s2 ; m = 50kg (3.10)

Os inputs do método numérico fora deliberados como abaixo, levando em conta a


acurácia do resultado desejada e o poder computacional desejado para atingir tal. Assim,
tando o dt quando o stoperror escolhidos foram baseados nos resultados do capı́tulo do
anterior:

dt = 10 × 10−5 ; stoperror = 10 × 10−9 (3.11)

E então, resolvendo o código como proposto em algorithm2 com as proprieda-


des mencionadas acima, consegue-se expressar os resultados da equação de estado 3.8,
22

tornando possı́vel uma análise do comportamento do material em seu impacto. Abaixo,


observado como a velocidade decai no tempo, pode-se obter o tempo de duração do im-
pacto, isto é, da velocidade inicial até o momento em que o carro para completamente.

Figura 3.13: Velocidade x Tempo

Obtendo esse estudo da solução da equação 3.8, pode-se ir além e verificar o com-
portamento da aceleração no teste. Representado abaixo na figura 3.14, pode observar um
máximo de desaceleração de 1.2g. Levando em conta estudos que mostram que a partir
de 7g, já começa a ser maléfico para o ser humano, o material escolhido obteve um bom
resultado ao teste submetido.

Figura 3.14: Aceleração x Tempo

Da equação de estados, também pode-se obter e analisar o deslocamento do carro


23

até a sua total parada, e o efeito sofrido pelo material, isto é, a deformação plástica que
o mesmo foi submetido. Ambos também resultados da solução da equação 3.8

Figura 3.15: Posição x Tempo

Figura 3.16: Deformação Plástica x Tempo


Capı́tulo 4

Conclusão

Nesse trabalho, foi implementado um código na linguagem Python em busca de


solução de equações diferenciais ordinárias; analisar as vibrações e impacto de um veı́culo
e propor o estudo de um sistema de amortecimento não-linear elasto-viscoplástico.
Quanto o método Runge Kutta de 4a ordem, para a solução das equações o mesmo
se mostrou bastante eficiente quanto comparado à soluções analı́ticas, sem demandar
tamanho gasto computacional. A linguagem escolhida se demonstrou extremante eficiente
e de fácil utilização. Todo e qualquer problema com sua tipografia e peculiaridades, foram
facilmente resolvidos devido devido à comunidade que utiliza o Python para diversas áreas
da engenharia, e computação.
Na simulação do impacto do caso não linear, obteve-se resultados esperados devido
ao material escolhido. E o trabalho em si permitiu uma boa análise do seu comportamento.
Como o objetivo proposto do material era servir de amortecedor em um impacto, obteve-se
bons resultados de desaceleração e coerentes para uma frenagem segura para o ser-humano.

4.0.1 Trabalhos Futuros

O trabalho mostrou o grande potencial de aplicação desse tipo de material no uso


da absorção de energia de impacto, estimulando o prosseguimento para novos estudos ex-
perimentais. Assim como a análise teórica de outros materiais envolvidos para averiguar
o seu comportamento. Também, como trabalhos futuros, pode-se destacar alteração do
sistema a ser estudado, com o objetivo de realizar diversas outras simulações de compor-
tamento não lineares e se aprofundar no assunto e influência das propriedades do material.
25

Bibliografia

[1] VALLE, K. N. F. , Métodos numéricos de Euler e Runge-Kutta, Monografia (Especi-


alização), Programa de Pós-graduação em Matemática Para Professores Com Ênfase
em Cálculo, Universidade Federal de Minas Gerais, Belo Horizonte, 2012.

[2] CUMINATO, J. A.MENEGUETTE JUNIOR, M. , Discretização de equações dife-


renciais parciais: técnicas de diferenças finitas, Rio de Janeiro: SBM, 2013.

[3] AMMOS, VISH S. , NUMERICAL METHODS FOR ENGINEERS AND SCIEN-


TISTS, An Introdution with applications using MATLAB, Third Edition, 2014.

[4] STERZA, R. L.; BRANDI, A. C. , Comparação entre métodos numéricos: Runge-


Kutta de quarta ordem e previsor-corretor, Revista Eletrônica Paulista de Matemá-
tica, Bauru, v. 7, p. 12-22, dez. 2016. Edição ERMAC.

[5] BARATTO, G. , Solução de equações diferenciais ordinárias usando métodos numé-


ricos, Solução de equações diferenciais ordinárias usando métodos numéricos.

[6] SAVI, M. A.;PAULA, A. S. , Vibrações Mecânicas, 1. e.d. - Rio de Janeiro. LTC,


2017

[7] GRHAM, S. KELLY, MECHANICAL VIBRATIONS, Theory and Applications, SI


Edition,The University of akron, 2012

[8] MARC, S. W.;DAVID, L. M.;STEPHEN, V. M.,GUIDELINE FOR SAFETY HU-


MAN EXPOSURE TO IMPACT ACCELERATION, Naval Biodynamics Labora-
tory, 2004
Capı́tulo 5

Appendix

5.1 Código Fonte

Figura 5.1: Função Runge Kutta 4a Ordem em Python

26
27

Figura 5.2: Função Runge Kutta 4a Ordem em Python com Stoperror

Figura 5.3: Implementação do código para o caso linear


28

Figura 5.4: Implementação do código para o caso não-linear

Você também pode gostar