Skip to content

Commit

Permalink
*pequenos ajustes
Browse files Browse the repository at this point in the history
  • Loading branch information
phkonzen committed Nov 2, 2016
1 parent 8e9ae37 commit 6749a14
Show file tree
Hide file tree
Showing 4,045 changed files with 5,501 additions and 4,916 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
81 changes: 40 additions & 41 deletions cap_aritmetica/cap_aritmetica.tex
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ \section{Sistema de numeração e mudança de base}\index{mudança de base}\inde

Uma maneira de converter um número dado numa base $b_1$ para uma base $b_2$ é fazer em duas partes: primeiro converter o número dado na base $b_2$ para base decimal e depois converter para a base $b_1$.

\subsection{Exercícios}
\subsection*{Exercícios}

\indent
\begin{Exercise} Converta para base decimal cada um dos seguintes números:
Expand Down Expand Up @@ -663,7 +663,7 @@ \subsection{A distribuição dos números}
\end{obs}
\fi

\subsection{Exercícios}
\subsection*{Exercícios}

\begin{Exercise} Explique a diferença entre o sistema de ponto fixo e ponto flutuante.
\end{Exercise}
Expand Down Expand Up @@ -850,7 +850,7 @@ \subsection{Erros de arredondamento}\index{erros!de arredondamento}
\end{ex}


\subsection{Exercícios}
\subsection*{Exercícios}

\begin{Exercise} Calcule os erros absoluto e relativo das aproximações $\bar{x}$ para $x$.
\begin{itemize}
Expand Down Expand Up @@ -1207,7 +1207,7 @@ \section{Condicionamento de um problema}
$$
\end{sol}

\subsection{Exercícios}
\subsection*{Exercícios}

\begin{Exercise}Considere que a variável $x\approx 2$ é conhecida com um erro relativo de $1\%$ e a variável $y\approx 10$ com um erro relativo de $10\%$. Calcule o erro relativo associado a $z$ quando:
\begin{equation*}
Expand Down Expand Up @@ -1241,7 +1241,7 @@ \subsection{Exercícios}
\emph{Dica:} lembre que $x^\alpha=e^{\alpha \ln(x)}$
\end{Exercise}

\section{Mais exemplos}
\section{Mais exemplos de Cancelamento Catastrófico}

\begin{ex} Considere o seguinte processo iterativo:
$$
Expand Down Expand Up @@ -1278,36 +1278,44 @@ \section{Mais exemplos}
\end{ex}


\begin{ex}Observe a seguinte identidade
\begin{ex}\label{ex:cancelamento_0}Observe a seguinte identidade
$$
f(x)=\frac{(1+x)-1}{x}=1
$$
Calcule o valor da expressão à esquerda para $x=10^{-12}$, $x=10^{-13}$, $x=10^{-14}$, $x=10^{-15}$, $x=10^{-16}$ e $x=10^{-17}$. Observe que quando $x$ se aproxima do $\epsilon$ de máquina a expressão perde o significado. Veja a Figura~\ref{fig:cancelamento_0} com o gráfico de $f(x)$ em escala logarítmica.
\end{ex}

\begin{figure}
\centering
\includegraphics[width=0.8\textwidth]{./cap_aritmetica/pics/cancelamento_0}
\caption{Oi. Eu estou aqui!}
\caption{Gráfico na função do Exemplo~\ref{ex:cancelamento_0}.}
\label{fig:cancelamento_0}
\end{figure}

\end{ex}

\begin{ex} Neste exemplo, estamos interessados em compreender mais detalhadamente o comportamento da expressão
\begin{equation}\label{def_lim}\left(1+\frac{1}{n}\right)^n\end{equation}
\begin{figure}
\includegraphics[width=0.8\textwidth]{./cap_aritmetica/pics/cancelamento_euler}
\caption{Gráfico de $\left(1+\frac{1}{n}\right)^n$ em função de $n$ em escala linear-logarítmica variando de $10^0$ até $10^{18}$. Veja o Exemplo~\ref{ex:cancelamento_euler}.}
\label{fig:cancelamento_euler}
\end{figure}

\begin{ex}\label{ex:cancelamento_euler} Neste exemplo, estamos interessados em compreender mais detalhadamente o comportamento da expressão
\begin{equation*}
\label{def_lim}\left(1+\frac{1}{n}\right)^n
\end{equation*}
quando $n$ é um número grande ao computá-la em sistemas de numeral de ponto flutuante com acurácia finita.
Um resultado bem conhecido do cálculo nos diz que o limite de (\ref{def_lim}) quando $n$ tende a infinito é o número de Euler:
\begin{equation}\label{lim}\lim_{n\to \infty}\left(1+\frac{1}{n}\right)^n=e= 2,718281828459...\end{equation}
\begin{equation*}\label{lim}
\lim_{n\to \infty}\left(1+\frac{1}{n}\right)^n=e= 2,718281828459...
\end{equation*}

Sabemos também que a sequência produzida por (\ref{def_lim}) é crescente, isto é:
Sabemos também que a sequência produzida por \eqref{def_lim} é crescente, isto é:
$$\left(1+\frac{1}{1}\right)^1< \left(1+\frac{1}{2}\right)^2< \left(1+\frac{1}{3}\right)^3 < \cdots $$

No entanto, quando calculamos essa expressão no \verb+Scilab+, nos defrontamos com o seguinte resultado:
$$\begin{array}{|c|c|c|c|c|}
\hline &&&&\\[-0.3cm]
n & \left(1+\frac{1}{n}\right)^n&~~~~&n & \left(1+\frac{1}{n}\right)^n\\
&&&&\\[-0.3cm]
\hline\\[-0.3cm]
\begin{equation*}
\begin{array}{|c|c|c|c|c|}\hline &&&&\\[-0.3cm]
n & \left(1+\frac{1}{n}\right)^n&~~~~&n & \left(1+\frac{1}{n}\right)^n\\ &&&&\\[-0.3cm]\hline\\[-0.3cm]
1 & 2,0000000000000 && 10^{2} & 2,7048138294215 \\
2 & 2,2500000000000 && 10^{4} & 2,7181459268249 \\
3 & 2,3703703703704 && 10^{6} & 2,7182804690957 \\
Expand All @@ -1317,28 +1325,18 @@ \section{Mais exemplos}
7 & 2,5464996970407 && 10^{14} & 2,7161100340870 \\
8 & 2,5657845139503 && 10^{16} & 1,0000000000000 \\
9 & 2,5811747917132 && 10^{18} & 1,0000000000000 \\
10 & 2,5937424601000 && 10^{20} & 1,0000000000000 \\
\hline
\end{array}
$$
Podemos resumir esses dados no seguinte gráfico de $\left(1+\frac{1}{n}\right)^n$ em função de $n$:

%\begin{figure}[htp]
\includegraphics[width=0.8\textwidth]{./cap_aritmetica/pics/cancelamento_euler.eps}
%\caption{Gráfico de $\left(1+\frac{1}{n}\right)^n$ em função de $n$ em escala linear-logarítmica variando de $10^0$ até $10^{18}$ gerado no Scilab 5.4.1.}
%\end{figure}
10 & 2,5937424601000 && 10^{20} & 1,0000000000000 \\\hline
\multicolumn{5}{c}{}
\end{array}
\end{equation*}

Observe que quando $x$ se torna grande, da ordem de $10^{15}$, o gráfico da função deixa de se crescente e apresenta oscilações. Observe também que a expressão se torna identicamente igual a $1$ depois de um certo limiar. Tais fenômenos não são intrínsecos da função $f(x)=(1+1/x)^x$, mas \emph{\uline{oriundas de erros de arredondamento}}, isto é, são resultados numéricos espúrios. A fim de pôr o comportamento numérico de tal expressão, apresentamos abaixo o gráfico da mesma função, porém restrito à região entre $10^{14}$ e $10^{16}$.
Podemos resumir esses dados no gráfico de $\left(1+\frac{1}{n}\right)^n$ em função de $n$, veja a Figura~\ref{fig:cancelamento_euler}.

%\begin{figure}
\includegraphics[width=0.9\textwidth]{./cap_aritmetica/pics/cancelamento_euler2.eps}
%\caption{Gráfico de $\left(1+\frac{1}{n}\right)^n$ em função de $n$ em escala linear-logarítmica variando de $10^{14}$ até $10^{16}$ gerado no Scilab 5.4.1.}
¨%\end{figure}
\end{ex}
Observe que quando $n$ se torna grande, da ordem de $10^{15}$, o gráfico da função deixa de se crescente e apresenta oscilações. Observe também que a expressão se torna identicamente igual a $1$ depois de um certo limiar. Tais fenômenos não são intrínsecos da função $f(n)=(1+1/n)^n$, mas \emph{\uline{oriundas de erros de arredondamento}}, isto é, são resultados numéricos espúrios. A fim de pôr o comportamento numérico de tal expressão, apresentamos abaixo o gráfico da mesma função, porém restrito à região entre $10^{14}$ e $10^{16}$.

Para compreendermos melhor por que existe um limiar $N$ que, quando atingido torna a expressão do exemplo acima identicamente igual a $1$, observamos a sequência de operações realizadas pelo computador:
\begin{equation}\label{seq_oper}
x~\to ~1/x ~\to ~1+1/x ~\to ~(1+1/x)^x
n~\to ~1/n ~\to ~1+1/n ~\to ~(1+1/n)^n
\end{equation}
Devido ao limite de precisão da representação de números em ponto flutuante, existe um menor número representável que é maior do que 1. Este número é $1 + $\verb+eps+, onde \verb+eps+ é chamado de \emph{épsilon de máquina} e é o menor número que somado a 1 produz um resultado superior a 1 no sistema de numeração usado. O épsilon de máquina no sistema de numeração \emph{double} vale aproximadamente $2,22\times 10^{-16}$.
\ifisscilab
Expand All @@ -1349,17 +1347,17 @@ \section{Mais exemplos}
1.0000000000000002220446
\end{verbatim}
\fi
Quando somamos a $1$ um número positivo inferior ao épsilon de máquina, obtemos o número 1. Dessa forma, o resultado obtido pela operação de ponto flutuante $1+x$ para $0<x<2,22 \times 10^{-16}$ é 1.
Quando somamos a $1$ um número positivo inferior ao épsilon de máquina, obtemos o número 1. Dessa forma, o resultado obtido pela operação de ponto flutuante $1+n$ para $0<n<2,22 \times 10^{-16}$ é 1.

Portanto, quando realizamos a sequência de operações dada em (\ref{seq_oper}), toda informação contida no número $x$ é perdida na soma com $1$ quando $1/x$ é menor que o épsilon de máquina, o que ocorre quando $x>5\times 10^{15}$. Assim $(1+1/x)$ é aproximado para $1$ e a última operação se resume a $1^x$, o que é igual a $1$ mesmo quando $x$ é grande.
Portanto, quando realizamos a sequência de operações dada em \eqref{seq_oper}, toda informação contida no número $n$ é perdida na soma com $1$ quando $1/n$ é menor que o épsilon de máquina, o que ocorre quando $n>5\times 10^{15}$. Assim $(1+1/n)$ é aproximado para $1$ e a última operação se resume a $1^n$, o que é igual a $1$ mesmo quando $n$ é grande.

Um erro comum é acreditar que o perda de significância se deve ao fato de $1/x$ ser muito pequeno para ser representado e é aproximando para $0$. Isto é falso, o sistema de ponto de flutuante permite representar números de magnitude muito inferior ao épsilon de máquina. O problema surge da limitação no tamanho da mantissa. Observe como a seguinte sequência de operações não perde significância para números positivos x muito menores que o épsilon de máquina:
Um erro comum é acreditar que o perda de significância se deve ao fato de $1/n$ ser muito pequeno para ser representado e é aproximando para $0$. Isto é falso, o sistema de ponto de flutuante permite representar números de magnitude muito inferior ao épsilon de máquina. O problema surge da limitação no tamanho da mantissa. Observe como a seguinte sequência de operações não perde significância para números positivos x muito menores que o épsilon de máquina:
\begin{equation}\label{seq_oper2}
x ~\to ~1/x ~\to ~1/(1/x)
n ~\to ~1/n ~\to ~1/(1/n)
\end{equation}
compare o desempenho numérico desta sequência de operações para valores pequenos de $x$ com o da seguinte sequência:
compare o desempenho numérico desta sequência de operações para valores pequenos de $n$ com o da seguinte sequência:
\begin{equation}\label{seq_oper3}
x ~\to ~1+x ~\to ~(1+x)-1.
n ~\to ~1+n ~\to ~(1+n)-1.
\end{equation}
Finalmente, notamos que quando tentamos calcular $\left(1+\frac{1}{n}\right)^n$ para $n$ grande, existe perda de significância no cálculo de $1+1/n$.
\ifisscilab
Expand Down Expand Up @@ -1389,13 +1387,14 @@ \section{Mais exemplos}
7.036874417766400000D+13
\end{verbatim}
\fi
\end{ex}

\begin{ex}[Analogia da balança] Observe a seguinte comparação interessante que pode ser feita para ilustrar os sistemas de numeração com ponto fixo e flutuante: o sistema de ponto fixo é como uma balança cujas marcas estão igualmente espaçadas; o sistema de ponto flutuante é como uma balança cuja distância entre as marcas é proporcional à massa medida. Assim, podemos ter uma balança de ponto fixo cujas marcas estão sempre distanciadas de $100$g ($100$g, $200$g, $300$g, ..., $1$Kg, $1,1$Kg,...) e outra balança de ponto flutuante cujas marcas estão distanciadas sempre de aproximadamente um décimo do valor lido ($100$g, $110$g, $121$g, $133$g, ..., $1$Kg, $1,1$Kg, $1,21$Kg, ...) A balança de ponto fixo apresenta uma resolução baixa para pequenas medidas, porém uma resolução alta para grandes medidas. A balança de ponto flutuante distribui a resolução de forma proporcional ao longo da escala.

Seguindo nesta analogia, o fenômeno de perda de significância pode ser interpretado como a seguir: imagine que você deseje obter o peso de um gato (aproximadamente $4$Kg). Dois processos estão disponíveis: colocar o gato diretamente na balança ou medir seu peso com o gato e, depois, sem o gato. Na balança de ponto flutuante, a incerteza associada na medida do peso do gato (sozinho) é aproximadamente $10\%$ de $4$Kg, isto é, $400$g. Já a incerteza associada à medida da uma pessoa (aproximadamente $70$Kg) com o gato é de $10\%$ do peso total, isto é, aproximadamente $7$Kg. Esta incerteza é da mesma ordem de grandeza da medida a ser realizada, tornado o processo impossível de ser realizado, já que teríamos uma incerteza da ordem de $14$Kg (devido à dupla medição) sobre uma grandeza de $4$Kg.
\end{ex}

\subsection{Exercícios}
\subsection*{Exercícios}

\begin{Exercise} Considere as expressões:
\begin{equation*}
Expand Down
4 changes: 2 additions & 2 deletions cap_derint/cap_derint.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1951,8 +1951,8 @@ \section{Exercícios finais}

\begin{Exercise}Calcule numericamente o valor das seguintes integrais com um erro relativo inferior a $10^{-4}$.
\begin{itemize}
\item[a)] $\displaystyle\int_0^1\frac{\sin(\pi x)}{{x}}dx$
\item[b)] $\displaystyle\int_0^1\frac{\sin(\pi x)}{{x(1-x)}}dx$
\item[a)] $\displaystyle\int_0^1\frac{\sin(\pi x)}{x}dx$
\item[b)] $\displaystyle\int_0^1\frac{\sin(\pi x)}{x(1-x)}dx$
%\item[c)] $\displaystyle\int_0^1\frac{\cos(\pi x)}{\sqrt{x(1-x)}}dx$
\item[c)] $\displaystyle \int_0^1\frac{\sin\left(\frac{\pi}{2} x\right)}{\sqrt{x(1-x)}}dx$
\item[d)] $\displaystyle \int_0^1\ln(x) \cos(x) dx$
Expand Down
Loading

0 comments on commit 6749a14

Please sign in to comment.