x(t)=x_{0} e^{-\zeta \omega_{n} t} \cos \left(\omega_{d} t\right), \quad \zeta=0,02, \omega_{n}=100
  1. Calcule x(10) em precisão simples e dupla.
  2. Compare os resultados e discuta a perda de precisão.

Passo 1

O enunciado dá a função
x(t)=x_{0} e^{-\zeta \omega_{n} t} \cos\!\big(\omega_{d} t\big),
com \zeta=0,02 e \omega_{n}=100. Pede-se:
  1. Calcular x(10) em precisão simples e em precisão dupla.
  2. Comparar os resultados e discutir a perda de precisão.
Informações relevantes dadas:
\zeta=0,02,\qquad \omega_{n}=100,\qquad t=10.
Observação importante: o enunciado não informa um valor numérico para x_{0}. Vou apresentar o resultado em função de x_{0}, ou seja vou calcular o fator multiplicativo x(10)/x_{0}. Assim, se você tiver um x_{0} específico, multiplica-se o fator por x_{0}.

Passo 2

Primeiro precisamos da frequência amortecida \omega_{d}. A fórmula é
\omega_{d}=\omega_{n}\sqrt{1-\zeta^{2}}.
Explicando: \omega_{n} é a frequência natural (sem amortecimento) e \omega_{d} é a frequência do oscilador quando existe amortecimento leve; a relação vem da solução da equação diferencial do oscilador amortecido.
Calculemos numericamente \omega_{d}:
\zeta^{2}=(0,02)^{2}=0,0004,
1-\zeta^{2}=1-0,0004=0,9996,
\sqrt{1-\zeta^{2}}=\sqrt{0,9996}\approx 0,99979998,
\omega_{d}=100\cdot 0,99979998\approx 99,979998.

Passo 3

Agora o fator exponencial e^{-\zeta\omega_{n}t}. Calculemos o expoente:
\zeta\omega_{n}t = 0,02\cdot 100\cdot 10 = 20.
Logo
e^{-\zeta\omega_{n}t}=e^{-20}.
Uma boa aproximação conhecida (e usada em cálculos numéricos) é
e^{-20}\approx 2{,}061153622438558\times 10^{-9}.
Comentário didático: este número é muito pequeno (da ordem de 10^{-9}), portanto o termo exponencial reduz muito a amplitude. Em aritmética de ponto flutuante devemos ficar atentos a underflow quando o expoente for bem maior, mas aqui ainda estamos longe do underflow em float32/float64.

Passo 4

Precisamos do argumento do cosseno \omega_{d}t e então do \cos(\omega_{d}t). Calcule:
\omega_{d}t \approx 99{,}979998\cdot 10 = 999{,}79998.
Para calcular \cos de um ângulo grande é prática padrão reduzir o ângulo módulo 2\pi (porque \cos é 2\pi-periódica). Fazemos:
2\pi\approx 6{,}283185307179586,
o quociente inteiro k=\lfloor 999{,}79998/(2\pi)\rfloor = 159,
k\cdot 2\pi \approx 159\cdot 6{,}283185307179586 \approx 999{,}0264638399544,
resto (o ângulo reduzido)
r=\omega_{d}t - k\cdot 2\pi \approx 999{,}79998 - 999{,}0264638399544 \approx 0{,}7735161600456.
Agora computamos \cos(r). Posso avaliar \cos(r) por desenvolvimento em série (bom para r pequeno) ou por aproximação numérica direta. Usando a expansão de Taylor até termos suficientes:
\cos r \approx 1-\frac{r^{2}}{2}+\frac{r^{4}}{24}-\frac{r^{6}}{720}.
Calculemos os termos (apenas com a precisão necessária):
r\approx 0{,}7735161600456,\qquad r^{2}\approx 0{,}59832536,
\frac{r^{2}}{2}\approx 0{,}29916268,\qquad \frac{r^{4}}{24}\approx 0{,}01491629,\qquad \frac{r^{6}}{720}\approx 0{,}00029743.
Somando,
\cos r \approx 1 - 0{,}29916268 + 0{,}01491629 - 0{,}00029743 \approx 0{,}71545618.
Portanto
\cos(\omega_{d}t)\approx 0{,}71545618.
Comentário didático: reduzir o argumento módulo 2\pi evita subtrações grandes que poderiam causar cancelamento numérico; é uma operação padrão em bibliotecas trigonométricas.

Passo 5

Agora juntamos exponencial e cosseno para obter o fator x(10)/x_{0}:
\frac{x(10)}{x_{0}} = e^{-20}\cdot \cos(\omega_{d}t).
Usando os valores numéricos obtidos:
\frac{x(10)}{x_{0}}\approx (2{,}061153622438558\times 10^{-9})\cdot 0{,}71545618 \approx 1{,}474094420\times 10^{-9}.
Isto é o resultado em precisão “teórica” alta (vamos chamar isto de referência — o que se obtém com precisão dupla bem executada). Em notação mais curta:
x(10)\approx x_{0}\cdot 1{,}474094420\times 10^{-9}\quad\text{(precisão dupla / referência)}.ãê

Passo 6

Agora simulamos o cálculo em precisão simples (float32). Conceitos rápidos: precisão simples tem cerca de 24 bits de mantissa ≈ 7{,}2 dígitos decimais de precisão; a unidade de arredondamento típica (machine epsilon) é \varepsilon_{\text{single}}\approx 1{,}19\times 10^{-7}. Em precisão dupla temos \varepsilon_{\text{double}}\approx 2{,}22\times 10^{-16}.
Para simular float32, arredondamos valores críticos a ~7 dígitos significativos ao fazer operações:
  • e^{-20} em float32 é normalmente representado como \approx 2{,}0611536\times 10^{-9} (arredondado).
  • \omega_{d} calculado com ordenação simples dá \approx 99{,}979998, que em float32 será algo como 99{,}97999 (7 dígitos significativos).
  • Seguindo o mesmo passo de redução de ângulo e avaliação do cosseno com precisão simples obtemos um valor de \cos(\omega_{d}t) arredondado para cerca de 0{,}7154561.
Multiplicando com arredondamentos de precisão simples:
\frac{x(10)}{x_{0}}\Big|_{\text{single}}\approx (2{,}0611536\times 10^{-9})\cdot 0{,}7154561 \approx 1{,}474094\times 10^{-9}.
Note que o valor em precisão simples difere do valor em precisão dupla apenas nas casas decimais mais fracas.

Passo 7

Comparação e discussão da perda de precisão.
Números obtidos:
\text{precisão dupla (referência): }\frac{x(10)}{x_{0}}\approx 1{,}474094420\times 10^{-9},ãê
\text{precisão simples: }\frac{x(10)}{x_{0}}\approx 1{,}474094000\times 10^{-9}.ã
Diferença absoluta aproximada:
\Delta \approx 4{,}20\times 10^{-16}.
Diferença relativa aproximada:
\frac{\Delta}{1{,}47409442\times 10^{-9}}\approx 2{,}8\times 10^{-7},
que está na mesma ordem de grandeza do \varepsilon_{\text{single}} (ou um pequeno múltiplo dele). Interpretação prática: a perda de precisão ao passar de dupla para simples neste problema é pequena (relativa ~a algumas unidades de 10^{-7}), ou seja, os resultados em simples e dupla concordam até cerca de 6–7 casas decimais significativas do resultado final.
Por que a perda é pequena aqui?
  • O fator exponencial e^{-20} é pequeno, mas não tão pequeno para causar underflow em float32.
  • O argumento do cosseno \omega_{d}t\approx 999{,}8 não é tão grande ao ponto de tornar a redução modular \bmod 2\pi numericamente problemática; o número de períodos subtraídos ( k=159) é moderado, de modo que a parte fracionária do ângulo (que determina o cosseno) permanece bem determinada tanto em single quanto em double.
  • Não houve subtração de números muito próximos que gerasse cancelamento significativo em etapas intermediárias sensíveis.
Quando haveria perda séria de precisão?
  • Se \omega_{d}t fosse muito grande (por exemplo, da ordem de 10^{6} ou maior), a redução módulo 2\pi pode perder precisão em float32 (porque é preciso representar com muita precisão a parte inteira do quociente), levando a erro grande na fase e, portanto, em \cos.
  • Se o expoente \zeta\omega_{n}t fosse muito maior, o e^{-\text{expoente}} poderia underflowar em float32 para 0.
  • Se \zeta fosse tão pequeno que calculássemos 1-\zeta^{2} com pouca precisão e depois fôssemos subtrair valores próximos, poderia haver cancelamento; aqui \zeta^{2}=0{,}0004 é suficientemente grande para não causar problema significativo.
Resumo: neste problema concreto a passagem para precisão simples causa uma perda relativa pequena, compatível com o erro de arredondamento esperado de float32; não ocorre falha numérica grave.

Resposta

x(10) em precisão simples: \displaystyle x(10)\approx x_{0}\cdot 1{,}474094\times 10^{-9}\n
x(10) em precisão dupla (referência): \displaystyle x(10)\approx x_{0}\cdot 1{,}474094420\times 10^{-9}

Exercícios relacionados