Q6) O deslocamento máximo
de um edifício sujeito a terremoto satisfaz:
onde:
- Reorganize a equação como
.
- Use o Método da Bisseção em
.
- Verifique a condição de Bolzano.
- Implemente em MATLAB.
Passo 1
O enunciado dá a relação do deslocamento máximo
do edifício:
e fornece os valores numéricos:
As tarefas pedidas são:
- Reorganizar a equação como
. - Aplicar o Método da Bisseção no intervalo
. - Verificar a condição de Bolzano (ou seja, checar sinais opostos nas extremidades do intervalo).
- Implementar o método em MATLAB.
Passo 2
Reorganizar a equação para obter
.
Começo isolando tudo em um lado:
Defino a constante
Substituindo:
Podemos reescrever
na forma linear
Agora calculo numericamente
com os valores dados:
Logo numericamente
Observação amiga: como
é linear nessa forma, existe uma solução explícita
que será útil para checar o resultado do bisseção. Mas como foi pedido, vamos aplicar o Método da Bisseção no intervalo dado.
Passo 3
Explicando o Método da Bisseção (passo a passo e por que funciona).
- Ideia: se uma função contínua
tem sinais opostos em e (isto é, ), então existe pelo menos uma raiz em . Isso é o Teorema de Bolzano. - O método da bisseção usa esse fato: calcula
. Se terminou; se tem mesmo sinal que , substitui ; caso contrário . Repetir até que o intervalo fique pequeno o suficiente. - Critério de parada típico: largura do intervalo menor que uma tolerância
(por exemplo ) ou menor que . - Vantagem: simples e garantido (desde que a função seja contínua e haja mudança de sinal).
- No nosso caso
é linear e contínua, então a hipótese de Bolzano é a única que precisamos checar para garantir raiz única no intervalo.
Passo 4
Verificação da condição de Bolzano no intervalo
.
Calculo
e
usando a forma
.
- Para
:
logo
.
- Para
:
Usando
e
:
Então
Como
e
, temos
. Portanto a condição de Bolzano é satisfeita — existe pelo menos uma raiz em
. (Como
é linear, essa raiz é única.)
Passo 5
Aplicando o Método da Bisseção (iterações demonstrativas e convergência).
Vou usar critério de parada
(tolerância para a largura do intervalo). Começamos com
e
. A cada iteração
e avalio
; atualizo o intervalo segundo o sinal.
Mostro as primeiras iterações para você ver o processo (valores aproximados, 6 casas decimais):
-
Iteração 1:Sinal de
é positivo, e é negativo, logo substituo . Novo intervalo . -
Iteração 2:Sinal positivo, substituo
. Novo intervalo . -
Iteração 3:Agora
é negativo, como era positivo, substituo . Novo intervalo . -
Iteração 4:Mantém
. Novo intervalo . -
Iteração 5:Substituo
. Novo intervalo . -
Iteração 6:Substituo
. Novo intervalo .
Se seguir repetindo o processo, a cada iteração o intervalo diminui pela metade. Para reduzir a largura inicial
até ficar menor que
são necessárias cerca de
iterações com
Portanto com aproximadamente 20 iterações atingimos a tolerância.
Ao executar o procedimento (ou usando o resultado analítico para checagem), obtém-se a raiz
Como verificação rápida, a solução analítica da equação linear é
com
calculado anteriormente; substituindo numéricamente dá o mesmo valor
.
Passo 6
Implementação em MATLAB (script simples do Método da Bisseção). Copie e cole num arquivo, por exemplo
bissecao_deslocamento.m.% bissecao_deslocamento.m
% Método da Bisseção para encontrar o deslocamento d
% Dados
Sa = 0.35;
g = 9.81;
omega = 5.2;
mu = 1.8;
% Função f(d) = d - A*(1 + mu*d)
A = (Sa*g)/(omega^2);
f = @(d) d - A*(1 + mu*d);
% Intervalo inicial
a = 0.0;
b = 0.8;
% Verifica condição de Bolzano
if f(a)*f(b) > 0
error('Condicao de Bolzano nao satisfeita no intervalo dado.');
end
% Parâmetros do método
tol = 1e-6;
maxIter = 100;
% Bisseção
for k = 1:maxIter
c = (a + b)/2;
fc = f\text{(c)};
% critério de parada pela largura do intervalo
if (b - a)/2 < tol || abs(fc) < tol
break;
end
if f(a)*fc < 0
b = c;
else
a = c;
end
end
fprintf('Raiz aproximada d = %.10f m (após %d iteracoes)\n', c, k);
fprintf('f(d) = %.10e\n', fc);
Comentários sobre o código:
- O código verifica a condição de Bolzano antes de iniciar.
- Usa critério de parada baseado na metade da largura do intervalo
e também em . - Com
o código tipicamente converge em cerca de 20 iterações para este problema.