Q6) O deslocamento máximo d de um edifício sujeito a terremoto satisfaz:
d=\frac{S_{a} g}{\omega^{2}}(1+\mu d)
onde:
S_{a}=0.35, \quad g=9.81 \mathrm{~m} / \mathrm{s}^{2}, \quad \omega=5.2 \mathrm{rad} / \mathrm{s}, \quad \mu=1.8 \mathrm{~m}^{-1} .
  • Reorganize a equação como f(d)=0.
  • Use o Método da Bisseção em d \in[0,0.8].
  • Verifique a condição de Bolzano.
  • Implemente em MATLAB.

Passo 1

O enunciado dá a relação do deslocamento máximo d do edifício:
d=\frac{S_{a}\,g}{\omega^{2}}(1+\mu d)
e fornece os valores numéricos:
S_{a}=0,35,\quad g=9,81\\ \mathrm{m/s^{2}},\quad \omega=5,2\\ \mathrm{rad/s},\quad \mu=1,8\\ \mathrm{m^{-1}}.
As tarefas pedidas são:
  • Reorganizar a equação como f(d)=0.
  • Aplicar o Método da Bisseção no intervalo d\in[0,0,8].
  • 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 f(d)=0.
Começo isolando tudo em um lado:
d-\frac{S_{a}\,g}{\omega^{2}}(1+\mu d)=0.
Defino a constante
A=\frac{S_{a}\,g}{\omega^{2}}.
Substituindo:
f(d)=d-A(1+\mu d).
Podemos reescrever f(d) na forma linear
f(d)=(1-A\mu)\,d-A.
Agora calculo numericamente A com os valores dados:
A=\frac{0,35\cdot 9,81}{5,2^{2}}=\frac{3,4335}{27,04}\approx 0,126959.
Logo numericamente
f(d)\approx(1-0,126959\cdot 1,8)\,d-0,126959\approx 0,771474\,d-0,126959.
Observação amiga: como f(d) é linear nessa forma, existe uma solução explícita
d=\frac{A}{1-A\mu},
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 f tem sinais opostos em a e b (isto é, f(a)\cdot f(b)<0), então existe pelo menos uma raiz em (a,b). Isso é o Teorema de Bolzano.
  • O método da bisseção usa esse fato: calcula c=(a+b)/2. Se f\text{(c)}=0 terminou; se f\text{(c)} tem mesmo sinal que f(a), substitui a\leftarrow c; caso contrário b\leftarrow c. Repetir até que o intervalo [a,b] fique pequeno o suficiente.
  • Critério de parada típico: largura do intervalo menor que uma tolerância \mathrm{tol} (por exemplo \mathrm{tol}=10^{-6}) ou |f\text{(c)}| menor que \mathrm{tol}.
  • Vantagem: simples e garantido (desde que a função seja contínua e haja mudança de sinal).
  • No nosso caso f é 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 [0,0,8].
Calculo f(0) e f(0,8) usando a forma f(d)=d-A(1+\mu d).
  • Para d=0:
f(0)=0-A(1+\mu\cdot 0)=-A\approx -0,126959,
logo f(0)<0.
  • Para d=0,8:
f(0,8)=0{,}8-A(1+\mu\cdot 0{,}8).
Usando A\approx 0,126959 e \mu=1,8:
1+\mu\cdot 0{,}8=1+1{,}8\cdot 0{,}8=1+1{,}44=2{,}44,
A(1+\mu\cdot 0{,}8)\approx 0{,}126959\cdot 2{,}44\approx 0{,}309\;(\text{aprox. }0{,}309412).
Então
f(0,8)\approx 0{,}8-0{,}309412\approx 0{,}490588>0.
Como f(0)\approx -0,126959 e f(0,8)\approx 0,490588, temos f(0)\cdot f(0,8)<0. Portanto a condição de Bolzano é satisfeita — existe pelo menos uma raiz em [0,0,8]. (Como f é 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 \mathrm{tol}=10^{-6} (tolerância para a largura do intervalo). Começamos com a_{0}=0 e b_{0}=0{,}8. A cada iteração c_{k}=(a_{k}+b_{k})/2 e avalio f(c_{k}); atualizo o intervalo segundo o sinal.
Mostro as primeiras iterações para você ver o processo (valores aproximados, 6 casas decimais):
  • Iteração 1: a=0{,}000000,\\ b=0{,}800000,\\ c=0{,}400000.
    f\text{(c)}=0{,}771474\cdot 0{,}4-0{,}126959\approx 0{,}176880>0.
    Sinal de f\text{(c)} é positivo, e f(a) é negativo, logo substituo b\leftarrow c. Novo intervalo [0,0{,}4].
  • Iteração 2: a=0{,}000000,\\ b=0{,}400000,\\ c=0{,}200000.
    f\text{(c)}=0{,}771474\cdot 0{,}2-0{,}126959\approx 0{,}026936>0.
    Sinal positivo, substituo b\leftarrow c. Novo intervalo [0,0{,}2].
  • Iteração 3: a=0{,}000000,\\ b=0{,}200000,\\ c=0{,}100000.
    f\text{(c)}=0{,}771474\cdot 0{,}1-0{,}126959\approx -0{,}049811<0.
    Agora f\text{(c)} é negativo, como f(b) era positivo, substituo a\leftarrow c. Novo intervalo [0{,}1,0{,}2].
  • Iteração 4: a=0{,}100000,\\ b=0{,}200000,\\ c=0{,}150000.
    f\text{(c)}=0{,}771474\cdot 0{,}15-0{,}126959\approx -0{,}011438<0.
    Mantém a\leftarrow c. Novo intervalo [0{,}15,0{,}2].
  • Iteração 5: a=0{,}150000,\\ b=0{,}200000,\\ c=0{,}175000.
    f\text{(c)}=0{,}771474\cdot 0{,}175-0{,}126959\approx 0{,}007840>0.
    Substituo b\leftarrow c. Novo intervalo [0{,}15,0{,}175].
  • Iteração 6: a=0{,}150000,\\ b=0{,}175000,\\ c=0{,}162500.
    f\text{(c)}=0{,}771474\cdot 0{,}1625-0{,}126959\approx -0{,}001873<0.
    Substituo a\leftarrow c. Novo intervalo [0{,}1625,0{,}175].
Se seguir repetindo o processo, a cada iteração o intervalo diminui pela metade. Para reduzir a largura inicial 0{,}8 até ficar menor que 10^{-6} são necessárias cerca de N iterações com
\frac{0{,}8}{2^{N}}<10^{-6}\quad\Rightarrow\quad N>\log_{2}\!\left(\frac{0{,}8}{10^{-6}}\right)\approx 20.
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
d\approx 0{,}1646\\ \mathrm{m}.
Como verificação rápida, a solução analítica da equação linear é
d=\frac{A}{1-A\mu},
com A calculado anteriormente; substituindo numéricamente dá o mesmo valor d\approx 0{,}1646\\ \mathrm{m}.

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 (b-a)/2 e também em |f\text{(c)}|.
  • Com \mathrm{tol}=10^{-6} o código tipicamente converge em cerca de 20 iterações para este problema.

Resposta

d \approx 0,1646\\ \mathrm{m}

Exercícios relacionados