SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Relatório do Projecto - Matemática Computacional

Relatório do Projecto Computacional
Disciplina: Matemática Computacional
Curso: Mestrado Integrado em Engenharia Mecânica
Ano lectivo 2013/2014

Grupo: 72
Nome: Rafael Lucas, Nº 75521
Nome: Luís Brazão, Nº 76081
Nome: Pedro Alves, Nº 74064

Enunciado
MN-41Recorrendo ao conceito de diferenças finitas, desenvolva uma
implementação computacional em MatLab pelo método de Euler
progressivo, para a solução do problema de pequenas oscilações de um
pequeno cilindro que roda no interior de outro maior (sem escorregar). Este
movimento rege-se pela equação diferencial d2 (theta) /dt2+g/ (3/2* (R-r))
*theta=0. Considerando um raio do maior cilindro de 0.75m e o raio do
menor de r=0.10m, constante g=9.8 ms-2. Considere theta o ângulo entre a
linha de centros dos cilindros e a vertical que passa no centro do maior
cilindro. Determine o período das oscilações. Apresente gráficos da posição
e velocidade angular versus da aproximação obtida em função da variável
tempo t para três períodos. Estude a convergência com o incremento de
tempo utilizado.

Assinaturas:
________________________
________________________
________________________
Relatório do Projecto - Matemática Computacional

1. Breve introdução teórica
O Método de Euler é um dos métodos numéricos usados para integrar equações
diferenciais ordinárias (EDO’s). Estas equações envolvem uma função (geralmente
designada por y) de uma só variável (usualmente t), e um número finito de derivadas
dessa função.
O Método de Euler é usado nestas equações, no entanto é necessário completá-las com
uma condição inicial (y(t0) = y0) de modo a obtermos uma solução. Este problema é
conhecido como Problema de Valor Inicial (PVI), o qual pode ser apresentado da seguinte
forma:
𝑦 ′ = 𝑓(𝑡, 𝑦(𝑡))
{
(1)
𝑦(𝑡0) = 𝑦0
O problema consiste em determinar a partir de (1) a relação entre a variável t e a função
y. As equações deste tipo podem ser usadas como modelos matemáticos numa grande
variedade de problemas com inúmeras aplicações. No nosso caso, relaciona a posição
angular e a velocidade angular com o tempo, para o problema indicado no enunciado.
Os métodos analíticos, permitem encontrar explicitamente a função y(t). No entanto, no
caso de a função ser muito “complexa”, esses métodos revelam-se ineficazes. Portanto,
existe a necessidade de recorrer a métodos numéricos, como o método de Euler, o qual
oferece soluções aproximadas ao invés das soluções exactas. Assim, os métodos
numéricos dão-nos valores de y correspondentes apenas a um conjunto finito de valores
de t e a solução é obtida como uma tabela de valores, em vez de através de uma função
contínua. Ao utilizar este método na resolução de EDO’s obtemos soluções aproximadas
num conjunto de pontos tn do intervalo I = [t0,T]. Deste modo, em vez da solução exacta,
ficamos a conhecer os valores aproximados, logo diz-se que o problema foi discretizado.
O processo de discretização pode ser apresentado da seguinte forma: Seja I = [t 0,T] o
intervalo de integração, vamos considerar uma sucessão de nós de discretização de I, tn =
t0 + nh (n=0,1,..,N), com h>0, e N o máximo do inteiro tal que tn = T. Essa sucessão tn
define subintervalos de I : In = [tn, tn+1]. Em geral, define-se ℎ = tn+1 - tn , e designa-se
por tamanho do passo. No método em questão, assume-se que para uma pequena
distância ∆t (=h) a partir de um ponto inicial t0, a função 𝑓(𝑡, 𝑦(𝑡)) é uma constante igual
a 𝑓(𝑡0, 𝑦0). Ao admitirmos que 𝑓(𝑡, 𝑦(𝑡)) = 𝑓(𝑡0, 𝑦0) para todos os valores de t0 e t1= t0
+ h, então a alteração ∆y em y corresponde à pequena alteração ∆t em t e é dada,
aproximadamente, por:
∆𝑦
= 𝑓(𝑡0, 𝑦0)
∆𝑡
(2)
Ao representarmos y1 por y0 + ∆y, da equação anterior resulta que:
𝑦(1) = 𝑦(0) + ℎ ∗ 𝑓(𝑡0, 𝑦0)
(3)
A condição inicial fornece os valores de t0 e y0, e então pode-se calcular o valor de y1 e
todos os valores seguintes, ficando assim a solução geral segundo o método de Euler
(progressivo):
yi+1 = yi + h * f(ti,y(ti)) , i = 0,1..,N-1
(4)
onde f(ti,yi) = y’(ti).
Este método designa-se progressivo porque permite calcular yi+1 explicitamente a partir
de yi. O processo de cálculo prossegue, intervalo a intervalo, a partir de t0, até um ponto
final desejado.
Mestrado Integrado em Engenharia Mecânica - 2013/14

1
Relatório do Projecto - Matemática Computacional

Neste trabalho recorremos ao software Matlab para a implementação deste método.
2. Algoritmos do método
Para a implementação do método de Euler em MATLAB, utilizaram-se neste trabalho os
algoritmos a seguir indicados.
A1. Algoritmo para a entrada de dados:
Ler l (tempo de análise)
Ler h (tamanho do passo da malha)
Ler ang(1) (condição inicial, valor inicial da posição angular)
Ler vel(1) (condição inicial, valor inicial da velocidade angular (primeira derivada
da posição angular(ang’ = vel)
A2. Algoritmo para a implementação do método de Euler:
Criar um vector t, com os diferentes valores de ti (ti = t0 + i*h).
Ciclo de i = 1,2,., r -1 (Seja r o tamanho do vector t)
angi+1 = angi + h * veli
veli+1 = veli - p*h* angi
Fim do ciclo
A3. Algoritmo para o cálculo da solução exacta da equação diferencial dada no
enunciado:
Seja pos a solução exacta da posição angular e omega a solução exacta da velocidade
angular. (A expressão da solução exacta foi calculada analiticamente).
c = ang(1)
m = 3.1704
d = vel(1)/m
pos(1) = ang(1)
omega(1) = vel(1)
Ciclo de i=1,2,.., r-1
posi+1 = c*cos(m*ti+1) + d*sen(m*ti+1)
omegai+1 = -m*c*sen(m*ti+1) + m*d* cos(m*ti+1)
Fim do ciclo
A4. Algoritmo para o cálculo do erro global de discretização (da posição e da velocidade
angulares):
Ciclo de i=1,2,.., k (Seja k o tamanho do vector pos)
erroposi = |angi – posi|
Fim do ciclo
Ciclo de i=1,2,..,k (Seja k o tamanho do vector pos(igual ao tamanho do vector
omega)
erromegai = |veli – omegai|
Fim do ciclo
A5. Algoritmo para o cálculo do majorante do erro de truncatura para cada passo (da
posição e velocidade angular):
(Para implementar este algoritmo, resolvemos analiticamente a segunda e terceira
derivada de pos)
errotruncang1 = 0
Ciclo i = 1,2,.., r-1
ymaxi = máximo do módulo da função: -(3.1704^2)*c*cos(m*x) (3.1704^2)*d*sin(m*x)), para cada intervalo [ti,ti+1].
errotruncangi+1 = ((h)/2)* ymaxi
Fim do ciclo
Mestrado Integrado em Engenharia Mecânica - 2013/14

2
Relatório do Projecto - Matemática Computacional

Acima apenas está explicado o algoritmo para o caso da posição angular, pois o
procedimento para a velocidade angular é idêntico.
A6. Algoritmo para o cálculo dos períodos das ondas sinusoidais da velocidade e da
posição angular (da solução exacta e da solução numérica) e para o cálculo do erro dos
períodos:
(Neste caso usou-se uma interpolação linear para calcular o período)
indices = vector de zeros com tamanho g(tamanho do vector t)
Ciclo de i=1,2,..,g
se posi > 0 e posi+1 < 0
indicesi = 1
indicesi+1 = 1
fim
fim do ciclo
d = vector que guarda as posições onde o vector índices tem valor 1
(Interpolação linear :)
ta = (-posd1/(posd2-posd1))*(td2-td1) + td1
ta2 = (-posd3/(posd4-posd3))*(td4-td3) + t(d3)
periodopos = ta2 – ta
O cálculo do resto dos períodos é idêntico a este, só difere nas variáveis.
3. Aspectos da implementação dos algoritmos
Na implementação do algoritmo A1, o programa pede ao utilizador para introduzir as
variáveis necessárias para se implementar o método em questão: o tempo de análise, o
tamanho do passo da malha, o valor inicial da posição angular e da velocidade angular.
O programa guarda estes dados respectivamente nas variáveis: l, h, ang(1) e vel(1).
O algoritmo A2 é utilizado para implementar o método de Euler nas condições indicadas
pelo utilizador. Usou-se um ciclo (for) que calcula a solução aproximada através do
método de Euler progressivo da posição angular (ang) e da velocidade angular (vel) em
função do tempo, em cada ponto ti. Note-se que o valor da posição e velocidade angular
no instante incial (t0), são dados pelo utilizador e são respectivamente ang(1) e vel(1).
No algoritmo A3, é calculada a solução analítica da equação diferencial de segundo grau
dada no enunciado para cada ponto ti. Para tal usou-se também um ciclo (for) que calcula
a solução exacta da posição (pos) e velocidade angular (omega) em cada ponto t i. Notese que o valor da posição e da velocidade angular t0 são inseridos pelo utilizador no
algoritmo A1, pois trata-se de um problema de valor inicial. Assim, tem-se:
ang(1)=pos(1) e vel(1)=omega(1).
O algoritmo A4 é usado para calcular o erro global de discretização em cada ponto i. Para
tal usámos dois ciclos: o primeiro calcula o erro em cada ponto i da posição angular, para
tal calculamos o valor absoluto da subtracção do valor aproximado (ang) ao valor exacto
(pos) em cada ponto. O segundo ciclo, procede da mesma maneira, mas para a velocidade
angular, cujo valor aproximado é vel e o valor exacto é omega.
No algoritmo A5 calcula-se o majorante do erro de truncatura para casa passo associado
ao método de Euler na determinação da posição e velocidade angular. O erro de truncatura
pode ser majorado da seguinte forma: Tn+1 = h*sup| 𝑓′(𝑡, 𝑦(𝑡))|, (usando a notação da
secção 1), onde t está entre os valores ti e ti+1. Para calcularmos o supremo do módulo de
Mestrado Integrado em Engenharia Mecânica - 2013/14

3
Relatório do Projecto - Matemática Computacional

𝑓′(𝑡, 𝑦(𝑡)), recorremos a um ciclo no qual utilizámos a função fminbnd do MATLAB. (A
função 𝑓′(𝑡, 𝑦(𝑡)) foi calculada analiticamente). O ciclo dá-nos o valor do majorante do
erro de truncatura em cada ponto i, sendo que no ponto inicial, o erro de truncatura é zero,
pois no ponto inicial ainda não tinha ocorrido nenhum passo do método de Euler. Para
calcular o majorante do erro de truncatura para casa passo na determinação da velocidade
angular procedeu-se da mesma forma, mas em vez de se utilizar sup| 𝑓′(𝑡, 𝑦(𝑡))|, usou-se
sup| 𝑓′′(𝑡, 𝑦(𝑡))|.
No algoritmo A6 calcula-se o período de cada onda sinusoidal da posição e velocidade
angular, tanto para a solução exacta como para a solução analítica e calcula-se o
respectivo erro efectivo dos períodos. No cálculo dos períodos, usou-se uma interpolação
linear para calcular em que pontos t, o valor da posição e velocidade eram zero. Vamos
só explicar o procedimento para o cálculo do período no caso da onda da posição angular
exacta, pois os outros calculam-se através do mesmo procedimento. Para tal, criou-se um
vector índices de zeros e de tamanho do vector t. De seguida criou-se um ciclo em que se
pos(i) >0 e pos(i+1) <0 , então o vector indices nas posições i e i+1, fica com o valor 1.
De seguida criou-se um vector d que encontra as posições i onde indices(i) = 1 (para tal
utilizou-se a função find. Depois, recorremos a uma interpolação linear, pois o intervalo
entre os pontos i e i+1 é tao pequeno (h) que se aceita esta aproximação. Como o vector
d guarda as posições i e i+1, onde pos(i) > 0 e pos(i+1) < 0, então podemos aplicar uma
interpolação linear utilizando esses pontos (pos(d(i))). Em anexo encontra-se explicada
como se utilizou a interpolação linear.
4. Aplicação do método e discussão de resultados
Para as aplicações de teste deste método considerámos vários valores inseridos pelo
utilizador, de modo a mostrarmos como é feita a implementação do método e fazemos
uma análise dos erros associados ao mesmo.
Para tal, criámos um menu onde o utilizador pode escolher a opção Inserir condições
iniciais. No papel do utilizador, no primeiro caso teste inserimos os seguintes dados:
Tempo de análise – 5s, Intervalo de tempo – 0.01s, Ângulo inicial – pi/10 rad, Velocidade
angular inicial – 0 rad/s. De seguida voltamos ao menu e escolhemos a segunda opção
Calcular solução numérica pelo método de Euler progressivo. Esta opção implementa o
método em questão e calcula a solução numérica para as condições indicadas
inicialmente. Ao escolher a terceira opção obtemos os gráficos da posição e velocidade
angular em função do tempo, tanto para a solução exacta como numérica:

Mestrado Integrado em Engenharia Mecânica - 2013/14

4
Relatório do Projecto - Matemática Computacional

Figura 1 Gráficos da posição angular e velocidade angular em função do tempo

Analisando os gráficos, podemos ver que o erro global aumenta ao longo do tempo como
podemos confirmar analisando os gráficos a seguir, escolhendo a quarta opção do menu:

Figura 2 Gráficos do erro global de discretização em função do tempo (escala logarítmica)

Observamos que o erro global aumenta ao longo do tempo tanto para a posição angular
como para a velocidade angular. No entanto, observa-se que existem certos pontos onde
o erro decresce devido à onda da posição e da velocidade angular ser sinusoidal. De
seguida, criámos um algoritmo para calcular o majorante do erro de truncatura em cada
passo cometido pela aproximação associada ao método de Euler (para a posição e
velocidade angular), o qual cria um gráfico do mesmo em função do tempo:
Mestrado Integrado em Engenharia Mecânica - 2013/14

5
Relatório do Projecto - Matemática Computacional

Figura 3 Gráficos do majorante do erro de truncatura em função do tempo (escala logarítmica)

Este erro dá-nos o erro cometido de passo em passo, ou seja, o erro cometido do ponto i
para o ponto i+1. Observando os gráficos, podemos ver que o majorante do erro de
truncatura tem um majorante para si mesmo, ou seja, o erro cometido de um passo para o
seguinte nunca é maior do que um determinado valor. De seguida, calculamos os períodos
da onda da posição e da velocidade angular (exactas e numéricas), usando uma
interpolação linear, e calculamos o erro efectivo dos períodos, escolhendo a opção 8
seguida da 7, do menu. Ao fazermos isto, é nos apresentado no prompt do Matlab o
seguinte:
O período da onda da posição angular(solução exacta) é: 1.981827 s
O período da onda da posição angular(solução numérica) é: 1.982507 s
O período da onda da velocidade angular(solução exacta) é: 2.299054 s
O período da onda da velocidade angular(solução numérica) é: 1.982506 s
O erro efectivo do período da onda sinusoidal da posição angular entre a solução
exacta e a numérica é: 0.000679
O erro efectivo do período da onda sinusoidal da velocidade angular entre a
solução exacta e a numérica é: 0.316548
Para fazermos uma melhor análise do método de Euler e do erro associado ao mesmo,
considerámos um exemplo de teste em que as condições iniciais são iguais, à excepção
do Intervalo de tempo que em vez de ser 0.01s é 0.0001s, ou seja, o passo efectuado do
ponto i para o i+1 é igual a 0.0001 (que corresponde ao h na equação (4) da secção 1).
Efectuámos o mesmo procedimento do teste anterior, e obtivemos os seguintes resultados:

Mestrado Integrado em Engenharia Mecânica - 2013/14

6
Relatório do Projecto - Matemática Computacional

Figura 4 Gráficos da posição angular e velocidade angular em função do tempo

Como podemos ver ao observar estes gráficos, a solução numérica e a exacta quase que
coincidem em todos os pontos. Comparando com o exemplo anterior, concluímos que ao
considerar um h (tamanho do passo) menor, o erro global e de truncatura também
diminuem. Assim, quando o h tende para zero, o erro associado ao método de Euler
também tende para zero, como podemos observar pelos seguintes gráficos:

Figura 5 Gráficos do erro global de discretização em função do tempo (escala logarítmica)

Mestrado Integrado em Engenharia Mecânica - 2013/14

7
Relatório do Projecto - Matemática Computacional

Figura 6 Gráficos do majorante do erro de truncatura em função do tempo (escala logarítmica)

Calculando os períodos e o erro efectivo como foi feito no primeiro exemplo obtemos o
seguinte:
O período da onda da posição angular(solução exacta) é: 1.981827 s
O período da onda da posição angular(solução numérica) é: 1.981843 s
O período da onda da velocidade angular(solução exacta) é: 2.297272 s
O período da onda da velocidade angular(solução numérica) é: 1.981843 s
O erro efectivo do período da onda sinusoidal da posição angular entre a solução
exacta e a numérica é: 0.000015
O erro efectivo do período da onda sinusoidal da velocidade angular entre a
solução exacta e a numérica é: 0.315430
Como podemos ver também o erro efectivo dos períodos é menor, como seria esperado.
Assim, podemos concluir que o método de Euler é tão mais eficaz quanto menor for a
variável h. No entanto, para valores muito pequenos de h, o esforço computacional
aumenta, diminuindo assim a eficiência desejada na aplicação destes métodos.
Um método numérico diz-se convergente se o erro global de discretização tender para
zero se o incremento de tempo (h) utilizado tender para zero. Podemos concluir
analisando os gráficos atrás apresentados que o erro global tende para zero quando h tende
para zero, assim, o método de Euler diz-se convergente.
5. Referências
[1] Pina, H., “Métodos Numéricos”, Escolar Editora, 2010.
[2] M. Teresa Diogo, Murilo Tomé. “Matemática Computacional- Notas de
Aulas”, secção de folhas do IST, IST, 2009.

Mestrado Integrado em Engenharia Mecânica - 2013/14

8
Relatório do Projecto - Matemática Computacional

[3] Mário Rosa, “Tópicos de análise numérica- métodos numéricos”,
Departamento de matemática, Universidade de Coimbra, 1992
Nota: Para a melhor visualização dos gráficos apresentados ao longo do documento, foi
necessário o incremento de número de páginas do relatório.
Anexo A - Como utilizar o programa
Para o utilizador utilizar o programa desenvolvido por nós, basta escrever “eulermenu”
no prompt do MatLab. Assim, aparece um menu com várias opções. A primeira opção,
“Inserir condições iniciais”, permite ao utilizador inserir os valores das condições
iniciais do problema em questão. A segunda opção, “Calcular solução numérica pelo
método de Euler progressivo”, calcula a solução aproximada da posição e velocidade
angular pelo método de Euler. A terceira opção, “Gráficos da posição e velocidade
angular em função do tempo (exactas e aproximadas)”, cria dois gráficos: o primeiro
relaciona a posição angular com o tempo de análise, tanto a solução exacta como a
solução numérica; o segundo relaciona da mesma forma a velocidade angular com o
tempo. A quarta opção, “Gráficos do erro global de discretização em função do tempo”,
cria dois gráficos, relacionando o erro global de discretização como tempo, para a
posição e velocidade angular. A quinta opção do menu, “Gráficos da posição e
velocidade angular (exactas) com barras de erro de discretização global”, cria dois
gráficos: um da posição angular (exacta) em função do tempo com as barras de erro
global de discretização em cada ponto; o segundo, procede da mesma maneira para a
velocidade angular. A sexta opção, “Gráficos do majorante do erro de truncatura em
função do tempo”, cria também dois gráficos que relacionam o majorante do erro de
truncatura com o tempo, para a posição e velocidade angular. A sétima opção, “Calcular
os períodos das ondas da posição e velocidade angular (exactas e aproximadas)”,
calcula os períodos das ondas da posição e velocidade angular, exactas e aproximadas, e
escreve no prompt do MatLab os respectivos valores. Por fim, a oitava opção, “Calcular
o erro efectivo dos períodos”, calcula o erro efectivo associado aos períodos das ondas
sinusoidais da posição e velocidade angular, exactas aproximadas, escrevendo no
prompt os respectivos valores.
Anexo B – Listagem do código em MatLab
%Menu para a implementação dos algoritmos
choice = menu('Método de Euler Progressivo','Inserir condições iniciais','Calcular solução numérica pelo
método de Euler progressivo','Gráficos da posição e velocidade angular em função do tempo(exactas e
aproximadas)','Gráficos do erro global de discretização em função do tempo','Gráficos da posição e
velocidade angular (exactas) com barras de erro de discretização global','Gráfico do majorante do erro de
truncatura em função do tempo','Calcular os períodos das ondas da posição e velocidade angular (exactas
e aproximadas)','Calcular o erro efectivo dos períodos','Sair');
switch choice
case 1
lerdados
eulermenu
case 2
euler
eulermen
case 3
sol
eulermenu
case 4
erroglobal
eulermenu

Mestrado Integrado em Engenharia Mecânica - 2013/14

9
Relatório do Projecto - Matemática Computacional
case 5
erro
eulermenu
case 6
errotruncatura
eulermenu
case 7
periodosposicao
periodovelocidade
eulermenu
case 8
erroefectivo
eulermenu
case 9
end
%------------------------------------------------------------------------%------------------------A1: Ler dados-------------------------------%------------------------------------------------------------------------clear;
clc;
l = input('Tempo de análise(ex: 10) : ');
h = input ('Intervalo de tempo(ex: 0.001) : ');
ang = size(l);
vel = size(l);
ang(1) = input('Ângulo inicial(ex: pi/10) : ');
vel(1) = input('Velocidade inicial(ex: 0) : ');
g = 9.8;
R = 0.75;
r = 0.10;
p = g/((3/2)*(R-r));
%-------------------------------------------------------------------------%------------A2: Implementação do método de Euler progressivo
%-------------------------------------------------------------------------t = 0:h:l;
for i = 1:(length(t)-1)
ang(i+1) = ang(i) + vel(i)*h;
vel(i+1) = vel(i) - p*h*ang(i);
end;
%--------------------------------------------------------------------------------------%------A3 Solução analítica da equação diferencial dada no enunciado----%--------------------------------------------------------------------------------------omega = size(l);
pos = size(l);
pos(1) = ang(1);
omega(1) = vel(1);
c = ang(1);
m = 3.1704;
d = vel(1)/(m);
for i = 1:(length(t)-1)
pos(i+1) = c*cos(m*t(i+1)) + d*sin(m*t(i+1));
omega(i+1) = -m*c*sin(m*t(i+1)) + m*d*cos(m*t(i+1));
end
%----------------------------------------------------------------------------------------%------- Gráficos das soluções exactas e aproximadas (posição angular------%-------e velocidade angular) em função do tempo------------------------------%----------------------------------------------------------------------------------------figure(1)
subplot(1,2,1), plot(t,ang,'b',t,pos,'r--');
title('Posição Angular em função do tempo')
xlabel('Tempo,s')
ylabel('Deslocamento Angular, rad')

Mestrado Integrado em Engenharia Mecânica - 2013/14

10
Relatório do Projecto - Matemática Computacional
grid
legend ('Solução aproximada','Solução exacta')
subplot(1,2,2), plot(t,vel,'b',t,omega,'r--');
title('Velocidade Angular em função do tempo')
xlabel('Tempo,s')
ylabel('Velocidade Angular, rad/s')
grid
legend ('Solução aproximada','Solução exacta')
%-------------------------------------------------------------------------%----------A4 Erro global de discretização da posição angular--%-------------------------------------------------------------------------erropos = size(pos);
for i=1:length(pos)
erropos(i) = abs(ang(i)-pos(i));
end
%---------------------------------------------------------------------------%----------A4 Erro global de discretização da velocidade angular%---------------------------------------------------------------------------erromega = size(omega);
for i=1:length(omega)
erromega(i) = abs(vel(i)-omega(i));
end
%-------------------------------------------------------------------------%---------Gráficos do erro global de discretização (posição-----%---------e velocidade angular) em função do tempo-------------%-------------------------------------------------------------------------figure(2)
subplot(1,2,1), loglog(t,erropos,'r');
title('Erro global de discretização da posição angular em função do tempo')
xlabel('Tempo,s')
ylabel('Erro')
grid
subplot(1,2,2), loglog(t,erromega,'r');
title('Erro global de discretização da velocidade angular em função do tempo')
xlabel('Tempo,s')
ylabel('Erro')
grid
%-------------------------------------------------------------------------%--------Gráficos da posição e velocidade angular (exactas)----%-------em função do tempo com barras de erro (erro de--------%--------------discretização global)-----------------------------------%-------------------------------------------------------------------------figure(3)
subplot(1,2,1), errorbar(t,pos,erropos);
title('Gráfico da posição angular (exacta) com barras de erro (erro de disctretização global)')
xlabel('Tempo,s')
ylabel('Posição angular, rad')
subplot(1,2,2), errorbar(t,omega,erromega);
title('Gráfico da velocidade angular (exacta) com barras de erro (erro de disctretização global)')
xlabel('Tempo,s')
ylabel('Velocidade angular, rad')
%-------------------------------------------------------------------------------------%------A5 Majorante do erro de truncatura (posição angular)---------------%-------------------------------------------------------------------------------------errotruncang(1) = 0;
for i = 1:(length(t) - 1)
[xmax(i) ymax(i)] = fminbnd(@(x) -abs(-(m^2)*c*cos(m*x) - (m^2)*d*sin(m*x)),t(i),t(i+1));
ymax = abs([ymax]);
errotruncang(i+1) = ((h)/2)*ymax(i) ;
end
%--------------------------------------------------------------------------------------%------A5 Majorante do erro de truncatura (velocidade angular)------------%--------------------------------------------------------------------------------------errotruncvel(1) = 0;

Mestrado Integrado em Engenharia Mecânica - 2013/14

11
Relatório do Projecto - Matemática Computacional
for i = 1:(length(t)-1)
[x1max(i) y1max(i)] = fminbnd(@(x) -abs((m^3)*c*sin(m*x) - (m^3)*d*cos(m*x)),t(i),t(i+1));
y1max = abs([y1max]);
errotruncvel(i+1) = ((h)/2) * y1max(i) ;
end
%-----------------------------------------------------------------------------------------%-------Gráficos do majorante do erro de truncatura em função do tempo----%--------------(posição e velocidade angular)-----------------------------%-------------------------------------------------------------------------------figure(4)
subplot(1,2,1), loglog(t,errotruncang,'r');
title('Majorante do erro de truncatura em cada passo da posição angular em função do tempo')
xlabel('Tempo,s')
ylabel('Majorante do erro de truncatura')
grid
subplot(1,2,2), loglog(t,errotruncvel,'r');
title('Majorante do erro de truncatura em cada passo da velocidade angular em função do tempo')
xlabel('Tempo,s')
ylabel('Majorante do erro de truncatura')
grid
%----------------------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da posição angular-------%----------------------(solução exacta)----------------------------------------------%----------------------------------------------------------------------------------------indices = zeros(1,length(t));
for i = 1:(length(t)-1)
if pos(i) > 0 && pos(i+1)<0
indices(i) = 1;
indices (i+1) =1;
end
end
[d] = find(indices == 1);
ta = (-pos(d(1)))/(pos(d(2))-pos(d(1)))*(t(d(2))-t(d(1))) + t(d(1)) ;
ta2 = (-pos(d(3)))/(pos(d(4))-pos(d(3)))*(t(d(4))-t(d(3))) + t(d(3)) ;
periodopos = ta2 - ta;
fprintf('O período da onda da posição angular(solução exacta) é: %f s n',periodopos);
%----------------------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da posição angular-------%----------------------(solução numérica)------------------------------------------%----------------------------------------------------------------------------------------indices1 = zeros(1,length(t));
for i = 1:(length(t)-1)
if ang(i) > 0 && ang(i+1) < 0
indices1(i) = 1;
indices1(i+1) =1;
end
end
[g] = find(indices1 == 1);
z0 = (-ang(g(1)))/(ang(g(2))-ang(g(1)))*(t(g(2))-t(g(1))) + t(g(1)) ;
z1 = (-ang(g(3)))/(ang(g(4))-ang(g(3)))*(t(g(4))-t(g(3))) + t(g(3)) ;
periodoang = z1 - z0;
fprintf('O período da onda da posição angular(solução numérica) é: %f s n',periodoang)
%----------------------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da velocidade angular----%----------------------(solução exacta)-----------------------------------------------%-----------------------------------------------------------------------------------------ind = zeros(1,length(t));
for i = 1:(length(t)-1)

Mestrado Integrado em Engenharia Mecânica - 2013/14

12
Relatório do Projecto - Matemática Computacional
if omega(i) > 0 && omega(i+1) < 0
ind(i) = 1;
ind(i+1) = 1;
end
end
[u] = find(ind == 1);
p0 = (-omega(d(1)))/(omega(u(2))-omega(u(1)))*(t(u(2))-t(u(1))) + t(u(1)) ;
p1 = (-omega(u(3)))/(omega(u(4))-omega(u(3)))*(t(u(4))-t(u(3))) + t(u(3)) ;
periodomega = p1 - p0;
fprintf('O período da onda da velocidade angular(solução exacta) é: %f s n',periodomega);
%-------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da velocidade angular----%----------------------(solução numérica)---------------------------------%-------------------------------------------------------------------------ind1 = zeros(1,length(t));
for i = 1:(length(t)-1)
if vel(i) > 0 && vel(i+1) < 0
ind1(i) = 1;
ind1(i+1) = 1;
end
end
[w] = find(ind1 == 1);
v0 = (-vel(w(1)))/(vel(w(2))-vel(w(1)))*(t(w(2))-t(w(1))) + t(w(1)) ;
v1 = (-vel(w(3)))/(vel(w(4))-vel(w(3)))*(t(w(4))-t(w(3))) + t(w(3)) ;
periodovel = v1 - v0;
fprintf('O período da onda da velocidade angular(solução numérica) é: %f s n',periodovel);
%----------------------------------------------------------------------------------%----------------Erro efectivo do período (posição angular)---------------%----------------------------------------------------------------------------------erroperiodopos = abs(periodoang - periodopos);
fprintf('O erro efectivo do período da onda sinusoidal da posição angular entre a solução exacta e a numérica é: %f
n',erroperiodopos);
%-----------------------------------------------------------------------------------%----------------Erro efectivo do período (velocidade angular)------------%-----------------------------------------------------------------------------------erroperiodomega = abs(periodovel -periodomega);
fprintf('O erro efectivo do período da onda sinusoidal da velocidade angular entre a solução exacta e a numérica é: %f
n',erroperiodomega);

Anexo C – soluções analíticas
Para a implementação do algoritmo A2, calculamos a solução analítica da equação
diferencial dada no enunciado. Assim, a solução para a posição angular é: pos(t) =
c*cos(m*t) + d*sin(m*t) (em função de t), sendo m=3.1704 (constante), c=ang(1) e d=
vel(1)/m.; para a velocidade angular: omega(t) = -m*c*sin(m*t) + m*d*cos(m*t).
Tanto ang(1) como vel(1) são condições iniciais indicadas pelo utilizador.
Na implementação do algoritmo A5 resolvemos também analiticamente a segunda e
terceira derivada de pos. Sendo que pos’’(t) = -(m^2)*c*cos(m*t) - (m^2)*d*sin(m*t) e
pos’’’(t) = (m^3)*c*sin(m*t) - (m^3)*d*cos(m*t). Note-se que c, d e m são os mesmo
que são usados no algoritmo A2.
Anexo D – Interpolação linear
Mestrado Integrado em Engenharia Mecânica - 2013/14

13
Relatório do Projecto - Matemática Computacional

Na implementação do algoritmo A6, utilizámos uma interpolação linear para
calcularmos os períodos. Usámos este método, pois o intervalo entre os pontos i e i+1, é
tão pequeno que o erro associado à interpolação linear é aceitável para o nosso
propósito. A interpolação linear pode definir-se assim:
𝑦𝑎−𝑦1
𝑦2−𝑦1

=

𝑡𝑎−𝑡1
𝑡2−𝑡1

, sendo ya e ta os pontos entre y1 e y2, e t1 e t2, respectivamente.

Assim, queremos o ponto ta para o qual ya é igual a zero. Utilizando este método,
conseguimos calcular os períodos

Mestrado Integrado em Engenharia Mecânica - 2013/14

14

Weitere ähnliche Inhalte

Was ist angesagt? (15)

Operadores
OperadoresOperadores
Operadores
 
2.+mdf
2.+mdf2.+mdf
2.+mdf
 
Seno e cosseno_dos_arcos_notáveis
Seno e cosseno_dos_arcos_notáveisSeno e cosseno_dos_arcos_notáveis
Seno e cosseno_dos_arcos_notáveis
 
05a-integrais de linha
05a-integrais de linha05a-integrais de linha
05a-integrais de linha
 
Calculo1 aula01
Calculo1 aula01Calculo1 aula01
Calculo1 aula01
 
Aula 7 a1 cap9 expansaotaylor
Aula 7 a1 cap9 expansaotaylorAula 7 a1 cap9 expansaotaylor
Aula 7 a1 cap9 expansaotaylor
 
Trigonometria
TrigonometriaTrigonometria
Trigonometria
 
Vibracoes
VibracoesVibracoes
Vibracoes
 
CFD Aula 1B
CFD Aula 1BCFD Aula 1B
CFD Aula 1B
 
Laplace
LaplaceLaplace
Laplace
 
Aula10 diagramasde bode
Aula10 diagramasde bodeAula10 diagramasde bode
Aula10 diagramasde bode
 
06-integrais de superfície
06-integrais de  superfície06-integrais de  superfície
06-integrais de superfície
 
Capitulo4 tl06
Capitulo4 tl06Capitulo4 tl06
Capitulo4 tl06
 
Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)
Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)
Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)
 
Provas passadas calculo2
Provas passadas calculo2Provas passadas calculo2
Provas passadas calculo2
 

Andere mochten auch

Planejamento e Otimização de Infra-estrutura de TI por Bruno Domingues
Planejamento e Otimização de Infra-estrutura de TI por Bruno DominguesPlanejamento e Otimização de Infra-estrutura de TI por Bruno Domingues
Planejamento e Otimização de Infra-estrutura de TI por Bruno DominguesJoao Galdino Mello de Souza
 
Internet en colombia
Internet en colombiaInternet en colombia
Internet en colombiaclarailg
 
Abertura da 6a. Conferência Nacional do CMG Brasil, por João Natalino
Abertura da 6a. Conferência Nacional do CMG Brasil, por João NatalinoAbertura da 6a. Conferência Nacional do CMG Brasil, por João Natalino
Abertura da 6a. Conferência Nacional do CMG Brasil, por João NatalinoJoao Galdino Mello de Souza
 

Andere mochten auch (7)

Planejamento e Otimização de Infra-estrutura de TI por Bruno Domingues
Planejamento e Otimização de Infra-estrutura de TI por Bruno DominguesPlanejamento e Otimização de Infra-estrutura de TI por Bruno Domingues
Planejamento e Otimização de Infra-estrutura de TI por Bruno Domingues
 
Internet en colombia
Internet en colombiaInternet en colombia
Internet en colombia
 
Nacionalizacao dos bancos amercianos
Nacionalizacao dos bancos amercianosNacionalizacao dos bancos amercianos
Nacionalizacao dos bancos amercianos
 
Bimbo (1)
Bimbo (1)Bimbo (1)
Bimbo (1)
 
Abertura da 6a. Conferência Nacional do CMG Brasil, por João Natalino
Abertura da 6a. Conferência Nacional do CMG Brasil, por João NatalinoAbertura da 6a. Conferência Nacional do CMG Brasil, por João Natalino
Abertura da 6a. Conferência Nacional do CMG Brasil, por João Natalino
 
Tempo e Performance por Luis Carlos Orsoni
Tempo e Performance por Luis Carlos OrsoniTempo e Performance por Luis Carlos Orsoni
Tempo e Performance por Luis Carlos Orsoni
 
Videoclub
Videoclub Videoclub
Videoclub
 

Ähnlich wie Relatório do Projecto - Simulação de oscilações de um cilindro

Fisica 1EM 1BIM
Fisica 1EM 1BIM Fisica 1EM 1BIM
Fisica 1EM 1BIM Alice MLK
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Conemat 2010 - Aplicação de alguns métodos de Runge Kutta
Conemat 2010 - Aplicação de alguns métodos de Runge KuttaConemat 2010 - Aplicação de alguns métodos de Runge Kutta
Conemat 2010 - Aplicação de alguns métodos de Runge KuttaRodrigo Romais
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Jim Naturesa
 
Apontamento quantica
Apontamento quanticaApontamento quantica
Apontamento quanticaRaiane Sodré
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptssuserd654cb1
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptssuserd654cb1
 
Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfCaiqueMiranda7
 
F128 exercicios resolvidos-cap_10_a
F128 exercicios resolvidos-cap_10_aF128 exercicios resolvidos-cap_10_a
F128 exercicios resolvidos-cap_10_aElisabete Freitas
 
Apostila Análise Matemática para Engenharia II - CCE1433.pdf
Apostila Análise Matemática para Engenharia II - CCE1433.pdfApostila Análise Matemática para Engenharia II - CCE1433.pdf
Apostila Análise Matemática para Engenharia II - CCE1433.pdfFernandoSenra4
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfItaloRainier1
 
Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)Ivan Soares
 

Ähnlich wie Relatório do Projecto - Simulação de oscilações de um cilindro (20)

Cinemática
CinemáticaCinemática
Cinemática
 
Fisica 1EM 1BIM
Fisica 1EM 1BIM Fisica 1EM 1BIM
Fisica 1EM 1BIM
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Matemática v
Matemática vMatemática v
Matemática v
 
Capitulo1
Capitulo1Capitulo1
Capitulo1
 
Trigonometria básica
Trigonometria básicaTrigonometria básica
Trigonometria básica
 
Trigonometria
TrigonometriaTrigonometria
Trigonometria
 
Trigonometria
TrigonometriaTrigonometria
Trigonometria
 
Conemat 2010 - Aplicação de alguns métodos de Runge Kutta
Conemat 2010 - Aplicação de alguns métodos de Runge KuttaConemat 2010 - Aplicação de alguns métodos de Runge Kutta
Conemat 2010 - Aplicação de alguns métodos de Runge Kutta
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)
 
Apontamento quantica
Apontamento quanticaApontamento quantica
Apontamento quantica
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.ppt
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).ppt
 
Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdf
 
Aula 1 a 15 vol1
Aula 1 a 15 vol1Aula 1 a 15 vol1
Aula 1 a 15 vol1
 
F128 exercicios resolvidos-cap_10_a
F128 exercicios resolvidos-cap_10_aF128 exercicios resolvidos-cap_10_a
F128 exercicios resolvidos-cap_10_a
 
Apostila Análise Matemática para Engenharia II - CCE1433.pdf
Apostila Análise Matemática para Engenharia II - CCE1433.pdfApostila Análise Matemática para Engenharia II - CCE1433.pdf
Apostila Análise Matemática para Engenharia II - CCE1433.pdf
 
Relatório 1
Relatório 1Relatório 1
Relatório 1
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdf
 
Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)
 

Relatório do Projecto - Simulação de oscilações de um cilindro

  • 1. Relatório do Projecto - Matemática Computacional Relatório do Projecto Computacional Disciplina: Matemática Computacional Curso: Mestrado Integrado em Engenharia Mecânica Ano lectivo 2013/2014 Grupo: 72 Nome: Rafael Lucas, Nº 75521 Nome: Luís Brazão, Nº 76081 Nome: Pedro Alves, Nº 74064 Enunciado MN-41Recorrendo ao conceito de diferenças finitas, desenvolva uma implementação computacional em MatLab pelo método de Euler progressivo, para a solução do problema de pequenas oscilações de um pequeno cilindro que roda no interior de outro maior (sem escorregar). Este movimento rege-se pela equação diferencial d2 (theta) /dt2+g/ (3/2* (R-r)) *theta=0. Considerando um raio do maior cilindro de 0.75m e o raio do menor de r=0.10m, constante g=9.8 ms-2. Considere theta o ângulo entre a linha de centros dos cilindros e a vertical que passa no centro do maior cilindro. Determine o período das oscilações. Apresente gráficos da posição e velocidade angular versus da aproximação obtida em função da variável tempo t para três períodos. Estude a convergência com o incremento de tempo utilizado. Assinaturas: ________________________ ________________________ ________________________
  • 2. Relatório do Projecto - Matemática Computacional 1. Breve introdução teórica O Método de Euler é um dos métodos numéricos usados para integrar equações diferenciais ordinárias (EDO’s). Estas equações envolvem uma função (geralmente designada por y) de uma só variável (usualmente t), e um número finito de derivadas dessa função. O Método de Euler é usado nestas equações, no entanto é necessário completá-las com uma condição inicial (y(t0) = y0) de modo a obtermos uma solução. Este problema é conhecido como Problema de Valor Inicial (PVI), o qual pode ser apresentado da seguinte forma: 𝑦 ′ = 𝑓(𝑡, 𝑦(𝑡)) { (1) 𝑦(𝑡0) = 𝑦0 O problema consiste em determinar a partir de (1) a relação entre a variável t e a função y. As equações deste tipo podem ser usadas como modelos matemáticos numa grande variedade de problemas com inúmeras aplicações. No nosso caso, relaciona a posição angular e a velocidade angular com o tempo, para o problema indicado no enunciado. Os métodos analíticos, permitem encontrar explicitamente a função y(t). No entanto, no caso de a função ser muito “complexa”, esses métodos revelam-se ineficazes. Portanto, existe a necessidade de recorrer a métodos numéricos, como o método de Euler, o qual oferece soluções aproximadas ao invés das soluções exactas. Assim, os métodos numéricos dão-nos valores de y correspondentes apenas a um conjunto finito de valores de t e a solução é obtida como uma tabela de valores, em vez de através de uma função contínua. Ao utilizar este método na resolução de EDO’s obtemos soluções aproximadas num conjunto de pontos tn do intervalo I = [t0,T]. Deste modo, em vez da solução exacta, ficamos a conhecer os valores aproximados, logo diz-se que o problema foi discretizado. O processo de discretização pode ser apresentado da seguinte forma: Seja I = [t 0,T] o intervalo de integração, vamos considerar uma sucessão de nós de discretização de I, tn = t0 + nh (n=0,1,..,N), com h>0, e N o máximo do inteiro tal que tn = T. Essa sucessão tn define subintervalos de I : In = [tn, tn+1]. Em geral, define-se ℎ = tn+1 - tn , e designa-se por tamanho do passo. No método em questão, assume-se que para uma pequena distância ∆t (=h) a partir de um ponto inicial t0, a função 𝑓(𝑡, 𝑦(𝑡)) é uma constante igual a 𝑓(𝑡0, 𝑦0). Ao admitirmos que 𝑓(𝑡, 𝑦(𝑡)) = 𝑓(𝑡0, 𝑦0) para todos os valores de t0 e t1= t0 + h, então a alteração ∆y em y corresponde à pequena alteração ∆t em t e é dada, aproximadamente, por: ∆𝑦 = 𝑓(𝑡0, 𝑦0) ∆𝑡 (2) Ao representarmos y1 por y0 + ∆y, da equação anterior resulta que: 𝑦(1) = 𝑦(0) + ℎ ∗ 𝑓(𝑡0, 𝑦0) (3) A condição inicial fornece os valores de t0 e y0, e então pode-se calcular o valor de y1 e todos os valores seguintes, ficando assim a solução geral segundo o método de Euler (progressivo): yi+1 = yi + h * f(ti,y(ti)) , i = 0,1..,N-1 (4) onde f(ti,yi) = y’(ti). Este método designa-se progressivo porque permite calcular yi+1 explicitamente a partir de yi. O processo de cálculo prossegue, intervalo a intervalo, a partir de t0, até um ponto final desejado. Mestrado Integrado em Engenharia Mecânica - 2013/14 1
  • 3. Relatório do Projecto - Matemática Computacional Neste trabalho recorremos ao software Matlab para a implementação deste método. 2. Algoritmos do método Para a implementação do método de Euler em MATLAB, utilizaram-se neste trabalho os algoritmos a seguir indicados. A1. Algoritmo para a entrada de dados: Ler l (tempo de análise) Ler h (tamanho do passo da malha) Ler ang(1) (condição inicial, valor inicial da posição angular) Ler vel(1) (condição inicial, valor inicial da velocidade angular (primeira derivada da posição angular(ang’ = vel) A2. Algoritmo para a implementação do método de Euler: Criar um vector t, com os diferentes valores de ti (ti = t0 + i*h). Ciclo de i = 1,2,., r -1 (Seja r o tamanho do vector t) angi+1 = angi + h * veli veli+1 = veli - p*h* angi Fim do ciclo A3. Algoritmo para o cálculo da solução exacta da equação diferencial dada no enunciado: Seja pos a solução exacta da posição angular e omega a solução exacta da velocidade angular. (A expressão da solução exacta foi calculada analiticamente). c = ang(1) m = 3.1704 d = vel(1)/m pos(1) = ang(1) omega(1) = vel(1) Ciclo de i=1,2,.., r-1 posi+1 = c*cos(m*ti+1) + d*sen(m*ti+1) omegai+1 = -m*c*sen(m*ti+1) + m*d* cos(m*ti+1) Fim do ciclo A4. Algoritmo para o cálculo do erro global de discretização (da posição e da velocidade angulares): Ciclo de i=1,2,.., k (Seja k o tamanho do vector pos) erroposi = |angi – posi| Fim do ciclo Ciclo de i=1,2,..,k (Seja k o tamanho do vector pos(igual ao tamanho do vector omega) erromegai = |veli – omegai| Fim do ciclo A5. Algoritmo para o cálculo do majorante do erro de truncatura para cada passo (da posição e velocidade angular): (Para implementar este algoritmo, resolvemos analiticamente a segunda e terceira derivada de pos) errotruncang1 = 0 Ciclo i = 1,2,.., r-1 ymaxi = máximo do módulo da função: -(3.1704^2)*c*cos(m*x) (3.1704^2)*d*sin(m*x)), para cada intervalo [ti,ti+1]. errotruncangi+1 = ((h)/2)* ymaxi Fim do ciclo Mestrado Integrado em Engenharia Mecânica - 2013/14 2
  • 4. Relatório do Projecto - Matemática Computacional Acima apenas está explicado o algoritmo para o caso da posição angular, pois o procedimento para a velocidade angular é idêntico. A6. Algoritmo para o cálculo dos períodos das ondas sinusoidais da velocidade e da posição angular (da solução exacta e da solução numérica) e para o cálculo do erro dos períodos: (Neste caso usou-se uma interpolação linear para calcular o período) indices = vector de zeros com tamanho g(tamanho do vector t) Ciclo de i=1,2,..,g se posi > 0 e posi+1 < 0 indicesi = 1 indicesi+1 = 1 fim fim do ciclo d = vector que guarda as posições onde o vector índices tem valor 1 (Interpolação linear :) ta = (-posd1/(posd2-posd1))*(td2-td1) + td1 ta2 = (-posd3/(posd4-posd3))*(td4-td3) + t(d3) periodopos = ta2 – ta O cálculo do resto dos períodos é idêntico a este, só difere nas variáveis. 3. Aspectos da implementação dos algoritmos Na implementação do algoritmo A1, o programa pede ao utilizador para introduzir as variáveis necessárias para se implementar o método em questão: o tempo de análise, o tamanho do passo da malha, o valor inicial da posição angular e da velocidade angular. O programa guarda estes dados respectivamente nas variáveis: l, h, ang(1) e vel(1). O algoritmo A2 é utilizado para implementar o método de Euler nas condições indicadas pelo utilizador. Usou-se um ciclo (for) que calcula a solução aproximada através do método de Euler progressivo da posição angular (ang) e da velocidade angular (vel) em função do tempo, em cada ponto ti. Note-se que o valor da posição e velocidade angular no instante incial (t0), são dados pelo utilizador e são respectivamente ang(1) e vel(1). No algoritmo A3, é calculada a solução analítica da equação diferencial de segundo grau dada no enunciado para cada ponto ti. Para tal usou-se também um ciclo (for) que calcula a solução exacta da posição (pos) e velocidade angular (omega) em cada ponto t i. Notese que o valor da posição e da velocidade angular t0 são inseridos pelo utilizador no algoritmo A1, pois trata-se de um problema de valor inicial. Assim, tem-se: ang(1)=pos(1) e vel(1)=omega(1). O algoritmo A4 é usado para calcular o erro global de discretização em cada ponto i. Para tal usámos dois ciclos: o primeiro calcula o erro em cada ponto i da posição angular, para tal calculamos o valor absoluto da subtracção do valor aproximado (ang) ao valor exacto (pos) em cada ponto. O segundo ciclo, procede da mesma maneira, mas para a velocidade angular, cujo valor aproximado é vel e o valor exacto é omega. No algoritmo A5 calcula-se o majorante do erro de truncatura para casa passo associado ao método de Euler na determinação da posição e velocidade angular. O erro de truncatura pode ser majorado da seguinte forma: Tn+1 = h*sup| 𝑓′(𝑡, 𝑦(𝑡))|, (usando a notação da secção 1), onde t está entre os valores ti e ti+1. Para calcularmos o supremo do módulo de Mestrado Integrado em Engenharia Mecânica - 2013/14 3
  • 5. Relatório do Projecto - Matemática Computacional 𝑓′(𝑡, 𝑦(𝑡)), recorremos a um ciclo no qual utilizámos a função fminbnd do MATLAB. (A função 𝑓′(𝑡, 𝑦(𝑡)) foi calculada analiticamente). O ciclo dá-nos o valor do majorante do erro de truncatura em cada ponto i, sendo que no ponto inicial, o erro de truncatura é zero, pois no ponto inicial ainda não tinha ocorrido nenhum passo do método de Euler. Para calcular o majorante do erro de truncatura para casa passo na determinação da velocidade angular procedeu-se da mesma forma, mas em vez de se utilizar sup| 𝑓′(𝑡, 𝑦(𝑡))|, usou-se sup| 𝑓′′(𝑡, 𝑦(𝑡))|. No algoritmo A6 calcula-se o período de cada onda sinusoidal da posição e velocidade angular, tanto para a solução exacta como para a solução analítica e calcula-se o respectivo erro efectivo dos períodos. No cálculo dos períodos, usou-se uma interpolação linear para calcular em que pontos t, o valor da posição e velocidade eram zero. Vamos só explicar o procedimento para o cálculo do período no caso da onda da posição angular exacta, pois os outros calculam-se através do mesmo procedimento. Para tal, criou-se um vector índices de zeros e de tamanho do vector t. De seguida criou-se um ciclo em que se pos(i) >0 e pos(i+1) <0 , então o vector indices nas posições i e i+1, fica com o valor 1. De seguida criou-se um vector d que encontra as posições i onde indices(i) = 1 (para tal utilizou-se a função find. Depois, recorremos a uma interpolação linear, pois o intervalo entre os pontos i e i+1 é tao pequeno (h) que se aceita esta aproximação. Como o vector d guarda as posições i e i+1, onde pos(i) > 0 e pos(i+1) < 0, então podemos aplicar uma interpolação linear utilizando esses pontos (pos(d(i))). Em anexo encontra-se explicada como se utilizou a interpolação linear. 4. Aplicação do método e discussão de resultados Para as aplicações de teste deste método considerámos vários valores inseridos pelo utilizador, de modo a mostrarmos como é feita a implementação do método e fazemos uma análise dos erros associados ao mesmo. Para tal, criámos um menu onde o utilizador pode escolher a opção Inserir condições iniciais. No papel do utilizador, no primeiro caso teste inserimos os seguintes dados: Tempo de análise – 5s, Intervalo de tempo – 0.01s, Ângulo inicial – pi/10 rad, Velocidade angular inicial – 0 rad/s. De seguida voltamos ao menu e escolhemos a segunda opção Calcular solução numérica pelo método de Euler progressivo. Esta opção implementa o método em questão e calcula a solução numérica para as condições indicadas inicialmente. Ao escolher a terceira opção obtemos os gráficos da posição e velocidade angular em função do tempo, tanto para a solução exacta como numérica: Mestrado Integrado em Engenharia Mecânica - 2013/14 4
  • 6. Relatório do Projecto - Matemática Computacional Figura 1 Gráficos da posição angular e velocidade angular em função do tempo Analisando os gráficos, podemos ver que o erro global aumenta ao longo do tempo como podemos confirmar analisando os gráficos a seguir, escolhendo a quarta opção do menu: Figura 2 Gráficos do erro global de discretização em função do tempo (escala logarítmica) Observamos que o erro global aumenta ao longo do tempo tanto para a posição angular como para a velocidade angular. No entanto, observa-se que existem certos pontos onde o erro decresce devido à onda da posição e da velocidade angular ser sinusoidal. De seguida, criámos um algoritmo para calcular o majorante do erro de truncatura em cada passo cometido pela aproximação associada ao método de Euler (para a posição e velocidade angular), o qual cria um gráfico do mesmo em função do tempo: Mestrado Integrado em Engenharia Mecânica - 2013/14 5
  • 7. Relatório do Projecto - Matemática Computacional Figura 3 Gráficos do majorante do erro de truncatura em função do tempo (escala logarítmica) Este erro dá-nos o erro cometido de passo em passo, ou seja, o erro cometido do ponto i para o ponto i+1. Observando os gráficos, podemos ver que o majorante do erro de truncatura tem um majorante para si mesmo, ou seja, o erro cometido de um passo para o seguinte nunca é maior do que um determinado valor. De seguida, calculamos os períodos da onda da posição e da velocidade angular (exactas e numéricas), usando uma interpolação linear, e calculamos o erro efectivo dos períodos, escolhendo a opção 8 seguida da 7, do menu. Ao fazermos isto, é nos apresentado no prompt do Matlab o seguinte: O período da onda da posição angular(solução exacta) é: 1.981827 s O período da onda da posição angular(solução numérica) é: 1.982507 s O período da onda da velocidade angular(solução exacta) é: 2.299054 s O período da onda da velocidade angular(solução numérica) é: 1.982506 s O erro efectivo do período da onda sinusoidal da posição angular entre a solução exacta e a numérica é: 0.000679 O erro efectivo do período da onda sinusoidal da velocidade angular entre a solução exacta e a numérica é: 0.316548 Para fazermos uma melhor análise do método de Euler e do erro associado ao mesmo, considerámos um exemplo de teste em que as condições iniciais são iguais, à excepção do Intervalo de tempo que em vez de ser 0.01s é 0.0001s, ou seja, o passo efectuado do ponto i para o i+1 é igual a 0.0001 (que corresponde ao h na equação (4) da secção 1). Efectuámos o mesmo procedimento do teste anterior, e obtivemos os seguintes resultados: Mestrado Integrado em Engenharia Mecânica - 2013/14 6
  • 8. Relatório do Projecto - Matemática Computacional Figura 4 Gráficos da posição angular e velocidade angular em função do tempo Como podemos ver ao observar estes gráficos, a solução numérica e a exacta quase que coincidem em todos os pontos. Comparando com o exemplo anterior, concluímos que ao considerar um h (tamanho do passo) menor, o erro global e de truncatura também diminuem. Assim, quando o h tende para zero, o erro associado ao método de Euler também tende para zero, como podemos observar pelos seguintes gráficos: Figura 5 Gráficos do erro global de discretização em função do tempo (escala logarítmica) Mestrado Integrado em Engenharia Mecânica - 2013/14 7
  • 9. Relatório do Projecto - Matemática Computacional Figura 6 Gráficos do majorante do erro de truncatura em função do tempo (escala logarítmica) Calculando os períodos e o erro efectivo como foi feito no primeiro exemplo obtemos o seguinte: O período da onda da posição angular(solução exacta) é: 1.981827 s O período da onda da posição angular(solução numérica) é: 1.981843 s O período da onda da velocidade angular(solução exacta) é: 2.297272 s O período da onda da velocidade angular(solução numérica) é: 1.981843 s O erro efectivo do período da onda sinusoidal da posição angular entre a solução exacta e a numérica é: 0.000015 O erro efectivo do período da onda sinusoidal da velocidade angular entre a solução exacta e a numérica é: 0.315430 Como podemos ver também o erro efectivo dos períodos é menor, como seria esperado. Assim, podemos concluir que o método de Euler é tão mais eficaz quanto menor for a variável h. No entanto, para valores muito pequenos de h, o esforço computacional aumenta, diminuindo assim a eficiência desejada na aplicação destes métodos. Um método numérico diz-se convergente se o erro global de discretização tender para zero se o incremento de tempo (h) utilizado tender para zero. Podemos concluir analisando os gráficos atrás apresentados que o erro global tende para zero quando h tende para zero, assim, o método de Euler diz-se convergente. 5. Referências [1] Pina, H., “Métodos Numéricos”, Escolar Editora, 2010. [2] M. Teresa Diogo, Murilo Tomé. “Matemática Computacional- Notas de Aulas”, secção de folhas do IST, IST, 2009. Mestrado Integrado em Engenharia Mecânica - 2013/14 8
  • 10. Relatório do Projecto - Matemática Computacional [3] Mário Rosa, “Tópicos de análise numérica- métodos numéricos”, Departamento de matemática, Universidade de Coimbra, 1992 Nota: Para a melhor visualização dos gráficos apresentados ao longo do documento, foi necessário o incremento de número de páginas do relatório. Anexo A - Como utilizar o programa Para o utilizador utilizar o programa desenvolvido por nós, basta escrever “eulermenu” no prompt do MatLab. Assim, aparece um menu com várias opções. A primeira opção, “Inserir condições iniciais”, permite ao utilizador inserir os valores das condições iniciais do problema em questão. A segunda opção, “Calcular solução numérica pelo método de Euler progressivo”, calcula a solução aproximada da posição e velocidade angular pelo método de Euler. A terceira opção, “Gráficos da posição e velocidade angular em função do tempo (exactas e aproximadas)”, cria dois gráficos: o primeiro relaciona a posição angular com o tempo de análise, tanto a solução exacta como a solução numérica; o segundo relaciona da mesma forma a velocidade angular com o tempo. A quarta opção, “Gráficos do erro global de discretização em função do tempo”, cria dois gráficos, relacionando o erro global de discretização como tempo, para a posição e velocidade angular. A quinta opção do menu, “Gráficos da posição e velocidade angular (exactas) com barras de erro de discretização global”, cria dois gráficos: um da posição angular (exacta) em função do tempo com as barras de erro global de discretização em cada ponto; o segundo, procede da mesma maneira para a velocidade angular. A sexta opção, “Gráficos do majorante do erro de truncatura em função do tempo”, cria também dois gráficos que relacionam o majorante do erro de truncatura com o tempo, para a posição e velocidade angular. A sétima opção, “Calcular os períodos das ondas da posição e velocidade angular (exactas e aproximadas)”, calcula os períodos das ondas da posição e velocidade angular, exactas e aproximadas, e escreve no prompt do MatLab os respectivos valores. Por fim, a oitava opção, “Calcular o erro efectivo dos períodos”, calcula o erro efectivo associado aos períodos das ondas sinusoidais da posição e velocidade angular, exactas aproximadas, escrevendo no prompt os respectivos valores. Anexo B – Listagem do código em MatLab %Menu para a implementação dos algoritmos choice = menu('Método de Euler Progressivo','Inserir condições iniciais','Calcular solução numérica pelo método de Euler progressivo','Gráficos da posição e velocidade angular em função do tempo(exactas e aproximadas)','Gráficos do erro global de discretização em função do tempo','Gráficos da posição e velocidade angular (exactas) com barras de erro de discretização global','Gráfico do majorante do erro de truncatura em função do tempo','Calcular os períodos das ondas da posição e velocidade angular (exactas e aproximadas)','Calcular o erro efectivo dos períodos','Sair'); switch choice case 1 lerdados eulermenu case 2 euler eulermen case 3 sol eulermenu case 4 erroglobal eulermenu Mestrado Integrado em Engenharia Mecânica - 2013/14 9
  • 11. Relatório do Projecto - Matemática Computacional case 5 erro eulermenu case 6 errotruncatura eulermenu case 7 periodosposicao periodovelocidade eulermenu case 8 erroefectivo eulermenu case 9 end %------------------------------------------------------------------------%------------------------A1: Ler dados-------------------------------%------------------------------------------------------------------------clear; clc; l = input('Tempo de análise(ex: 10) : '); h = input ('Intervalo de tempo(ex: 0.001) : '); ang = size(l); vel = size(l); ang(1) = input('Ângulo inicial(ex: pi/10) : '); vel(1) = input('Velocidade inicial(ex: 0) : '); g = 9.8; R = 0.75; r = 0.10; p = g/((3/2)*(R-r)); %-------------------------------------------------------------------------%------------A2: Implementação do método de Euler progressivo %-------------------------------------------------------------------------t = 0:h:l; for i = 1:(length(t)-1) ang(i+1) = ang(i) + vel(i)*h; vel(i+1) = vel(i) - p*h*ang(i); end; %--------------------------------------------------------------------------------------%------A3 Solução analítica da equação diferencial dada no enunciado----%--------------------------------------------------------------------------------------omega = size(l); pos = size(l); pos(1) = ang(1); omega(1) = vel(1); c = ang(1); m = 3.1704; d = vel(1)/(m); for i = 1:(length(t)-1) pos(i+1) = c*cos(m*t(i+1)) + d*sin(m*t(i+1)); omega(i+1) = -m*c*sin(m*t(i+1)) + m*d*cos(m*t(i+1)); end %----------------------------------------------------------------------------------------%------- Gráficos das soluções exactas e aproximadas (posição angular------%-------e velocidade angular) em função do tempo------------------------------%----------------------------------------------------------------------------------------figure(1) subplot(1,2,1), plot(t,ang,'b',t,pos,'r--'); title('Posição Angular em função do tempo') xlabel('Tempo,s') ylabel('Deslocamento Angular, rad') Mestrado Integrado em Engenharia Mecânica - 2013/14 10
  • 12. Relatório do Projecto - Matemática Computacional grid legend ('Solução aproximada','Solução exacta') subplot(1,2,2), plot(t,vel,'b',t,omega,'r--'); title('Velocidade Angular em função do tempo') xlabel('Tempo,s') ylabel('Velocidade Angular, rad/s') grid legend ('Solução aproximada','Solução exacta') %-------------------------------------------------------------------------%----------A4 Erro global de discretização da posição angular--%-------------------------------------------------------------------------erropos = size(pos); for i=1:length(pos) erropos(i) = abs(ang(i)-pos(i)); end %---------------------------------------------------------------------------%----------A4 Erro global de discretização da velocidade angular%---------------------------------------------------------------------------erromega = size(omega); for i=1:length(omega) erromega(i) = abs(vel(i)-omega(i)); end %-------------------------------------------------------------------------%---------Gráficos do erro global de discretização (posição-----%---------e velocidade angular) em função do tempo-------------%-------------------------------------------------------------------------figure(2) subplot(1,2,1), loglog(t,erropos,'r'); title('Erro global de discretização da posição angular em função do tempo') xlabel('Tempo,s') ylabel('Erro') grid subplot(1,2,2), loglog(t,erromega,'r'); title('Erro global de discretização da velocidade angular em função do tempo') xlabel('Tempo,s') ylabel('Erro') grid %-------------------------------------------------------------------------%--------Gráficos da posição e velocidade angular (exactas)----%-------em função do tempo com barras de erro (erro de--------%--------------discretização global)-----------------------------------%-------------------------------------------------------------------------figure(3) subplot(1,2,1), errorbar(t,pos,erropos); title('Gráfico da posição angular (exacta) com barras de erro (erro de disctretização global)') xlabel('Tempo,s') ylabel('Posição angular, rad') subplot(1,2,2), errorbar(t,omega,erromega); title('Gráfico da velocidade angular (exacta) com barras de erro (erro de disctretização global)') xlabel('Tempo,s') ylabel('Velocidade angular, rad') %-------------------------------------------------------------------------------------%------A5 Majorante do erro de truncatura (posição angular)---------------%-------------------------------------------------------------------------------------errotruncang(1) = 0; for i = 1:(length(t) - 1) [xmax(i) ymax(i)] = fminbnd(@(x) -abs(-(m^2)*c*cos(m*x) - (m^2)*d*sin(m*x)),t(i),t(i+1)); ymax = abs([ymax]); errotruncang(i+1) = ((h)/2)*ymax(i) ; end %--------------------------------------------------------------------------------------%------A5 Majorante do erro de truncatura (velocidade angular)------------%--------------------------------------------------------------------------------------errotruncvel(1) = 0; Mestrado Integrado em Engenharia Mecânica - 2013/14 11
  • 13. Relatório do Projecto - Matemática Computacional for i = 1:(length(t)-1) [x1max(i) y1max(i)] = fminbnd(@(x) -abs((m^3)*c*sin(m*x) - (m^3)*d*cos(m*x)),t(i),t(i+1)); y1max = abs([y1max]); errotruncvel(i+1) = ((h)/2) * y1max(i) ; end %-----------------------------------------------------------------------------------------%-------Gráficos do majorante do erro de truncatura em função do tempo----%--------------(posição e velocidade angular)-----------------------------%-------------------------------------------------------------------------------figure(4) subplot(1,2,1), loglog(t,errotruncang,'r'); title('Majorante do erro de truncatura em cada passo da posição angular em função do tempo') xlabel('Tempo,s') ylabel('Majorante do erro de truncatura') grid subplot(1,2,2), loglog(t,errotruncvel,'r'); title('Majorante do erro de truncatura em cada passo da velocidade angular em função do tempo') xlabel('Tempo,s') ylabel('Majorante do erro de truncatura') grid %----------------------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da posição angular-------%----------------------(solução exacta)----------------------------------------------%----------------------------------------------------------------------------------------indices = zeros(1,length(t)); for i = 1:(length(t)-1) if pos(i) > 0 && pos(i+1)<0 indices(i) = 1; indices (i+1) =1; end end [d] = find(indices == 1); ta = (-pos(d(1)))/(pos(d(2))-pos(d(1)))*(t(d(2))-t(d(1))) + t(d(1)) ; ta2 = (-pos(d(3)))/(pos(d(4))-pos(d(3)))*(t(d(4))-t(d(3))) + t(d(3)) ; periodopos = ta2 - ta; fprintf('O período da onda da posição angular(solução exacta) é: %f s n',periodopos); %----------------------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da posição angular-------%----------------------(solução numérica)------------------------------------------%----------------------------------------------------------------------------------------indices1 = zeros(1,length(t)); for i = 1:(length(t)-1) if ang(i) > 0 && ang(i+1) < 0 indices1(i) = 1; indices1(i+1) =1; end end [g] = find(indices1 == 1); z0 = (-ang(g(1)))/(ang(g(2))-ang(g(1)))*(t(g(2))-t(g(1))) + t(g(1)) ; z1 = (-ang(g(3)))/(ang(g(4))-ang(g(3)))*(t(g(4))-t(g(3))) + t(g(3)) ; periodoang = z1 - z0; fprintf('O período da onda da posição angular(solução numérica) é: %f s n',periodoang) %----------------------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da velocidade angular----%----------------------(solução exacta)-----------------------------------------------%-----------------------------------------------------------------------------------------ind = zeros(1,length(t)); for i = 1:(length(t)-1) Mestrado Integrado em Engenharia Mecânica - 2013/14 12
  • 14. Relatório do Projecto - Matemática Computacional if omega(i) > 0 && omega(i+1) < 0 ind(i) = 1; ind(i+1) = 1; end end [u] = find(ind == 1); p0 = (-omega(d(1)))/(omega(u(2))-omega(u(1)))*(t(u(2))-t(u(1))) + t(u(1)) ; p1 = (-omega(u(3)))/(omega(u(4))-omega(u(3)))*(t(u(4))-t(u(3))) + t(u(3)) ; periodomega = p1 - p0; fprintf('O período da onda da velocidade angular(solução exacta) é: %f s n',periodomega); %-------------------------------------------------------------------------%-------A6 Cáclulo do período da onda sinusoidal da velocidade angular----%----------------------(solução numérica)---------------------------------%-------------------------------------------------------------------------ind1 = zeros(1,length(t)); for i = 1:(length(t)-1) if vel(i) > 0 && vel(i+1) < 0 ind1(i) = 1; ind1(i+1) = 1; end end [w] = find(ind1 == 1); v0 = (-vel(w(1)))/(vel(w(2))-vel(w(1)))*(t(w(2))-t(w(1))) + t(w(1)) ; v1 = (-vel(w(3)))/(vel(w(4))-vel(w(3)))*(t(w(4))-t(w(3))) + t(w(3)) ; periodovel = v1 - v0; fprintf('O período da onda da velocidade angular(solução numérica) é: %f s n',periodovel); %----------------------------------------------------------------------------------%----------------Erro efectivo do período (posição angular)---------------%----------------------------------------------------------------------------------erroperiodopos = abs(periodoang - periodopos); fprintf('O erro efectivo do período da onda sinusoidal da posição angular entre a solução exacta e a numérica é: %f n',erroperiodopos); %-----------------------------------------------------------------------------------%----------------Erro efectivo do período (velocidade angular)------------%-----------------------------------------------------------------------------------erroperiodomega = abs(periodovel -periodomega); fprintf('O erro efectivo do período da onda sinusoidal da velocidade angular entre a solução exacta e a numérica é: %f n',erroperiodomega); Anexo C – soluções analíticas Para a implementação do algoritmo A2, calculamos a solução analítica da equação diferencial dada no enunciado. Assim, a solução para a posição angular é: pos(t) = c*cos(m*t) + d*sin(m*t) (em função de t), sendo m=3.1704 (constante), c=ang(1) e d= vel(1)/m.; para a velocidade angular: omega(t) = -m*c*sin(m*t) + m*d*cos(m*t). Tanto ang(1) como vel(1) são condições iniciais indicadas pelo utilizador. Na implementação do algoritmo A5 resolvemos também analiticamente a segunda e terceira derivada de pos. Sendo que pos’’(t) = -(m^2)*c*cos(m*t) - (m^2)*d*sin(m*t) e pos’’’(t) = (m^3)*c*sin(m*t) - (m^3)*d*cos(m*t). Note-se que c, d e m são os mesmo que são usados no algoritmo A2. Anexo D – Interpolação linear Mestrado Integrado em Engenharia Mecânica - 2013/14 13
  • 15. Relatório do Projecto - Matemática Computacional Na implementação do algoritmo A6, utilizámos uma interpolação linear para calcularmos os períodos. Usámos este método, pois o intervalo entre os pontos i e i+1, é tão pequeno que o erro associado à interpolação linear é aceitável para o nosso propósito. A interpolação linear pode definir-se assim: 𝑦𝑎−𝑦1 𝑦2−𝑦1 = 𝑡𝑎−𝑡1 𝑡2−𝑡1 , sendo ya e ta os pontos entre y1 e y2, e t1 e t2, respectivamente. Assim, queremos o ponto ta para o qual ya é igual a zero. Utilizando este método, conseguimos calcular os períodos Mestrado Integrado em Engenharia Mecânica - 2013/14 14