TRABALHO DE CONCLUSÃO DE CURSO
MÉTODOS NUMÉRICOS COM R:
ALGUMAS NOTAS SOBRE ZEROS DE
FUNÇÕES
MARCELO SÁVIO RAMOS
JOINVILLE, 2015
MARCELO SÁVIO RAMOS
MÉTODOS NUMÉRICOS COM R: ALGUMAS NOTAS
SOBRE ZEROS DE FUNÇÕES
Trabalho de Graduação apresentado ao
Curso de Licenciatura em Matemática
do Centro de Ciências Tecnológicas,
da Universidade do Estado de Santa
Catarina, como requisito parcial para
a obtenção do grau de Licenciatura em
Matemática.
Orientadora: Prof. Dra. Elisa Henning
JOINVILLE, SC
2015
MARCELO SÁVIO RAMOS
MÉTODOS NUMÉRICOS COM R: ALGUMAS NOTAS
SOBRE ZEROS DE FUNÇÕES
Trabalho de Graduação apresentado ao Curso de Licenciatura em Matemática do Centro de Ciências Tecnológicas, da Universidade do Estado
de Santa Catarina, como requisito parcial para a obtenção do grau de
Licenciatura em Matemática.
Banca Examinadora
Orientadora:
Prof. Dra. Elisa Henning
Universidade do Estado de Santa Catarina
Membro:
Prof. Dr. Jones Corso
Universidade do Estado de Santa Catarina
Membro:
Prof. Dr. Rogério de Aguiar
Universidade do Estado de Santa Catarina
Joinville, 26/06/2015.
À Deus e aos meus professores.
Agradecimentos
Agradeço primeiramente a Deus, por estar presente todos os
dias na minha vida, pelas oportunidades e a capacidade de concluir
esse trabalho de graduação.
Em especial a Cíntia, Débora e Maiara por toda a ajuda e
carinho nos meus momentos de dificuldade, sempre me incentivando a
seguir em frente.
As meninas da minha turma, Emanuella, Joana e Nathiele pela
amizade e ajuda, pois para mim foi um presente de Deus ter a companhia, o esforço e toda a ajuda que elas me trouxeram.
A Bruna e a Juliana que sempre que possível estavam estudando comigo, e também pela amizade e ajuda, para que fosse possível
a conclusão desse trabalho.
A minha grande amiga Gislaine que, por muita boa vontade,
me ajudou em ter lido esse trabalho.
Ao professor Jones e professor Rogério por aceitarem compôr a
banca examinadora. Com agradecimento especial ao professor e amigo
Rogério, por sempre me compreender e me ajudar em minhas dificuldades.
A minha orientadora Elisa, por toda sua dedicação e ajuda
para elaboração e conclusão deste trabalho, e por sempre me acalmar
em meu momentos de desespero e estresse.
E aos demais professores e colegas que me ajudaram durante
esta trajetória.
“É muito melhor lançar-se em busca
de conquistas grandiosas, mesmo
expondo-se ao fracasso, do que
alinhar-se com os pobres de espírito, que nem gozam muito nem sofrem muito, porque vivem numa penumbra cinzenta, onde não conhecem nem vitória, nem derrota.”
Theodore Roosevelt
Resumo
RAMOS, Marcelo Sávio. Métodos Numéricos com R: algumas notas sobre zeros de funções. 2015. 93p.. Trabalho de Conclusão de Curso
(Graduação em Licenciatura em Matemática) - Universidade do Estado
de Santa Catarina, Joinville, 2015.
O presente trabalho tem por objetivo explorar algumas potencialidades
do pacote GNU R para aplicações em Cálculo Numérico. Inicialmente
é realizada uma breve apresentação dos principais métodos numéricos
vistos em cursos de graduação, sua importância e aplicações, com ênfase nos métodos para encontrar zeros de funções, como o método de
Newton-Raphson e o método da Secante. Foram investigados os pacotes
com funções para aproximar raízes de equações e também elaboradas
rotinas com a linguagem R, sob a ótica de sua utilização em cursos de
graduação. As rotinas foram aplicadas em exemplos da literatura e também num problema de estatística. Os resultados alcançados mostram
que o R se constitui em uma alternativa viável para aplicações, uma
vez que pode ser utilizado tanto em computadores com distintos sistemas operacionais, como numa potencial opção para uso em dispositivos
móveis.
Palavras-chave: Métodos Numéricos. Zeros de Funções. R. Rotinas.
Abstract
RAMOS, Marcelo Sávio. Numerical Methods with R: some notes
on zeros functions. 2015. 93p.. Work of Course Conclusion (Graduate
Degree in Mathematics) - Santa Catarina State University, Joinville,
2015.
The present work aims to explore some potential of GNU R package for applications in Numerical Calculus. Initially, we made a brief
presentation of numerical methods seen in undergraduate courses, its
importance and applications, with emphasis on methods for root finding, such as Newton-Raphson and Secant method. R packages with
functions to approximate zeros of equations were investigated and also
routines were elaborated with the R language from the perspective of
their use in undergraduate courses. The routines were used in examples from the literature and also on a statistical application problem.
The results obtained show that R constitutes a viable alternative, since
it can be used in computers with different operating systems and is a
potential option for use in mobile devices.
Key-words: Numerical methods. Zeros of functions. R. Routines.
Lista de ilustrações
Figura 1 – Interpretação Geométrica do Método de Newton-Raphson 30
Figura 2 – Método da Secante . . . . . . . . . . . . . . . . . . .
Figura 3 – Interpretação Geométrica do Método da Secante . . . .
32
33
Figura 4 – Tela inicial do R . . . . . . . . . . . . . . . . . . . . .
37
Figura 5 – Interface RStudio . . . . . . . . . . . . . . . . . . . .
Figura 6 – Interface R Commander . . . . . . . . . . . . . . . . .
38
39
Figura 7 – Tela inicial e de compilação do R em IOS . . . . . . . .
Figura 8 – Tela inicial do R no Android . . . . . . . . . . . . . .
40
42
Figura 9 – Máquina Diferencial . . . . . . . . . . . . . . . . . . .
Figura 10 – Processo de Modelagem Matemática . . . . . . . . . .
44
46
Figura 11 – Gráfico da função ϕ(x) = ln(x) + 2 . . . . . . . . . . .
Figura 12 – Gráfico da função f (x) = ln(x) − x + 2 . . . . . . . . .
64
65
Figura 13 – Gráfico da função f (x) = xsin(x) + 4 . . . . . . . . . .
Figura 14 – Gráfico da função f (x) = cos3 (2x) . . . . . . . . . . . .
67
68
Figura 15 – Gráfico da função f (x) = x3 − 9x + 3 . . . . . . . . . .
Figura 16 – Gráfico da função f (x) = 4sin(x) − ex . . . . . . . . .
72
73
Figura 17 – Gráfico da função f (x) = x3 − 9x + 3 . . . . . . . . . .
Figura 18 – Gráfico da função f (x) = 4sin(x) − ex . . . . . . . . .
74
75
Figura 19 – Ilustração do intervalo [a, b] . . . . . . . . . . . . . . .
79
Figura 20 – Gráfico interativo utilizando x0 = 5, 5 . . . . . . . . . .
Figura 21 – Gráfico interativo utilizando x0 = 3, 5 . . . . . . . . . .
83
84
Lista de abreviaturas e siglas
ARL
Average Run Length
CEP
Controle Estatístico de Processos
CRAN
Comprehensive R Archive Network
CUSUM
Cumulative Sum Control Chart
GPL
General Public License
EDO
Equações Diferenciais Ordinárias
EDP
Equações Diferenciais Parciais
HTML
HyperText Markup Language
IDE
Integrated Development Environment
Sumário
INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . 21
1
MÉTODOS NUMÉRICOS . . . . . . . . . . . . . . 23
1.1
1.1.1
DEFINIÇÃO E MÉTODOS . . . . . . . . . . . . . .
Zeros Reais de Funções Reais . . . . . . . . . . . . . .
23
24
1.1.1.1
Método da Bisseção
25
1.1.1.2
. . . . . . . . . . . . . . . . . . . . .
Método da Falsa Posição . . . . . . . . . . . . . . . . . .
1.1.1.3
Método da Iteração Linear
27
1.1.1.4
. . . . . . . . . . . . . . . . . .
Método de Newton-Raphson . . . . . . . . . . . . . . . . .
1.1.1.5
Método da Secante
. . . . . . . . . . . . . . . . . . . . .
31
2
O AMBIENTE R
2.1
2.2
O SOFTWARE R . . . . . . . . . . . . . . . . . . . .
O R EM DISPOSITIVOS MÓVEIS . . . . . . . . .
3
3.1
O ENSINO DE CÁLCULO NUMÉRICO . . . . . . . 43
HISTÓRIA, ENSINO E APLICAÇÕES . . . . . . . 43
4
ROTINAS E PACOTES NO R . . . . . . . . . . . . 49
4.1
4.2
ALGUMAS ROTINAS NO R . . . . . . . . . . . . .
ALGUNS PACOTES DO R . . . . . . . . . . . . . .
27
28
. . . . . . . . . . . . . . . . . . . 35
35
40
49
59
CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . 87
Referências . . . . . . . . . . . . . . . . . . . . . . . 89
21
INTRODUÇÃO
Os Métodos Numéricos são um conjunto de técnicas pelas quais
os problemas matemáticos são formulados de modo que possam ser resolvidos com operações aritméticas. Embora existam muitos tipos de
métodos numéricos, eles têm uma característica em comum: envolvem
um grande número de cálculos aritméticos extensos. Com o desenvolvimento de computadores digitais rápidos e eficientes, o papel dos métodos numéricos na resolução de problemas aumentou significamente nos
últimos anos (CHAPRA; CANALE, 2008).
Neste sentido, este trabalho é importante pelo constante uso
dos métodos numéricos nas mais variadas áreas, como na Engenharia, Matemática, Física, Matemática Financeira, Estatística, entre outras. Portanto, o acadêmico deve possuir conhecimentos sobre os mais
importantes métodos e saber aplicá-los a um devido problema. Como
para muitas situações não há soluções analíticas, os métodos numéricos tornam-se uma alternativa mais econômica e de melhor precisão na
busca de um valor numérico aproximado para um problema. Apresentamos neste trabalho uma proposta de utilização do ambiente R para
a busca numérica de raízes de equações por se tratar de um software
livre (software Open Source with General Public License GNU).
A hipótese que orienta este trabalho é a seguinte: o pacote R é
uma opção viável para ensino de Cálculo Numérico em Cursos de Graduação. Além disso, a investigação procura contribuir para responder
outras duas perguntas: Seria possível sua utilização em sala de aula
a partir de computadores e/ou dispositivos móveis? Como poderia ser
feito o uso de pacotes e rotinas em problemas práticos?
Como objetivo geral deste trabalho, nos propomos a explorar as
potencialidades do software R para elaboração de rotinas para Cálculo
22
Introdução
Numérico. Além disso, destacamos os obetivos específicos necessários
para alcançar o objetivo geral deste trabalho: explorar alguns pacotes
incluidos no R para métodos numéricos; desenvolver rotinas que possam
ser aplicadas em sala de aula, com o uso de computadores e dispositivos
móveis, e apresentar a importância da utilização de softwares gratuitos,
como por exemplo o R, no ensino de Cálculo Numérico. Esta pesquisa se
caracteriza inicialmente como exploratória descritiva, pois busca gerar
conhecimento sobre algo não muito conhecido de modo a promover a
reflexão sobre o assunto (GIL, 2010).
Este trabalho está divido da seguinte forma: no Capítulo 1 será
apresentada uma revisão referente ao conceito dos métodos numéricos,
com foco em alguns métodos para zeros de funções. A partir desta revisão partimos para o Capítulo 2, onde será apresentado o ambiente
R, focando em sua origem, características e o seu uso. No Capítulo 3
dissertamos brevemente sobre o ensino de Cálculo Numérico, sua importância e interação com o uso de computadores, mediante o uso de
softwares. O Capítulo 4 apresenta alguns pacotes e funções existentes
e rotinas elaboradas no R para zeros de funções. Ao final, serão adicionadas às conclusões deste trabalho e sugestões para trabalhos futuros.
23
1 MÉTODOS NUMÉRICOS
Neste capítulo apresenta-se uma revisão dos principais métodos numéricos, juntamente com uma breve definição do que é Método
Numérico. O que se pretende com esta revisão é que as informações
apresentadas a seguir possam ajudar o leitor a compreender as rotinas
elaboradas, reproduzi-las de forma diferente ou até mesmo construir
programas para os demais métodos que não serão apresentados aqui.
1.1 DEFINIÇÃO E MÉTODOS
“Método numérico é um conjunto de procedimentos utilizados
para transformar um modelo matemático num problema numérico ou
um conjunto de procedimentos usados para resolver um problema numérico” (SPERANDIO; MENDES; SILVA, 2003, p. 3).
Segundo Gilat e Subramaniam (2008), os métodos numéricos
são técnicas matemáticas utilizadas na busca de solução de problemas
matemáticos que não podem ser resolvidos ou que são difíceis de resolver de forma analítica. A solução analítica é uma resposta exata
na forma de uma expressão matemática associada às variáveis do problema. Já a solução numérica é um valor numérico aproximado para o
problema (BURDEN; FAIRES, 2008).
De acordo com Sperandio, Mendes e Silva (2003) existem inúmeros métodos para a resolução de um problema. Entretanto, a escolha
do método mais eficiente para resolver um problema numérico envolve
alguns aspectos, como por exemplo, a precisão desejada para os resultados, a velocidade de convergência, o tempo de processamento e a
economia de memória necessária para encontrar a solução adequada.
Na maioria dos cursos de graduação, em especial no curso de
24
Capítulo 1. MÉTODOS NUMÉRICOS
Licenciatura em Matemática, entre os métodos estudados nas aulas de
Cálculo Numérico estão os métodos de busca de aproximação para zeros de funções, como os Métodos de Newton, da Secante e da Bisseção.
Além destes também são estudados métodos numéricos para resolução
de sistemas lineares, por exemplo, Métodos de Gauss-Seidel e GaussJordan, métodos para interpolação numérica (Método de Lagrange e
Newton), método para resolução numérica de integrais (Método de
Simpson e dos Trapézios), ajuste de curvas (Método dos Quadrados
Mínimos) e resolução numérica de equações diferenciais (Métodos de
Runge Kuta). Neste trabalho iremos falar sobre Zeros de Funções e
alguns métodos para se calcular as raízes das funções.
1.1.1
Zeros Reais de Funções Reais
Muitos são os problemas científicos e de engenharia, onde te-
mos a necessidade de encontrar matematicamente soluções para o qual
uma função f (x) obtenha valor igual a zero, ou seja, determinar x pertencente ao conjunto dos reais tais que
f (x) = 0,
(1.1)
sendo estas soluções denominadas de raízes da equação f (x) = 0 ou
zeros da função f (RIBEIRO; MENEZES; MEZZOMO, 2012).
Um dos mais antigos registros relacionado à problemática de
encontrar uma raiz de uma equação data do ano de 1700 a.C. em uma
tábua cuneiforme da Babilônia, sendo este considerado um dos problemas básicos mais importantes da aproximação numérica (RIBEIRO,
2012). De acordo com a autora, existem alguns métodos para se calcular analiticamente raízes de funções polinomiais de grau 2, 3 e até
4, que exigiram séculos de desenvolvimento matemático para que fossem propostos e consolidados. Mas existem diversos tipos de funções,
como por exemplo, as funções não lineares, as funções de grau superior
1.1. DEFINIÇÃO E MÉTODOS
25
a quatro e as funções transcendentes, que não são possíveis de serem
calculadas a partir de métodos diretos.
As equações algébricas são equações em que as incógnitas são
submetidas apenas às chamadas operações algébricas, ou seja, soma,
subtração, multiplicação, divisão, potenciação inteira e radiciação. Já
a transcendente é uma equação que contém alguma função que não é
redutível a uma fração entre polinômios, e cuja solução não pode ser expressa a partir de funções elementares, ou seja, não possui uma solução
exata expressa através de funções conhecidas (RIBEIRO; MENEZES;
MEZZOMO, 2012).
Segundo Ribeiro (2012) as funções caracterizadas como transcendentes são aquelas que não satisfazem a equação do tipo:
pn y n + . . . + p1 y + p0 = 0,
(1.2)
onde pk (0 ≤ k ≤ n) é um polinômio em x com coeficientes racionais.
Em casos assim, são recomendados métodos que encontrem uma solução aproximada para essas raízes. Esses métodos, em sua maioria,
consistem em processos iterativos, onde as iterações seguintes fornecem aproximações mais precisas dos zeros das funções que as iterações
anteriores (FRANCO, 2006).
A seguir, serão apresentados os principais métodos para resolução de equações não lineares, tais como o Método da Bisseção, Método
da Falsa Posição, Método da Iteração Linear, o Método de NewtonRhapson e o Método da Secante.
1.1.1.1 Método da Bisseção
O Método da Bisseção é uma técnica iterativa que visa encurtar
a amplitude do intervalo que contém a raiz até que se atinja a exatidão
necessária, empregando a divisão sucessiva de [a, b] ao meio (RUGGIERO; LOPES, 1996). A cada iteração, a raiz aproximada é dada pela
26
Capítulo 1. MÉTODOS NUMÉRICOS
equação (1.3) por,
xk =
ak + b k
.
2
(1.3)
onde [ak , bk ] é o subintervalo obtido na interação k. Como critério de
convergência temos que a função f (x) deverá ser contínua no intervalo
[a, b] e tal que f (a)f (b) < 0.
Este método que também é conhecido como truncamento binário, divisão do intervalo na metade ou como Método de Bolzano. Este
último nome é pelo fato que o método se baseia no Teorema de Bolzano,
que será dado a seguir.
Teorema 1.1. Seja f (x) uma função contínua em um intervalo [a, b].
Se f (a) e f (b) possuírem sinais contrário, então existirá pelo menos um
c em [a, b], tal que f (c) = 0. Obviamente, se a f (a) e f (b) possuírem
sinais contrários então: f (a)f (b) < 0.
O Método da Bisseção não possui rápida convergência, conforme Cunha (2003):
Embora o Método da Bisseção seja simples,
ele sofre de uma séria desvantagem em se tratando de métodos númericos: é lento. Por outro lado, as aproximações fornecidas pelo método permanecem dentro do intervalo inicial, o
que pode representar uma vantagem em aplicações, por exemplo, quando existem restrições nos valores da variável x.
Para sabermos o momento mais adequado de se finalizar o método, fazemos o uso de um critério de parada. De acordo com Franco
(2006), temos que dados xk e xk+1 duas aproximações consecutivas da
raiz exata e ε uma tolerância prefixada, tem-se como principais critérios
de parada os seguintes:
i) |f (xk )| < ε;
1.1. DEFINIÇÃO E MÉTODOS
27
ii) |xk+1 − xk | < ε;
iii)
|xk+1 − xk |
< ε;
|xk+1 |
iv) Número limite de iterações.
O autor ainda complementa, que qualquer um desses critérios
de parada podem ser utilizados, tanto para o Método da Bisseção como
para os outros métodos.
1.1.1.2 Método da Falsa Posição
O Método da Falsa Posição consiste em localizar uma raiz aproximada por meio da média ponderada entre a e b, utilizando como pesos
|f (b)| e |f (a)|, respectivamente (RUGGIERO; LOPES, 1996). Logo a
raiz aproximada é dada pela equação
xk =
af (b) − bf (a)
a|f (b)| + b|f (a)|
=
.
|f (b)| + |f (a)|
f (b) − f (a)
(1.4)
Este método que também pode ser chamado como Método da
Falsa Suposição ou, ainda, do Falso Pressuposto, é um procedimento
iterativo de resolução de problemas lineares já bastante antigo. Suas
origens remontam ao antigo Egito e aos primórdios da civilização chinesa, tendo sido largamente utilizado, desde então, por matemáticos de
várias civilizações. Em sua essência, o Método da Falsa Posição consiste
em um procedimento de tentativas e erros (MEDEIROS, A.; MEDEIROS, C. F. de, 2004).
Para este método, como critério de convergência temos o mesmo
já citado para o Método da Bisseção, onde a função f (x) deverá ser
contínua no intervalo [a, b], tal que f (a)f (b) < 0.
1.1.1.3 Método da Iteração Linear
De acordo com Ruggiero e Lopes (1996), seja uma função f (x)
contínua no intervalo [a, b] que contém uma raiz da equação f (x) = 0.
28
Capítulo 1. MÉTODOS NUMÉRICOS
Logo, o método da Iteração Linear consiste em transformar esta equação em uma outra equivalente x = ϕ(x) e a partir de uma aproximação
inicial x0 gerar uma sequência {xk } de aproximações para uma solução
ξ pela relação xk+1 = ϕ(xk ), com k = 1, 2, 3, . . .
De acordo com Sperandio, Mendes e Silva (2003) o método da
Iteração Linear, também chamado de Ponto Fixo, convergirá somente se
escolhida a equação de iteração x = ϕ(x), com intervalo [a, b], satisfazer
as seguintes condições:
i) ϕ(x) e ϕ′ (x) sejam contínuas em [a, b];
ii) |ϕ′ (x)| ≤ M < 1, ∀x ∈ [a, b];
iii) x0 ∈ [a, b].
onde M é um ponto entre zero e um.
O Método do Ponto Fixo não é propriamente um método, mas
sim uma classe de métodos. Por exemplo, o Método de Newton é um
dos que pertence a essa classe. Este método tem grande importância
na resolução de todo o tipo de equações, incluindo as equações diferenciais e integrais. Ele possui convergência linear, diferente do Método
de Newton-Raphson, que será visto a seguir, onde a convergência é
quadrática (RIBEIRO, 2012).
1.1.1.4 Método de Newton-Raphson
Este método foi publicado por Isaac Newton em 1687, com o
intuito de encontrar raízes de equações não lineares. Conhecido como
Método de Newton-Raphson devido à sistematização apresentada por
Joseph Raphson em 1690 (CUNHA, 2003). Já para Machado e Alves
(2013) o método foi proposto por Isaac Newton em dois momentos: em
1669 em De analysis per aequationes número terminorum infinitas composta por ideias adquiridas em 1665 à 1666, trabalho publicado apenas
em 1711, em De metodis fluxionum et serierum infinitarum, escrito em
29
1.1. DEFINIÇÃO E MÉTODOS
1671. O método proposto foi aprimorado para qualquer tipo de função
real em 1690 por Joseph Raphson. É importante salientar que o mesmo
não foi apresentado tal como é trabalhado hoje, ele foi aperfeiçoado
devida a atuação de tantos outros grandes matemáticos como L. A.
Cauchy, J.Fourier, Kantorovich, Fine e Bennet, entre outros, os quais
contribuíram com o método, provando que o mesmo convergia quadraticamente desde que o ponto inicial fosse tomado em uma vizinhança
da solução procurada (Fourier). O mesmo se extende para funções de
várias variáveis, sendo assim utilizado para se provar a existência de
raízes de outras equações (Cauchy) (MACHADO; ALVES, 2013).
Segundo Cunha (2003) este método combina duas idéias básicas comuns nas aproximações numéricas que são: a linearização e
a iteração. Na linearização, procura-se substituir um problema complicado por sua aproximação linear, ou seja, no caso do Método de
Newton-Raphson consiste na substituição da curva y = f (x) por sua
reta tangente. Por outro lado, um processo iterativo, ou aproximações
sucessivas, consiste na repetição sistemática de um procedimento até
que seja atingido o grau de aproximação desejado.
De acordo com Ruggiero e Lopes (1996) o Método de NewtonRaphson tenta acelerar a convergência, adotando como função de iteração a função ϕ(x) no qual |ϕ‘ (ξ)| = 0, obtendo como função de iteração
a equação (1.5) dada abaixo como:
xk+1 = xk −
f (xk )
.
f ′ (xk )
(1.5)
Outra forma de se obter a equação (1.5) segundo Chapra e Canale (2008) é a partir da interpretação geométrica conforme apresenta
a Figura 1 abaixo.
30
Capítulo 1. MÉTODOS NUMÉRICOS
Figura 1 – Interpretação Geométrica do Método de Newton-Raphson
Fonte: Adaptado de Chapra e Canale (2008)
Temos então que a primeira derivada em x é equivalente à
inclinação, dada pela equação (1.6) como:
f ′ (xi ) =
f (xi ) − 0
,
xi − xi+1
(1.6)
reorganizando a equação acima obtemos a equação (1.7) dada como:
xi+1 = xi −
f (xi )
f ′ (xi )
(1.7)
De acordo com Chapra e Canale (2008) o método de NewtonRaphson embora seja em geral muito eficiente, em algumas situações
ele tem um desempenho insatisfatório, como por exemplo, no caso de
raízes múltiplas. Outras dificuldades podem aparecer no caso que a
função possui um ponto de inflexão, ou seja, quando f ′′ (x) = 0 na
vizinhança de uma raiz, e também em casos que forem encontradas
inclinações próximas de zero, onde uma inclinação nula, ou seja, f ′ (x) =
31
1.1. DEFINIÇÃO E MÉTODOS
0 provocaria uma divisão por zero. Logo, sua convergência depende da
natureza da função e da precisão da aproximação inicial.
Pode-se dizer que o método deve satisfazer alguns critérios,
como por exemplo, a f ′ (x) 6= 0 para todo x ∈ [a, b], f ′′ (x) não mudar
f (b) f (a) de sinal em [a, b] e também ′ < (b − a) e ′ < (b − a).
f (a)
f (b)
Esse último garante que as tangentes à curva em (a, f (a)) e (b, f (b))
interceptem o eixo das abcissas em (a, b) (RIBEIRO, 2012).
1.1.1.5 Método da Secante
Muitos acreditam que o Método das Secantes surgiu do Método de Newton-Raphson, usando uma aproximação de diferenças finitas para a derivada. No entanto, evidências históricas revelam que um
caso especial do Método da Secante, mais comumente referido como a
Regra da Dupla Posição Falsa, antecedeu o Método de Newton-Raphson
por mais de 3000 anos e pode ser encontrada em tabuletas de argila
da Babilônia do século XVIII A.C. e no Papiro Rhind egípcio (PAPAKONSTANTINOU, 2009).
Segundo Ruggiero e Lopes (1996) uma grande desvantagem do
método de Newton-Raphson é o fato de ser necessário obter a f ′ (x) e
calcular o seu valor numérico a cada iteração. Porém, uma das formas
de se contornar isto é substituir a derivada f ′ (xk ) pelo quociente das
diferenças dada pela equação (1.8) como:
f (xk ) − f (xk−1 )
,
f ′ (xk ) ∼
=
xk − xk−1
(1.8)
onde xk e xk−1 são duas aproximações para a raiz. Substituindo a
equação (1.8) na equação (1.5), obtemos
xk+1 = xk −
f (xk )
.
f (xk ) − f (xk−1 )
xk − xk−1
(1.9)
32
Capítulo 1. MÉTODOS NUMÉRICOS
Desenvolvendo a equação acima obtemos a equação (1.10) dada por,
xk+1 =
xk−1 f (xk ) − xk f (xk−1 )
.
f (xk ) − f (xk−1 )
(1.10)
Segundo Ribeiro (2012) quando a alteração desenvolvida no
Método de Newton acontece desta forma, o método passa ser chamado
Método da Secante, onde neste caso, realiza-se a troca da inclinação da
reta tangente pela inclinação da reta secante à curva. O comportamento
do método pode ser visualizado na Figura 2.
Figura 2 – Método da Secante
Fonte: Ribeiro (2012)
Outra forma de se obter a equação (1.10) para o Método da Secante, de acordo com Cunha (2003), é usando semelhança de triângulos
ABC e AED, ou seja, dada pela equação (1.11) como,
f (x0 )
f (x1 )
=
,
x0 − x2
x1 − x2
(1.11)
onde x2 é o ponto denotado por A na Figura 3. A equação (1.11),
retirada a partir da Figura 3 , após algumas manipulações algébricas
33
1.1. DEFINIÇÃO E MÉTODOS
se obtêm a equação dada por
x2 =
x0 f (x1 ) − x1 f (x0 )
.
f (x1 ) − f (x0 )
(1.12)
Generalizando, no Método das Secantes se utiliza duas aproximações,
xk−1 e xk , para calcular uma nova aproximação xk+1 , se chega a equação (1.10), citada acima.
Figura 3 – Interpretação Geométrica do Método da Secante
Fonte: Cunha (2003)
Considerando que o Método da Secante é uma aproximação
para o Método de Newton-Raphson, as condições de convergência são
as mesmas deste método, com um porém, que em casos de f (xk ) ≈
f (xk−1 ) o método poderá divergir (RUGGIERO; LOPES, 1996).
Assim encerramos uma breve revisão sobre alguns métodos numéricos para encontrar zeros de funções. O que foi visto até então é
uma pequena parte dos muitos métodos que existem para resolução de
problemas. No próximo capítulo abordaremos o uso do software R, que
torna possível a aplicação desses métodos para calcular problemas de
forma mais precisa e eficaz.
35
2 O AMBIENTE R
Neste capítulo apresentaremos algumas informações sobre o R,
como por exemplo, a sua origem, características e o seu uso em computadores e dispositivos móveis, tais como celulares e tablets. Pelo fato do
R ser considerado uma linguagem de programação, serão levantadas algumas vantagens do seu uso na elaboração de rotinas e/ou programas.
Por fim, apresentaremos algumas interfaces do R, entre elas, o RStudio
e o RCommander.
2.1 O SOFTWARE R
O R é uma linguagem e ambiente para computação estatística e gráfica. É um projeto GNU, que é semelhante à linguagem S. O
projeto GNU General Public License (GPL) foi idealizado por Richard
Matthew Stallman em 1989, e baseia-se na premissa de que o autor
detém a patente e em contrapartida permite-se legalmente aos úsuarios
do programa o direito de copiá-lo, distribuí-lo, ou modificá-lo a partir do código-fonte, sob os termos da licença (FERREIRA; CYMROT,
2012).
Foi criado originalmente por Ross Ihaka e por Robert Gentleman na universidade de Auckland, Nova Zelândia, e foi desenvolvido no
Bell Laboratories (antiga AT & T, empresa Lucent Technologies) por
John Chambers e colegas (R CORE TEAM, 2015).
O R é um software gratuito, ou seja, pode ser obtido sem nenhum custo financeiro de direitos autorais. Está disponível diretamente
da Internet a partir da página: http:www.r-project.org. Ele pode ser instalado nos sistemas operacionais Windows, Linux e Mac. Além de um
conjunto de pacotes já incluído com a instalação do R, existem diversos
pacotes acrescentando-lhe assim diversas funcionalidades, indo desde a
36
Capítulo 2. O AMBIENTE R
implementação de métodos específicos de análise estatística, até pacotes
para a criação de interfaces gráficas com o usuário. Estes pacotes estão disponíveis a partir do CRAN (Comprehensive R Archive Network)
que é o conjunto de sites responsável pela locação e distribuição dos
arquivos referentes ao R, desde extensões contribuídas a arquivos de
instalação e documentação (FERREIRA; CYMROT, 2012).
Sua origem é de um software estatístico, mas com atuações de
vários colaboradores, o R passou a ser utilizado para fins mais diversificados (CORDEIRO; ALMEIDA, 2009). Como descreve Vance (2015)
um dos pacotes que o R disponibiliza, chamado BiodiversityR, oferece uma interface gráfica cujo objetivo é realizar com mais facilidade
cálculos de tendências ambientais. Outro pacote, conhecido como Emu,
analisa padrões de fala, enquanto o GenABEL é usado para estudar o
genoma humano.
De acordo com Vance (2015) o que torna o R tão útil é que se
pode melhorar o código de software básico ou escrever variações para
tarefas específicas. Pacotes escritos para a linguagem R acrescentam
algoritmos avançados, gráficos coloridos e técnicas de mineração para
vasculhar bancos de dados mais a fundo. Temos que as principais qualidades que o R apresenta são:
A sua implementação poder ser estendida através de packages adicionais que são continuamente disponibilizados por colaboradores; é
um software gratuito e de livre distribuição;
é permitida a criação e modificação de funções; é usado nas plataformas Windows, Linux, Unix e Macintosh; constantemente surgem versões mais atuais e completas; engloba
várias áreas de conhecimento, tais como a Estatística, Matemática, Matemática Financeira,
Atuária, Economia, etc (CORDEIRO; ALMEIDA, 2009, p.5).
R é constituído por uma janela principal chamada R Console
(Figura 4). O termo console, do inglês “painel de controle”, caracteriza a janela na qual os comandos são inseridos e executados, sendo
37
2.1. O SOFTWARE R
diretamente ou com uso de arquivos scripts (FERREIRA; CYMROT,
2012). Seu intuito é integrar ferramentas gráficas, de cálculo e de análise de dados, em um ambiente de desenvolvimento de programação
(VENABLES; SMITH; R CORE TEAM, 2015).
Figura 4 – Tela inicial do R
Fonte: Produção do próprio autor
A sintaxe do R é similar a linguagens de programação, tais
como C e C++, em características como o manuseio e tratamento de
objetos por meio de funções, uso de bibliotecas de funções pré-definidas
e de programação orientada ao objeto (FERREIRA; CYMROT, 2012).
O termo ambiente pretende caracterizar o R como sendo um
sistema totalmente planejado e coerente, ao contrário de uma aglomeração de ferramentas muito específicas e inflexíveis, e com isso permite
que o usuário acrescente funcionalidade adicional por definição de novas
funções (BEASLEY, 2004).
Outras vantagens que Beasley (2004) julga importante seriam:
a facilidade para manipulação e armagenazem de dados, a inclusão
38
Capítulo 2. O AMBIENTE R
de um conjunto de operadores para cálculos matriciais, uma grande e
coerente coleção integrada de funções para análise de dados e facilidades
gráficas para análise e visualização dos dados, seja na tela ou impressos.
O R possui também outras interfaces, como o RStudio e o R
Commander. O RStudio (Figura 5) é um ambiente de desenvolvimento
integrado (IDE) para R. Ele está disponível em código aberto e edições
comerciais em sistemas operacionais, como Windows, Mac, Linux ou a
partir de um navegador conectado a RStudio Server ou RStudio Server Pro. Pode-se obtê-lo diretamente pela internet a partir da página:
http://rstudio.org/ (RSTUDIO, 2015).
Figura 5 – Interface RStudio
Fonte: Produção do próprio autor
Algumas características que podem ser destacadas da edição
Open Source são: a disponibilidade de várias ferramentas administrativas convenientes e fáceis de usar para gerenciamento de pacotes, o
espaço de trabalho e arquivos, o editor de código-fonte (este é rico em
39
2.1. O SOFTWARE R
recursos e integrado com o built-in console), criação de diferentes projetos com maior rapidez (cuja tela principal é composta por 4 janelas que
inclui um console para sessões interativas de R), um editor de códigofonte (com guias para organizar os arquivos de um projeto) e painéis
com notebooks para organizar componentes menos centrais (VERZANI,
2011).
O RCommander (Figura 6) foi desenvolvido e é mantido por
John Fox, no departamento de Sociologia da Universidade McMaster.
Ele é também uma interface livre e sem custo de aquisição. Está disponível através do pacote Rcmdr, e funciona através de uma interface
gráfica orientada por menus, tornando-se assim um ambiente atraente
principalmente para uso introdutório ou quando se utiliza com pouca
frequência este tipo de software (FOX, 2005).
Figura 6 – Interface R Commander
Fonte: Produção do próprio autor
40
Capítulo 2. O AMBIENTE R
O RCommander GUI está disponível diretamente pelo R através do menu Pacotes/Instalar pacote(s). Depois é necessário escolher o
local de onde será realizado o download e selecionar o pacote Rcmdr.
Após a intalação, para se acessar o R Commander é necessário carregar
o pacote Rcmdr digitando-se library(Rcmdr) ou require(Rcmdr) na
tela principal do R.
2.2 O R EM DISPOSITIVOS MÓVEIS
Atualmente é possível obter o R para alguns dispositivos móveis, como celulares e tablets para os sistemas operacionais Android e
IOS (Figura 7).
Figura 7 – Tela inicial e de compilação do R em IOS
Fonte: Kovba (2015)
2.2. O R EM DISPOSITIVOS MÓVEIS
41
Algumas das principais características que podem ser listadas,
de acordo com Kovba (2015), é a possibilidade de compilar e executar
o seu programa, a entrada de texto antes de execução do programa e
produção de texto, teclado adicional, linhas numeradas, temas de cores, e referência da linguagem online e vários programas simples para
testar. Porém, existem algumas limitações como, é preciso que o aparelho esteja conectado a internet para compilar e executar o programa;
gráficos, redes, sistemas de arquivos de entrada em tempo real não são
suportados ainda; o tempo máximo para se executar o programa ainda
é de 15 segundos e a plotagem ainda não é suportada.
O R para o sistema operacional Android (Figura 8) pode ser
obtido seguindo alguns passos para a sua instalação. Pensamos em dispor o processo de instalação, por motivos de ser um dos sistemas muito
utilizado em dispositivos móveis, sendo assim, os passos para instalação
serão dados a seguir (TALES OF R, 2015):
1- Instalar o GNURoot do Google Play
2- Instalar o Gnuroot Wheezy do Google Play
3- Atualizar os repositórios de pacotes:
apt-get update e apt-get upgrade
4- Bloquear atualizações para o sistema Perl:
apt-mark hold perl-base
5- Instalar o R:
apt-get install r-base
6- Instalar todos os pacotes CRAN disponíveis nos repositórios do Debian:
apt-get install r-cran*
7- Começar o R a partir da linha de comando: R
42
Capítulo 2. O AMBIENTE R
Figura 8 – Tela inicial do R no Android
Fonte: https://talesofr.wordpress.com/tag/r-console-free/
Os seguintes sites apresentam instruções de instalação, de modo
que ajude o acadêmico durante o processo.
https://talesofr.wordpress.com/tag/r-console-free/
http://www.r-ohjelmointi.org/?p=1434
Após conhecermos um pouco sobre o R, as suas qualidades e
defeitos, e sua possibiidade de uso em dispositivos móveis, veremos no
próximo capítulo um pouco do ensino de Cálculo Numérico. Em seguida
veremos de que forma o uso do R poderia beneficiar alunos e professores
no ensino dessa disciplina.
43
3 O ENSINO DE CÁLCULO NUMÉRICO
Neste capítulo iremos falar brevemente sobre o ensino de Cálculo Numérico. Inicialmente um pouco de história e depois apresentamos a sua importância e ligação com o uso de computadores, utilizandose assim de alguns softwares. Entre eles optou-se pela apresentação de
softwares Open Source por serem softwares gratuitos.
3.1 HISTÓRIA, ENSINO E APLICAÇÕES
A maioria dos métodos numéricos foram desenvolvidos e utilizados há centenas e até mesmo há milhares de anos. No entanto, a implementação era difícil, pois todos os cálculos eram realizados de forma
manual ou através de dispositivos mecânicos simples (Figura 9). Mas
isto limitava a quantidade de cálculos a serem realizados, prejudicando
assim, a precisão da solução (MOTA, 2011). Contudo, atualmente, os
métodos numéricos são utilizados em computadores rápidos e eficientes,
possibilitando a execução de um grande número de cálculos repetitivos
em um curto espaço de tempo, produzindo assim soluções precisas e
confiáveis (SANTOS, 2004).
De acordo com Amaral, Leite e Silva (2013) a implementação
de várias técnicas numéricas também se modernizou, tornando mais
simples os algoritmos e consequentemente os códigos, e com isso o domínio destas técnicas numéricas é essencial para matemáticos, físicos e
engenheiros.
44
Capítulo 3. O ENSINO DE CÁLCULO NUMÉRICO
Figura 9 – Máquina Diferencial
Fonte: http://histinf.blogs.upv.es/2010/10/28/charles-babbage/
No ensino de Cálculo Numérico percebem-se algumas dificuldades de aprendizagem, pois elas surgem da deficiência no ensino da Matemática que são vivenciadas por alunos desde a educação básica até a
educação superior (NOTARE; BEHAR, 2009). Desta forma, precisa-se
ajudar os estudantes a construírem estratégias de aprendizagem própria. No caso específico de Cálculo Numérico o computador deve exercer
um papel fundamental para auxiliar os estudantes no auto aprendizado
do conteúdo (RAMOS; ARAUJO; OLIVEIRA, 2008). Entretanto, segundo Denardi et al (2004, p. 2)
O computador não deve ser inserido na educação como uma “máquina de ensinar”, como
sequência de instruções programadas (informatização instrucionista), mas sim como uma
“informatização construcionista” que permita
a reflexão e construção de idéias a partir da relação professor, computador, aluno e conhecimento. Deve-se levar em conta que o computador não é o principal referencial do processo de
ensino-aprendizagem, mas serve apenas como
uma ferramenta auxiliar.
3.1. HISTÓRIA, ENSINO E APLICAÇÕES
45
Tem sempre existido uma relação muito próxima entre a matemática de um lado e a ciência e tecnologia do outro. Algumas de suas
áreas surgiram e foram desenvolvidas na tentativa, em algumas vezes
até frustrada, de solucionar problemas reais, ou seja, aqueles relacionados com alguma situação prática. (RAMOS; ARAUJO; OLIVEIRA,
2008). Em relação ao ensino de Cálculo Numérico, as ferramentas computacionais, softwares computacionais aplicados, possibilitam o seu ensino de maneira inovadora. Segundo Bassanezi (2002, p. 57)
[...] elas constituem um meio educacional auxiliar para apoiar a aprendizagem dos alunos
e permitem criar situações de aprendizagem
estimulante. É outra maneira de buscar e viabilizar a construção do conhecimento, de maneira mais autônoma e independente, em um
novo ambiente, onde os movimentos e as interações são diferentes e obedecem a modelos.
Além disso, abrem um novo leque de possibilidades em função das inúmeras simulações que
podem ser realizadas e dos questionamentos
que podem ser estabelecidos.
Existem atualmente diversas linguagens de programação disponíveis no mercado, com o objetivo de desenvolver aplicativos, sendo
algumas pagas e outras gratuitas. Já pela própria característica da disciplina tem-se a necessidade de se programar. Então, de acordo com
Cano e Ospina (2008), a utilização de softwares proprietários tem se
mostrado muito custosa, principalmente para instituições educacionais
e governamentais. As licenças geralmente são vendidas por máquina,
aumentando ainda mais os custos para utilização de softwares deste
tipo. Logo, algumas alternativas de softwares gratuito seriam o Scilab,
o Octave e o R. Tanto o R como os outros dois softwares citados acima
podem ser obtidos a partir de download pela internet e em dispositivos
móveis.
A utilização do R para o ensino, em alguns casos pode ser frustante, pois “pelo fato do R se tratar de uma linguagem de programação, alguns autores mencionam que é relativamente difícil de aprender a
46
Capítulo 3. O ENSINO DE CÁLCULO NUMÉRICO
utilizá-lo, principalmente a nível introdutório” (WALTER et al, 2012).
Portanto, é preciso que o aluno tenha alguns conhecimentos prévios de
programação, onde já existe em grande parte dos cursos de graduação uma disciplina específica com esta finalidade. Mas o R poderia se
apresentar mais "amigável", como na disciplina de Cálculo Numérico.
Com a utilização das funções pré-definidas e as que podem ser
elaboradas no R o aluno é capaz de interagir com o software. Este processo interativo, segundo Amaral, Leite e Silva (2013) coloca os alunos
como sujeitos participantes do processo de ensino, trazendo uma efetiva participação e desenvolvimento da autonomia por meio do trabalho
com o conhecimento.
O acesso a um pacote computacional como o R, permite que
o aluno possa testar rapidamente várias possibilidades de métodos, a
observação gráfica imediata dos resultados e a interface com outras linguagens (CUNHA, 2003). Com o software é também possível trabalhar
com aplicações, ou seja, problemas reais nas áreas de Engenharia, Matemática Financeira, Probabilidade e Estatística, Física, entre outras.
Assim sendo, o processo de modelagem matemática (Figura 10)
para resolver problemas reais pode ser visto pelas seguintes etapas:
Figura 10 – Processo de Modelagem Matemática
Fonte: Ramos, Araujo e Oliveira (2008)
As aplicações em cálculo numérico são largamente utilizadas em diversos processos da
engenharia. Sua utilização vai desde aplicações para determinação de raízes de equações,
passando por interpolação de valores tabela-
3.1. HISTÓRIA, ENSINO E APLICAÇÕES
47
dos, equações diferenciais parciais ou ordinárias até integração numérica entre outros. Desta forma, torna-se cada vez mais comum a necessidade de programarem-se tais aplicações
para a resolução de problemas do cotidiano do
profissional da área de engenharia (RAMOS;
ARAUJO; OLIVEIRA, 2008, p. 3).
Para resolvermos problemas utilizando processos numéricos, é
importante conhecermos os conceitos fundamentais envolvidos. Em geral os métodos numéricos para solução de problemas fazem uso de repetições do mesmo processo até que se chegue a uma solução considerada
adequada ao problema, com base em uma condição de parada, que pode
ser o número máximo de repetições ou a diferença entre a solução obtida e a anterior ser menor que a condição de erro. Os métodos, por
utilizarem a mesma simulação repetidas vezes com os dados, podem ser
implementados computacionalmente, auxiliando e acelerando a busca
pela solução aproximada de um dado problema (ROMIO; SOARES,
2013).
É pertinente observar que cada um desses métodos possui limitações, e o mais importante é que a partir da evolução das iterações, ou
seja, dos resultados obtidos, cabe ao aluno analisar as saídas de dados
a fim de verificar se os mesmos fazem sentido (RUGGIERO; LOPES,
1996).
No próximo capítulo veremos como pode ser aplicado o R no
ensino de zeros de funções. Tudo que foi visto até agora será utilizado
para a elaboração das rotinas e a exploração de alguns pacotes.
49
4 ROTINAS E PACOTES NO R
Neste capítulo serão apresentadas algumas rotinas elaboradas
no R, que correspondem a uma entre várias propostas, afim de se desenvolver um determinado método computacionalmente. Também se
fará uso de exemplos para demonstrar o funcionamento de cada rotina.
Além disso, serão apresentados alguns pacotes que o R disponibiliza,
como por exemplo, o pacote animation que cria gráficos animados.
4.1 ALGUMAS ROTINAS NO R
Como foi visto no primeiro capítulo, para se obter os zeros de
uma função, ou seja, as raízes de uma equação, pode-se fazer uso de algum daqueles métodos apresentados. O primeiro método apresentado
aqui, será o Método da Bisseção. Apresentaremos inicialmente o seu
algoritmo dado pelo Quadro 4.1 e em sequência a rotina de própria autoria. As rotinas aqui presentes podem ser escritas na forma de funções,
similar ao que é realizado com o pacote comercial MATLAB.
Quadro 4.1: Algoritmo do Método da Bisseção
Algoritmo do Método da Bisseção
Dados f (x), a e b tais que f (a)f (b) < 0, max, tol
1) Para k = 0 : max, faça
a+b
2) x =
2
3) Se f (a)f (x) < 0 então
4)
b=x
5) Caso contrário
6)
a=x
b−a
7) Se |b − a| < tol então x∗ =
, pare
2
Fonte: Adaptado de Cunha (2003)
50
Capítulo 4. ROTINAS E PACOTES NO R
> bissec <- function(fx,a,b,tol){
if(fx(a)*fx(b)>0)
cat("Por favor entre com um outro intervalo [a,b]
ou troque de função\n")
else{
x <- 0
i <- 0
while(abs(b-a)>tol){
i <- i + 1
x=(a+b)/2
if(fx(a)*fx(x)<0)
b=x
else
a=x
cat("Iteração:",i,"\n")
cat("Raiz:",x,"\n\n")
}
}
}
A partir da rotina acima teremos os argumentos de entrada,
a saber: a função definida como fx, o intervalo [a, b], sendo o ponto
inicial dado por a e o ponto final por b, e o erro, ou seja, a precisão
a ser considerada no momento de se encontrar a melhor aproximação
para a raiz, definida como tol. Além disso, temos a hipótese que se
fx(a)*fx(b)>0, será preciso que o usuário entre com um novo intervalo
ou função, caso contrário, teremos o valor da raiz aproximada.
Como critério de parada foi utilizado o segundo critério citado
no capítulo 1, como sendo: |xk+1 − xk | < ε. A partir dele teremos os
argumentos de saída a saber: o valor da iteração, identificado como i e
o valor aproximado da raiz como sendo o x.
Para que seja observado o funcionamento da rotina foi utilizado
um exemplo extraído de Ruggiero e Lopes (1996, p. 44), dado a seguir,
51
4.1. ALGUMAS ROTINAS NO R
onde a cada iteração tem-se um novo valor aproximado para a raiz.
Exemplo 4.1. Seja a função f (x) = x3 − 9x + 3 no intervalo [0, 1] e
com erro ε = 10−4 .
> fx=function(x) x^3-9*x+3
> bissec(fx,a=0,b=1,tol=10^-4)
Iteração: 1
Iteração: 8
Raiz: 0.5
Raiz: 0.3398438
Iteração: 2
Iteração: 9
Raiz: 0.25
Raiz: 0.3378906
Iteração: 3
Raiz: 0.375
Iteração: 10
Raiz: 0.3369141
Iteração: 4
Iteração: 11
Raiz: 0.3125
Raiz: 0.3374023
Iteração: 5
Raiz: 0.34375
Iteração: 12
Raiz: 0.3376465
Iteração: 6
Iteração: 13
Raiz: 0.328125
Raiz: 0.3375244
Iteração: 7
Iteração: 14
Raiz: 0.3359375
Raiz: 0.3375854
Observamos que após algumas iterações o valor aproximado da
raiz estará entre 0, 3375 e 0, 3376. Logo, este também é um indicio, de
que podemos parar com o processo.
Em seguida está a rotina do método da Falsa Posição, que também deve satisfazer a hipótese f (a)f (b) < 0. Inicialmente será apresen-
52
Capítulo 4. ROTINAS E PACOTES NO R
tado o algoritmo dado pelo Quadro 4.2, e em sequência a rotina de
própria autoria.
Quadro 4.2: Algoritmo do Método da Falsa Posição
Algoritmo do Método da Falsa Posição
Dados f (x), a e b tais que f (a)f (b) < 0, ε1 e ε2
1) Se (b − a) < ε1 então escolha para xk qualquer xk ∈ [a, b]. FIM
Se |f (a)| < ε2 ou se |f (b)| < ε2 , escolha a ou b como xk . FIM
2)
k=1
3)
M = f (a)
a|f (b)| + b|f (a)|
af (b) − bf (a)
4)
xk =
=
|f (b)| + |f (a)|
f (b) − f (a)
5) Se |f (x)| < ε2 , escolha xk+1 = xk . FIM
6) Se M f (x) > 0, faça a = x. Vá para o passo 8
7)
b=x
8) Se (b − a) < ε1 , então escolha para xk+1 qualquer xk ∈ [a, b]. FIM
9)
k = k + 1. Volte ao passo 4
Fonte: Adaptado de Ruggiero e Lopes (1996)
> FP <- function(fx,a,b,tol){
if(fx(a)*fx(b)>0)
cat("Por favor entre com um outro intervalo [a,b]
ou troque de função\n")
else{
x <- 0
i <- 0
while(abs(fx(x))>tol){
i <- i + 1
x=(a*fx(b)-b*fx(a))/(fx(b)-fx(a))
if(fx(a)*fx(x)<0)
b=x
else
a=x
cat("Iteração:",i,"\n")
cat("Raiz:",x,"\n\n")
}
53
4.1. ALGUMAS ROTINAS NO R
}
}
A partir da rotina acima teremos os argumentos de entrada,
a saber: a função definida como fx, o intervalo [a, b], sendo o ponto
inicial dado por a e o ponto final por b, e o erro, ou seja, a precisão
a ser considerada no momento de se encontrar a melhor aproximação
para a raiz, definida como tol. Para o caso da hipótese, teremos a
mesma condição vista na rotina para o método da Bisseção.
Como critério de parada foi utilizado o primeiro critério citado
no capítulo 1, como sendo: |f (xk )| < ε. A partir dele teremos os argumentos de saída que serão: o valor da iteração, identificado como i e o
valor aproximado da raiz como sendo o x.
Para que seja observado o funcionamento da rotina foi utilizado
um exemplo adaptado de Cunha (2003, p. 75).
Exemplo 4.2. Seja a função f (x) = x2 − 2 no intervalo [1, 2] e com
erro ε = 10−4 .
> fx=function(x) x^2-2
> FP(fx,a=1,b=2,tol=10^-4)
Iteração: 1
Iteração: 4
Raiz: 1.333333
Raiz: 1.413793
Iteração: 2
Raiz: 1.4
Iteração: 5
Raiz: 1.414141
Iteração: 3
Raiz: 1.411765
Iteração: 6
Raiz: 1.414201
Como contra-exemplo, temos a função f (x) = xsin(x) − x no
intervalo [1, 2] de própria autoria. Neste caso não é possível utilizar o
54
Capítulo 4. ROTINAS E PACOTES NO R
método da Bisseção nem o da Falsa Posição, pois contraria a hipótese
em que f (a)f (b) < 0. Logo, o resultado obtido é dado da seguinte
maneira:
> fx=function(x) x*sin(x)-x
> bissec(fx,1,2,tol=10^-4)
Por favor entre com um outro intervalo [a,b] ou troque
de função
e
> fx=function(x) x*sin(x)-x
> FP(fx,1,2,tol=10^-4)
Por favor entre com um outro intervalo [a,b] ou troque
de função
Agora, será apresentado o algoritmo do método do Ponto Fixo
dado pelo Quadro 4.3, e em sequência a rotina de própria autoria.
Quadro 4.3: Algoritmo do Método do Ponto Fixo
Algoritmo do Método do Ponto Fixo
Dados f (x) = 0, x = ϕ(x), x0 , ε1 e ε2
1) Se |f (x0 )| < ε1 , faça x = x0 . FIM
2)
k=1
3)
x1 = ϕ(x0 )
4) Se |f (x1 )| < ε1 ou se |x1 − x0 | < ε2 , então faça x = x1 . FIM
5)
x0 = x1
6)
k = k + 1, volte ao passo 3
Fonte: Adaptado de Ruggiero e Lopes (1996)
> iteracao <- function(fx,x,tol){
i <- 0
y <- 0
y <- fx(x)
55
4.1. ALGUMAS ROTINAS NO R
i <- i + 1
cat("\nIteração:",i,"\n")
cat("\nRaiz:",y,"\n")
while(abs(fx(y)-fx(x))>tol){
i <- i + 1
x <- y
y <- fx(x)
cat("\nIteração:",i,"\n")
cat("\nRaiz:",y,"\n")
}
}
A partir da rotina acima teremos os argumentos de entrada, a
saber: a função definida aqui como fx, que será a nossa função equivalente, o x como sendo o ponto inicial e o erro, ou seja, a precisão a ser
considerada no momento de se encontrar a melhor aproximação para a
raiz, definida como tol.
Como critério de parada foi utilizado o segundo critério citado
no capítulo 1, como sendo: |xk+1 − xk | < ε. A partir dele teremos os
argumentos de saída, a saber: o valor da iteração, identificado como i
e o valor aproximado da raiz agora como sendo o y.
Para que seja observado o funcionamento da rotina foi utilizado
um exemplo extraído de Ruggiero e Lopes (1996, p. 79), dado a seguir,
onde a cada iteração tem-se um novo valor aproximado para a raiz.
2
Exemplo 4.3. Seja a função f (x) = e−x − cos(x), onde a sua função
2
equivalente é ϕ(x) = cos(x)−e−x +x, com aproximação inicial x0 = 1.5
e erro ε = 10−4 .
> fx=function(x) cos(x)-exp(-x^2)+x
> iterativo(fx,x0=1.5,tol=10^-4)
Iteração: 1
Iteração: 4
56
Capítulo 4. ROTINAS E PACOTES NO R
Raiz: 1.465338
Raiz: 1.44825
Iteração: 2
Raiz: 1.453792
Iteração: 5
Raiz: 1.447718
Iteração: 3
Iteração: 6
Raiz: 1.449717
Raiz: 1.447525
O método de Newton-Raphson e o da Secante serão implementados pelas rotinas a seguir. Inicialmente, temos o algoritmo dado pelo
Quadro 4.4, em sequência a rotina para o método de Newton-Raphson
de própria autoria que utiliza, além da função f (x), a sua derivada
f ′ (x) para calcular a raiz.
Quadro 4.4: Algoritmo do Método de Newton-Raphson
Algoritmo do Método de Newton-Raphson
Dados x0 , f (x), f ′ (x), ǫ1 e/ou ǫ2
1) Para k = 1, 2, . . ., faça
f (xk−1 )
2) xk = xk−1 − ′
f (xk−1 )
3) Se |f (xk )| < ǫ1 então x∗ = xk
4) ou . . .
5) Se |xk − xk−1 | < ǫ2 então x∗ = xk
Fonte: Adaptado de Cunha (2003)
> NewtonRaphson <- function (fx,dfx,x0,tol){
x <- x0
y <- 0
i <- 0
while (abs(y - x) > tol){
i <- i + 1
y <- x
x=x-fx(x)/dfx(x)
cat("Iteração:",i,"\n")
57
4.1. ALGUMAS ROTINAS NO R
cat("Raiz:",x,"\n\n")
}
}
Na rotina acima teremos os argumentos de entrada, a saber: a
função definida como fx, a derivada da função como sendo dfx, o ponto
inicial dado por x0 e o erro, ou seja, a precisão a ser considerada no
momento de se encontrar a melhor aproximação para a raiz, definida
como tol.
Como critério de parada foi utilizado o segundo critério citado
no capítulo 1, como sendo: |xk+1 − xk | < ε. Os argumentos de saída
são: o valor da iteração, identificado como i e o valor aproximado da
raiz como sendo o x.
Para que seja observado o funcionamento da rotina foi utilizado
um exemplo extraído de Ruggiero e Lopes (1996, p. 80), dado a seguir,
onde a cada iteração tem-se um novo valor aproximado para a raiz.
Exemplo 4.4. Seja a função f (x) = 4sin(x)−ex , onde a sua derivada é
f ′ (x) = 4cos(x)−ex , com aproximação inicial x0 = 0, 5 e erro ε = 10−5 .
> fx=function(x) 4*sin(x)-exp(x)
> dfx=function(x) 4*cos(x)-exp(x)
> NewtonRaphson(fx,dfx,x0=0.5,tol=10^-5)
Iteração: 1
Raiz: 0.3555116
Iteração: 3
Raiz: 0.3705581
Iteração: 2
Iteração: 4
Raiz: 0.3704195
Raiz: 0.3705581
Já para o método da Secante o algoritmo é dado pelo Quadro
4.5, e em sequência a rotina de própria autoria.
58
Capítulo 4. ROTINAS E PACOTES NO R
Quadro 4.5: Algoritmo do Método da Secante
Algoritmo do Método da Secante
Dados x0 , x1 , f (x), ǫ1 e/ou ǫ2
1) Para k = 1, 2, . . ., faça
xk−1 f (xk ) − xk f (xk−1 )
2) xk+1 =
f (xk ) − f (xk−1 )
3) Se |f (xk+1 )| < ǫ1 então x∗ = xk+1
4) ou . . .
5) Se |xk+1 − xk | < ǫ2 então x∗ = xk+1
Fonte: Adaptado de Cunha (2003)
> secante <- function (fx,x0,x1,tol){
y <- x0
z <- x1
i <- 0
while(abs(z - y) > tol){
i <- i + 1
x=(z*fx(y)-y*fx(z))/(fx(y)-fx(z))
y <- z
z <- x
cat("Iteração:",i,"\n")
cat("Raiz:",x,"\n\n")
}
}
Utilizando a rotina acima teremos os argumentos de entrada, a
saber: a função definida como fx, o ponto inicial dado por x0, o ponto
final por x1 do intervalo e o erro, ou seja, a precisão a ser considerada
no momento de se encontrar a melhor aproximação para a raiz, definida
como tol.
Como critério de parada foi utilizado o segundo critério citado
no capítulo 1, como sendo: |xk+1 − xk | < ε. Em seguida teremos os
respectivos argumentos de saída: i, como sendo o valor da iteração e o
x, como sendo o valor aproximado da raiz.
59
4.2. ALGUNS PACOTES DO R
Exemplo 4.5. Aqui será utilizado o mesmo exemplo que foi aplicado
anteriormente. Logo, temos a seguinte resposta:
> fx=function(x) 4*sin(x)-exp(x)
> secante(fx,x0=0,x1=1,tol=10^-5)
Iteração: 1
Iteração: 5
Raiz: 0.6069427
Raiz: 0.3699253
Iteração: 2
Raiz: -0.2665185
Iteração: 6
Raiz: 0.3705638
Iteração: 3
Iteração: 7
Raiz: 0.4347982
Raiz: 0.3705581
Iteração: 4
Raiz: 0.3846066
A partir dos dois resultados é possível observar, que para se
obter a raíz aproximada da função f (x) = 4sin(x) − ex pelo método
da Secante houve três iterações a mais que pelo método de NewtonRaphson. Portanto, em casos assim o aluno possui condições de avaliar
o comportamento dos diferentes métodos.
Vimos nesta seção que não houve muita dificuldade em construir e aplicar as rotinas aqui elaboradas. Para o acadêmico, a construção desses programas é importante para a fixação dos conteúdos.
4.2 ALGUNS PACOTES DO R
Como foi visto no Capítulo 2, o R possui inúmeros pacotes
(packages). Entre estes pacotes, que serão vistos nesta seção, estão o
pracma (BORCHERS, 2015), o spuRs (OWEN, 2014) e o rootSolve
(SOETAERT, 2009), que possuem funções para calcular zeros de fun-
60
Capítulo 4. ROTINAS E PACOTES NO R
ções. Para se obter um desses pacotes é preciso que se utilize a função
install.packages("nomedopacote"), onde o nome do pacote deve
estar entre aspas. Para que se utilize o pacote é preciso usar a função
library(nomedopacote), já este sem aspas.
Um dos primeiros pacotes mencionados acima, abaixo esplanado, será o pacote pracma. Segundo Borchers (2015) o pacote oferece
implementações de funções mais avançadas em análise numérica, com
uma visão especial sobre a otimização e rotinas para análises de séries
temporais. Algumas dessas implementações são o resultado de cursos de
Computação Científica e destinam-se principalmente para demonstrar
como implementar certos algoritmos em linguagem R ou S.
O pacote pracma possui várias funções de todas as áreas de
análise numérica, como por exemplo, determinação de raiz pelos métodos de Newton, Newton-Raphson e Secante, interpolação, aproximação
de funções, diferenciação, integração numérica, solucionadores de equações e sistemas diferenciais ordinárias (BORCHERS, 2015). As funções que aqui serão mostradas são a newtonRaphson() e a secant()
para os métodos de Newton-Raphson e da Secante. Aplicando a função
f (x) = 4sin(x) − ex , do exemplo 4.4, a cada uma delas obtemos os
seguintes resultados:
> newtonRaphson(fx,0.5)
> secant(fx,0,1)
$root
[1] 0.3705581
$root
[1] 0.3705581
$f.root
$f.root
[1] 0
[1] 5.26049e-09
$iter
[1] 4
$iter
[1] 7
$estim.prec
$estim.prec
61
4.2. ALGUNS PACOTES DO R
[1] 1.220853e-08
[1] 1.148128e-05
Logo, as funções nos retornarão uma lista com: root, que é a
raiz; f.root, que é o valor aproximado da raiz aplicada a função; iter, o
número de iterações e estim.prec, a estimativa de precisão.
O próximo pacote que será visto é o spuRs. Este pacote possui os scripts, funções e conjuntos de dados para o livro Introduction
to Scientific Programming and Simulation Using R. Entre as principais funções que o pacote possui estão: bisection(), fixedpoint(),
fixedpoint_show(),
(OWEN et al, 2014).
newtonraphson() e
newtonraphson_show()
Com este pacote é possível calcular a raiz de uma função pelos
métodos da Bisseção (bisection()), do Ponto Fixo (fixedpoint())
e de Newton-Raphson (newtonraphson()). Utilizando um exemplo extraído de Sperandio, Mendes e Silva (2003, p. 24) e aplicando a essas
funções, obtemos os seguintes resultados.
Exemplo 4.6. Seja a função f (x) = ln(x) − x + 2, onde a sua função
equivalente é ϕ(x) = ln(x) + 2, com intervalo [3, 4], x0 = 3, 3 e erro
ε = 10−5 .
Para o Método da Bisseção, temos os seguintes resultados:
> ftn=function(x) log(x)-x+2
> bisection(ftn,3,4,10^-5)
at iteration 1 the root lies between 3 and 3.5
at iteration 2 the root lies between 3 and 3.25
at iteration 3 the root lies between 3.125 and 3.25
at iteration 4 the root lies between 3.125 and 3.1875
at iteration 5 the root lies between 3.125 and 3.15625
at iteration 6 the root lies between 3.140625 and 3.15625
at iteration 7 the root lies between 3.140625 and 3.148438
62
Capítulo 4. ROTINAS E PACOTES NO R
at iteration 8 the root lies between 3.144531 and 3.148438
at iteration 9 the root lies between 3.144531 and 3.146484
at iteration 10 the root lies between 3.145508 and 3.146484
at iteration 11 the root lies between 3.145996 and 3.146484
at iteration 12 the root lies between 3.145996 and 3.14624
at iteration 13 the root lies between 3.146118 and 3.14624
at iteration 14 the root lies between 3.146179 and 3.14624
at iteration 15 the root lies between 3.146179 and 3.14621
at iteration 16 the root lies between 3.146179 and 3.146194
at iteration 17 the root lies between 3.146187 and 3.146194
[1] 3.146191
Já para o Método do Ponto Fixo, os resultados são os seguintes :
> ftn1=function(x) log(x)+2
> fixedpoint(ftn1,3.3,10^-6)
At iteration 1 value of x is: 3.193922
At iteration 2 value of x is: 3.16125
At iteration 3 value of x is: 3.150967
At iteration 4 value of x is: 3.14771
At iteration 5 value of x is: 3.146675
At iteration 6 value of x is: 3.146346
At iteration 7 value of x is: 3.146242
At iteration 8 value of x is: 3.146209
At iteration 9 value of x is: 3.146198
At iteration 10 value of x is: 3.146195
At iteration 11 value of x is: 3.146194
At iteration 12 value of x is: 3.146193
Algorithm converged
[1] 3.146193
Por último, para o Método de Newton-Raphson, temos os resultados a
seguir:
4.2. ALGUNS PACOTES DO R
63
> ftn2 <- function(x) {
fx <- log(x)-x+2
dfx <- 1/x - 1
return(c(fx, dfx))
}
> newtonraphson(ftn2,3.3,10^-5)
At iteration 1 value of x is: 3.147802
At iteration 2 value of x is: 3.146193
Algorithm converged
[1] 3.146193
A partir deste exemplo, observa-se que pela função bisection()
foram necessárias 17 iterações para se obter a raiz aproximada 3,146191.
Já pela função fixedpoint() foram necessárias 12 iterações para se
obter a raiz aproximada 3,146193. Por último, utilizando a função
newtonraphson() foram necessárias somente de duas iterações para
se obter a raiz aproximada 3,146193. Conclui-se então, que a partir do
Método de Newton-Raphson, neste caso, foi preciso de um número pequeno de iterações para encontrar uma raiz que se aproximasse da raiz
real, ou seja, que convirja para a solução. Logo, por meio destas funções o aluno pode ter subsídios para compreender as diferenças entre
os métodos.
As funções fixedpoint_show() e newtonraphson_show() que
além de apresentarem o valor da raiz aproximada, elas mostram o gráfico da função no intervalo (x0 − 1, x0 + 1). A cada iteração as funções
encontram o valor da raiz aproximada naquele instante. As Figuras 11
e 12 ilustram o funcionamento destes métodos. Utilizando o exemplo
4.6, obtemos os seguintes resultados:
> fixedpoint_show(ftn1,3.3)
last x value 3.193922 continue (y or n)? y
last x value 3.16125 continue (y or n)? y
64
Capítulo 4. ROTINAS E PACOTES NO R
last x value 3.150967
last x value 3.14771
continue (y or n)? y
continue (y or n)? y
last x value 3.146675
last x value 3.146346
continue (y or n)? y
continue (y or n)? y
last x value 3.146242
last x value 3.146209
continue (y or n)? y
continue (y or n)? y
last x value 3.146198
last x value 3.146195
continue (y or n)? y
continue (y or n)? y
last x value 3.146194
last x value 3.146193
continue (y or n)? y
continue (y or n)? n
[1] 3.146193
Figura 11 – Gráfico da função ϕ(x) = ln(x) + 2
Fonte: Produção do próprio autor
> newtonraphson_show(ftn2,3.3)
last x value 3.147802 continue (y or n)? y
4.2. ALGUNS PACOTES DO R
last x value 3.146193
continue (y or n)? y
last x value 3.146193
continue (y or n)? n
65
[1] 3.146193
Figura 12 – Gráfico da função f (x) = ln(x) − x + 2
Fonte: Produção do próprio autor
Com o uso dessas duas funções permite que o acadêmico visualize o processo de aproximação da raiz, pelo método da Iteração
Linear e pelo método de Newton-Raphson. Para isto, é preciso que seja
digitado (y) para sim ou (n) para não, para que a cada iteração se chegue mais próximo da raiz. Com isso, o acadêmico tem a possibilidade
de iteragir com o software durante todo o processo e de compreender
graficamente cada um dos métodos. Como por exemplo, o método de
Newton-Raphson que utiliza retas tangentes à curva a cada iteração.
Já o pacote rootSolve, de acordo com Soetaert (2009) serve a
vários propósitos, como por exemplo, para encontrar a raiz de funções
66
Capítulo 4. ROTINAS E PACOTES NO R
não-lineares, inclui funções para encontrar o estado estacionário de sistemas de equações diferenciais ordinárias (EDO) e equações diferenciais
parciais (EDP) e inclui funções para calcular numericamente matrizes
gradiente. Este pacote foi criado para resolver os exemplos de análise
de estado estacionário e estabilidade encontrados no livro de Soetaert
e Herman (2009).
O pacote inclui algoritmos para localização de raiz, com o proposito de resolver raízes de equações não-lineares, utilizando o método
de Newton-Raphson (SOETAERT, 2009). Logo, a função uniroot()
é utilizada para encontrar uma raiz de uma equação. Já a função
uniroot.all(), uma simples extensão da função uniroot(), permite
encontrar todas as raízes em um dado intervalo.
O exemplo extraído de Ribeiro (2012, p. 48), dado a seguir,
ilustra o funcionamento da função uniroot().
Exemplo 4.7. Seja a função f (x) = xsin(x) + 4, com intervalo [1, 5]
e erro ε = 10− 6)
A Figura 13 ilustra a presença de uma raiz da função f (x) no
intervalo dado. A raiz foi obtida a partir dos comandos abaixo citado. O
comando curve() apresenta o comportamento da função em um dado
intervalo, já o abline() traça uma linha, neste caso na origem, e o
comando point() desenha um ponto na interseção entre a função e o
eixo das abcissas, ou seja, onde está a raiz da função.
> fun <- function (x) x*sin(x)+4
> curve(fun(x), 1, 5, col = 4)
> abline(h = 0, lty = 3)
> uni <- uniroot(fun, c(1,5))$root
> points(uni, 0, pch = 16, cex = 2, col=2)
4.2. ALGUNS PACOTES DO R
67
Figura 13 – Gráfico da função f (x) = xsin(x) + 4
Fonte: Produção do próprio autor
A partir do comando abaixo se obtém o valor numérico da raiz
aproximada.
> uniroot(function(x) x*sin(x)+4, lower = 1, upper = 5,
tol = 10^-6)$root
[1] 4.32324
O próximo exemplo, este extraído de Soetaert e Herman (2009,
p. 2), iustra o funcionamento da função uniroot.all().
Exemplo 4.8. Seja a função f (x) = cos3 (2x), com intervalo [0, 10] e
erro ε = 10− 6)
A Figura 14 ilustra a presença de todas as raízes da função
f (x) no intervalo [0, 10]. As raízes foram obtidas utilizando os comandos
68
Capítulo 4. ROTINAS E PACOTES NO R
acima citados. Em seguida tem-se o valor aproximado das raízes que
estão dentro do intervalo [0, 10]
Figura 14 – Gráfico da função f (x) = cos3 (2x)
Fonte: Produção do próprio autor
> fun <- function (x) cos(2*x)^3
> curve(fun(x), 0, 10, col = 4)
> abline(h = 0, lty = 3)
> All <- uniroot.all(fun, c(0, 10))
> points(All, y = rep(0, length(All)), pch = 16,
cex = 2, col = 2)
> uniroot(function(x) cos(2*x)^3, lower = 0, upper = 2,
tol = 10^-6)$root
[1] 0.7853981
> uniroot(function(x) cos(2*x)^3, lower = 2, upper = 3,
4.2. ALGUNS PACOTES DO R
69
tol = 10^-6)$root
[1] 2.356194
> uniroot(function(x) cos(2*x)^3, lower = 3, upper = 5,
tol = 10^-6)$root
[1] 3.926991
> uniroot(function(x) cos(2*x)^3, lower = 4, upper = 6,
tol = 10^-6)$root
[1] 5.497787
> uniroot(function(x) cos(2*x)^3, lower = 6, upper = 8,
tol = 10^-6)$root
[1] 7.068583
> uniroot(function(x) cos(2*x)^3, lower = 8, upper = 10,
tol = 10^-6)$root
[1] 8.63938
Também é importante citar que é possível visualizar a rotina
desenvolvida para cada função que foi aqui utilizada. Deve-se digitar o
nome da função no console do R, que em seguida, ele nos retorna a rotina que ali foi desenvolvida. Neste caso é muito útil ao acadêmico, pois
a partir dele é possível fazer modificações, estudá-lo, com o propósito
de se obter novas rotinas mais avançadas e melhoradas. Aqui mostramos a rotina desenvolvida para a função newtonraphson() do pacote
pracma. Destaca-se que para calcular a raiz da f (x) não é necessário
ter a sua derivada.
> newtonraphson
function (fun, x0, dfun = NULL, ..., maxiter = 100,
tol = .Machine$double.eps^0.5)
{
70
Capítulo 4. ROTINAS E PACOTES NO R
if (is.null(dfun)) {
dfun <- function(x, ...) {
h <- tol^(2/3)
(fun(x + h, ...) - fun(x - h, ...))/(2 * h)
}
}
x <- x0
fx <- fun(x, ...)
dfx <- dfun(x, ...)
niter <- 0
diff <- tol + 1
while (diff >= tol && niter <= maxiter) {
niter <- niter + 1
if (dfx == 0) {
warning("Slope is zero: no further improvement
possible.")
break
}
diff <- -fx/dfx
x <- x + diff
diff <- abs(diff)
fx <- fun(x, ...)
dfx <- dfun(x, ...)
}
if (niter > maxiter) {
warning("Maximum number of iterations ’maxiter’
was reached.")
}
return(list(root = x, f.root = fx, niter = niter,
estim.prec = diff))
}
4.2. ALGUNS PACOTES DO R
71
Por último, apresentamos o pacote animation (XIE; YU; ZHU,
2014). Este pacote de acordo com Xie (2013) foi projetado principalmente para duas finalidades:
i) para demonstrar idéias, conceitos, teorias e métodos em estatísticas através de animações;
ii) para fornecer utilitários para exportar animações para outros formatos ou gravar animações em outros arquivos, como páginas
HTML e documentos Sweave.
Portanto, este pacote pode ser considerado muito útil não somente na área de Estatística, mas como em todas as áreas de ensino da
Matemática, por exemplo, no ensino de Cálculo Diferencial e Integral.
O pacote animation inicialmente foi escrito com finalidade de
efetuar a visualização de conceitos estatísticos, e depois, o pacote também foi desenvolvido para ser uma coleção abrangente de ferramentas
para criar animações usando R (XIE, 2013). Uma das finalidades deste
pacote é que pode ser útil para o ensino e visualização geométrica de
alguns métodos numéricos. Neste caso, utilizaremos este pacote para
visualizar os métodos da Bisseção e de Newton-Raphson, feitos a partir
de alguns exemplos.
Exemplo 4.9. Seja a função f (x) = x3 − 9x + 3, que possui uma raiz
no intervalo [2, 3].
Foi visto que no exemplo 4.6 a mesma função possui uma raiz
no intervalo [0, 1]. Logo, a Figura 15 ilustra a outra raiz da função
f (x) no intervalo [2, 3]. Em sequência tem-se o valor aproximado da
raiz, obtida pelo comando $root, e o número de iteraçoes a partir do
comando $iter.
72
Capítulo 4. ROTINAS E PACOTES NO R
Figura 15 – Gráfico da função f (x) = x3 − 9x + 3
Fonte: Produção do próprio autor
ani.options(interval = 0.5)
xx = newton.method(function(x) x^3-9*x+3 , rg = c(-1, 5),
init = 5)
> xx$root
[1] 2.816914
> xx$iter
[1] 5
Utilizando a função interactive() o usuário não precisa definir a priori o ponto inicial. Logo, esta função permite que o usuário
interaja, podendo assim escolher o ponto de partida a partir de um
simples clique no mouse, sobre o eixo das abcissas, ou seja, no eixo
x. Para observar o funcionamento desta função foi utilizado o exemplo
4.10 dado abaixo.
4.2. ALGUNS PACOTES DO R
73
Exemplo 4.10. Utilizando o exemplo 4.4 e escolhendo o ponto de
partida em torno de x0 = −0, 5, obtemos os seguintes resultados dados
conforme podemos ver na Figura 16.
Figura 16 – Gráfico da função f (x) = 4sin(x) − ex
Fonte: Produção do próprio autor
if (interactive()) {
ani.options(interval = 0.5, nmax = 50)
xx = newton.method(function(x) 4*sin(x)-exp(x),
rg = c(-2, 3), interact = TRUE)
}
> xx$root
0.3705572
> xx$iter
[1] 3
74
Capítulo 4. ROTINAS E PACOTES NO R
Para visualizar o Método da Bisseção serão utilizados, a seguir, os mesmos exemplos que usamos para demonstrar o Método de
Newton-Raphson. A partir do exemplo 4.9 tem-se a Figura 17 que ilustra o funcionamento do método e apresenta a raiz aproximada geometricamente. Abaixo da Figura 17 tem-se o valor aproximado da raiz
numérica, juntamente com o número de iterações que foi preciso para
obté-la.
Figura 17 – Gráfico da função f (x) = x3 − 9x + 3
Fonte: Produção do próprio autor
> f = function(x) x^3-9*x+3
> xx = bisection.method(f, c(2, 3))
> xx$root
[1] 2.816895
> xx$iter
[1] 10
4.2. ALGUNS PACOTES DO R
75
Utlizando agora o exemplo 4.10 obtém-se os seguintes resultados, pela Figura 18. Porém, para este método é preciso possuir um
ponto inicial e outro final, ou seja, um intervalo [a, b]. Então, para utilizar a função interactive() é preciso que o usuário clique com o mouse
em dois pontos distintos, para que se tenha sucesso na reprodução da
Figura 18, dada abaixo.
Figura 18 – Gráfico da função f (x) = 4sin(x) − ex
Fonte: Produção do próprio autor
> if(interactive())
xx=bisection.method(f, c(0, 1), interact = TRUE)
> xx$root
[1] 0.3702455
> xx$iter
[1] 8
76
Capítulo 4. ROTINAS E PACOTES NO R
Para complementar, vamos apresentar uma aplicação destes
métodos em um problema real em Estatística aplicada a Engenharia.
Neste caso eles, serão aplicados para determinar o limite de decisão do
gráfico de controle de somas acumuladas (CUSUM).
O Controle Estatístico de Processos (CEP) possibilita monitorar as características de qualidade de interesse, assegurando que elas
irão se manter dentro de limites preestabelecidos e indicando quando
adotar ações de correção e melhoria. O CEP é operacionalizado a partir
dos gráficos de controle, com objetivo de acompanhar o desempenho de
um processo a partir da definição de uma faixa de controle aceitável.
Mas, um gráfico de controle pode também ser usado para analisar tendências e padrões que acontecem ao longo do tempo (HENNING et al,
2014). Sua principal finalidade é monitorar um processo, e a partir dele
verificar se está sob controle estatístico indicando sua faixa de variação.
De acordo com Henning et al (2014, p. 3),
Existem dois tipos de gráfico de controle: para
variáveis e para atributos. Os gráficos de controle para atributos se referem às características de qualidade que classificam itens em
conformes e não conformes, enquanto que os
gráficos de controle para variáveis baseiam-se
na medida das características de qualidade em
uma escala contínua.
Os gráficos de controle para variáveis, segundo Walter et al
(2013), são utilizados para monitorar um processo quando a característica da qualidade é uma variável que pode ser mensurada e expressa
em um valor na escala contínua. Neste caso, é mais conveniente descrever a característica da qualidade por meio da medida de sua tendência
central e sua variabilidade, e representá-la em um gráfico de controle
para variáveis adequado.
Uma das formas de monitorar a variabilidade de um processo é
utilizando os gráficos de controle, que são elementos visuais para monitoramento da conformidade de características dos processos. Por meio
4.2. ALGUNS PACOTES DO R
77
deles, pode-se rapidamente identificar alterações em pontos estratégicos
na linha de produção (SAMOHYL, 2009).
A eficiência de um gráfico de controle é medida pela rapidez
com que este dispositivo detecta alterações no processo. Considerando
uma das medidas de desempenho estatístico de um gráfico de controle
como sendo o ARL (Average Run Length), que corresponde ao valor
esperado de amostras até a sinalização de uma mudança. Para um bom
gráfico, é preciso que se tenha um valor alto para o ARL sob controle
(ARL0 ), ou seja, a probabilidade de emissão de um alarme falso, e que
sinalize rapidamente quando uma mudança realmente ocorreu (HENNING et al, 2012).
Assim, o CUSUM será planejado através da escolha do valor
de referência k e do intervalo de decisão h do CUSUM. Deste modo, o
ARL será determinado em função destes valores. Vários são os procedimentos para calcular o valor do ARL. Um enfoque popular é baseado
em cadeias de Markov. Outra abordagem recomendada pela sua simplicidade é a aproximação de Siegmund. Para um CUSUM unilateral
com parâmetros h e k a aproximação de Siegmund, dada pela equação
4.1 é:
ARL ≈
e−2∆(h+1,166) + 2∆(h + 1, 166) − 1
,
2∆2
onde ∆ = −δ ∗ − k e δ =
padrão.
(4.1)
(µ1 − µ0 )
, com σ correspondendo ao erro
σ
A partir das informações vistas até aqui, serão utilizados alguns dos métodos para calcular o ARL, dados a seguir. Inicialmente,
definimos a função e os dados principais.
> fx <- function(x) arl0-(exp(2*k*(x+1.166))
-2*k*(x+1.166)-1)/(2*k^2)
> k<-0.5
78
Capítulo 4. ROTINAS E PACOTES NO R
> arl0<-370
> x<-10
Em seguida, para identificar o intervalo [a, b] que será utilizado,
com o propósito de encontrar a raiz aproximada, faremos uso do Teorema de Bolzano. Este teorema afirma, que se houver a troca de sinais
ao se aplicar os pontos que estão no intervalo [a, b], logo temos que
existe uma raiz entre a e b, tal que f (x) = 0. Neste caso, obtemos o
intervalo a partir dos comandos abaixo ou pela Figura 19.
> x=seq(0,10,by=0.1)
> cbind(x,fx(x))
x
[36,]
[37,]
3.5
3.6
1.687884e+02
1.466350e+02
[38,]
[39,]
3.7
3.8
1.221307e+02
9.502814e+01
[40,]
[41,]
3.9
4.0
6.505420e+01
3.190683e+01
[42,]
4.1 -4.747704e+00
[43,]
[44,]
4.2 -4.527827e+01
4.3 -9.009250e+01
[45,]
[46,]
4.4 -1.396409e+02
4.5 -1.944214e+02
A partir de uma parte do resultado obtido acima, observamos
que a função possui uma raiz no intervalo [4, 5]. A Figura 19 abaixo,
ilustra bem este intervalo.
> x=seq(3,6,by=0.1)
> plot(x,fx(x),type="l",col=4)
> abline(h=0,lty=3)
79
4.2. ALGUNS PACOTES DO R
Figura 19 – Ilustração do intervalo [a, b]
Fonte: Produção do próprio autor
Com uso de algumas rotinas elaboradas pelo próprio autor e a
partir de alguns pacotes do R, veremos a seguir alguns resultados obtidos. Inicialmente, aplicamos o Método da Bisseção. A partir dos resultados a seguir, obtemos a raiz aproximada como sendo x = 4, 087585,
após 14 iterações utilizando como erro ε = 10−4 .
> bissec(fx,4,5,10^-4)
Iteração: 1
Raiz: 4.5
Iteração: 8
Raiz: 4.089844
Iteração: 2
Iteração: 9
Raiz: 4.25
Raiz: 4.087891
Iteração: 3
Raiz: 4.125
Iteração: 10
Raiz: 4.086914
80
Capítulo 4. ROTINAS E PACOTES NO R
Iteração: 4
Iteração: 11
Raiz: 4.0625
Raiz: 4.087402
Iteração: 5
Raiz: 4.09375
Iteração: 12
Raiz: 4.087646
Iteração: 6
Iteração: 13
Raiz: 4.078125
Raiz: 4.087524
Iteração: 7
Raiz: 4.085938
Iteração: 14
Raiz: 4.087585
O próximo método a ser aplicado será o da Falsa Posição.
A partir dos resultados a seguir, obtemos a raiz aproximada como
sendo x = 4, 0876, após 14 iterações utilizando-se do mesmo erro. Mas,
observa-se abaixo, que a partir da 13o iteração a raiz se repete, além
de que a partir da primeira iteração já se obtem uma boa aproximação
para a raiz.
> FP(fx,4,5,10^-4)
Iteração: 1
Iteração: 8
Raiz: 4.053167
Raiz: 4.087554
Iteração: 2
Iteração: 9
Raiz: 4.07415
Raiz: 4.087582
Iteração: 3
Raiz: 4.082359
Iteração: 10
Raiz: 4.087593
Iteração: 4
Iteração: 11
Raiz: 4.08556
Raiz: 4.087598
81
4.2. ALGUNS PACOTES DO R
Iteração: 5
Iteração: 12
Raiz: 4.086806
Raiz: 4.087599
Iteração: 6
Iteração: 13
Raiz: 4.087291
Raiz: 4.0876
Iteração: 7
Raiz: 4.08748
Iteração: 14
Raiz: 4.0876
Utilizamos agora a função newtonraphson() do pacote pracma
para calcular a raiz aproximada pelo Método de Newton-Raphson, tomando como ponto inicial x0 = 4. Utilizamos aqui esta função devido
ao trabalho necessário para se obter a derivada da função f (x). Logo,
teremos após somente 4 iterações o valor da raiz aproximada, dada
abaixo.
> newton(fx,4)
$root
[1] 4.0876
$f.root
[1] 5.684342e-13
$iter
[1] 4
$estim.prec
[1] 3.15894e-11
Aplicando-se o Método da Secante observamos que foi preciso
apenas 5 iterações para se obter a raiz aproximada x = 4, 0876.
> secante(fx,4,5,10^-4)
82
Capítulo 4. ROTINAS E PACOTES NO R
Iteração: 1
Iteração: 4
Raiz: 4.053167
Raiz: 4.087599
Iteração: 2
Iteração: 5
Raiz: 4.07415
Raiz: 4.0876
Iteração: 3
Raiz: 4.087835
Utilizando agora a função uniroot(), teremos os seguintes
resultados abaixo. A partir da função, foi obtida a raiz aproximada
x = 4.087572 em apenas 5 iterações.
> uniroot(fx,c(4,5))
$root
[1] 4.087572
$f.root
[1] 0.01084842
$iter
[1] 5
$init.it
[1] NA
$estim.prec
[1] 6.103516e-05
Por último, utilizamos o pacote animation, que vai ilustrar o
processo de como encontrar a raiz aproximada pelo método de NewtonRaphson. Juntamente com a função interactive(), será possível observar alguns comportamentos do gráfico, simplesmente alterando o
4.2. ALGUNS PACOTES DO R
83
seu ponto inicial. Foram utilizados como pontos iniciais x0 = 5, 5 e
x0 = 3, 5. Logo, os dados obtidos serão apresentados a seguir.
> if (interactive()) {
ani.options(interval = 0.5, nmax = 50)
xx = newton.method(fx, rg = c(3, 6), interact = TRUE)
}
Aqui, a Figura 20 ilustra o procedimento para encontrar a raiz
aproximada, adotando como ponto inicial x0 = 5, 5. Neste caso, foi
preciso de 5 iterações para se obter o valor.
Figura 20 – Gráfico interativo utilizando x0 = 5, 5
Fonte: Produção do próprio autor
> xx$root
4.0876
84
Capítulo 4. ROTINAS E PACOTES NO R
> xx$iter
[1] 5
Agora, a Figura 21 ilustra o procedimento para encontrar a raiz
aproximada, adotando como ponto inicial x0 = 3, 5. Aqui foi preciso de
4 iterações para se obter o valor aproximado da raiz. Mas, é possível
observar ao lado do gráfico, que ele nos retorna o valor da raiz aproximada naquele ponto com exatamente 14 casas decimais após a vírgula.
Logo, se aqui fossemos rigorosos e adotassemos este como a nossa raiz
aproximada, observaríamos que existe uma pequena diferença entre os
valores encontrados, devido o ponto inicial escolhido. Em alguns casos,
o valor poderá divergir, devido a má escolha do ponto inicial.
Figura 21 – Gráfico interativo utilizando x0 = 3, 5
Fonte: Produção do próprio autor
> xx$root
4.0876
4.2. ALGUNS PACOTES DO R
85
> xx$iter
[1] 4
Com os resultados obtidos até então é possível que o aluno
consiga verificar por si mesmo qual será o melhor método para cada um
dos problemas que se queira resolver. Neste caso o método de NewtonRaphson nos retornou a raiz aproximada com um menor número de
iterações, e utilizando o pacote animation foi possível obter um melhor
resultado para a raiz aproximada.
Para o acadêmico, estes pacotes se tornam uma ferramenta
adicional em seu aprendizado. A partir do pacote animation é possível compreender cada método numérico aqui apresentado, permitindo
assim a construção das fórmulas e conceitos a partir das animações.
Além disso, as rotinas aqui elaboradas são simples, com o próposito de
que pudessem ser aplicadas em sala para o ensino de Cálculo Numérico. Assim, o aluno será capaz de compreender cada método, aprender
melhor cada um deles, tendo como foco uma aprendizagem mais efetiva
do assunto.
87
CONCLUSÃO
Este trabalho teve como objetivo principal explorar algumas
potencialidades do pacote GNU R para aplicações e elaboração de rotinas em Cálculo Numérico. Os objetivos, tanto principal como específicos, foram alcançados, ressaltando, que seria importante realizar uma
melhor descoberta sobre o uso do R em dispositivos móveis.
No primeiro capítulo foram descritos brevemente alguns métodos para se calcular zeros de funções, em especial, apresentando suas
origens e construções. No capítulo seguinte, pudemos conhecer o R
como sendo uma linguagem de programação. Em seguida, no terceiro
capítulo, foi retratada a importância do uso de computadores e da aplicação dos métodos em problemas práticos. No capítulo 4 deste trabalho
elaboramos algumas rotinas e exploramos alguns pacotes do R, com o
propósito de aplicarmos em exemplos e problemas de aplicação.
Neste sentido, conclui-se que o R é uma alternativa viável para
aplicações e uso em aulas de Cálculo Numérico. A partir dos pacotes
que o R disponibiliza, o acadêmico possui uma maior gama de rotinas
e/ou programas a serem explorados, juntamente com o uso dos gráficos
animados tornando assim a aula mais atrativa e o processo de ensino
aprendizagem desta disciplina mais efetivo. Assim sendo, o acadêmico
será capaz de observar graficamente a construção dos métodos e de
compreender os motivos de quando um dado problema de aplicação
converge ou diverge. Outra característica importante de ser citada, é
que as rotinas são simples de serem implementadas e aplicadas, contribuindo para a efetividade do processo ensino aprendizagem.
Para finalizar, gostaríamos de deixar algumas recomendações
que poderão servir como tema para trabalhos futuros. As rotinas e
pacotes utilizados aqui foram para calcularmos os zeros de funções a
88
Conclusão
partir de alguns métodos. Assim, seria adequado que o estudo fosse
estendido para os demais métodos, como para a resolução de sistemas
lineares, interpolação, integração numérica, entre outros. Uma sugestão
específica para o conteúdo de Zeros de Funções é implementar uma
função para o Método da Secante, com o propósito de apresentá-lo em
um gráfico animado como foi visto com os demais.
Outra sugestão seria aplicar o R nas aulas de Cálculo Numérico
avaliando de forma quantitativa e qualitativa os resultados. Para finalizar ressaltamos que o R se configura como uma alternativa exequível
e atrativa para proporcionar um aprendizado mais efetivo de Cálculo
Numérico.
89
Referências
AMARAL, T. R. do; LEITE, N. M. G.; SILVA, A. O. da. O Ensino de
Cálculo Numérico Utilizando o Scilab. In: VI CONGRESSO INTERNACIONAL DE ENSINO DA MATEMÁTICA, 2013, Canoas.
BASSANEZI, R. C. Ensino Aprendizagem com Modelagem Matemática. São Paulo: Contexto, 2002.
BEASLEY, C. R. Bioestatística usando R. Universidade Federal
do Pará. 2004. Disponível em: <http://www.r-project.org/other-docs.
html>. Acesso em: 21 mar. 2015.
BLOG HISTORIA DE LA INFORMÁTICA. Charles Babbage. Disponível em: <http://histinf.blogs.upv.es/2010/10/28/charles-babbage/>.
Acesso em: 11 abr. 2015.
BORCHERS, H. W. pracma: Practical Numerical Math Functions. R
package version 1.8.3, 2015. Disponível em: <http://CRAN.R-project.
org/package=pracma>. Acesso em: 18 mai. 2015.
BURDEN, R.; FAIRES, J. Análise Numérica. São Paulo: Cengage
Learning, 8a edição, 2008.
CANO, J. W. R.; OSPINA, M. F. R. Scilab as a Tool to Increase Learning in Courses of Com-munication Systems. In: ELETRONICS, ROBOTICS AND AUTOMOTIVE MECHANICS CONFERENCE, 2008.
CERMA’08. IEEE. 2008, p. 201-205.
CHAPRA, S. C.; CANALE R. P. Métodos Numéricos para Engenharia. São Paulo: McGraw-Hill, 2008.
CORDEIRO, N. J. N.; ALMEIDA, J. P. P. Mini Curso de Introdução ao R. 2009. 23 p. Trabalho realizado para a Semana da Matemática.
90
Referências
CUNHA, M. C. C. Métodos Numéricos. Campinas: Editora da Unicamp, 2003.
DENARDI, R. M. et al. Laboratório Computacional de Física:
uma Experiência de Ensino Integrado de Matemática Numérica e Física em Engenharia, 2004.
FERREIRA, D. S.; CYMROT, R. Uso do software R no tratamento
estatístico de dados na Engenharia. In: CONGRESSO DE INICIAÇÃO CIENTÍFICA DO INATEL - INCITEL, 2012, Minas Gerais.
Anais...São Paulo: Universidade Presbiteriana Mackenzie, 2012. p. 251257.
FOX, J. The R Commander: A Basic-Statistics Graphical User Interface to R. Journal of Statistical Software, v. 14, n. 9, p. 1-42, 2005.
FRANCO, N. B. Cálculo Numérico. São Paulo: Pearson, 2006.
GIL, A. C. Como elaborar projetos de pesquisa. 5 ed. São Paulo:
Atlas, 2010.
GILAT, A.; SUBRAMANIAM, V. Métodos Numéricos para Engenheiros e cientistas. Porto Alegre: Bookman, 1a edição, 2008.
HENNING, E. et al. Um Estudo para a Aplicação de Gráficos de Controle Estatístico de Processo em Indicadores de Qualidade da Água
Potável. Revista Eletrônica Sistemas & Gestão, Volume 9, Número 1, p. 2-13, 2014.
HENNING, E. et al. Aplicação de gráficos de Controle Estatístico de
Processos para o monitoramento dos casos de meningite no município
de Joinville. Revista Eletrônica Produção em Foco. Instituto Superior Tupy - SOCIESC, v. 02, n. 01: p. 01-26, 2012.
KOVBA, D. R Programming Language, 2015. Disponível em:
<http://itunes.apple.com/us/app/r-programming-language/>. Acesso
em: 27 mar. 2015.
MACHADO, I. de A.; ALVES, R. R. Método de Newton. Revista
Eletrônica de Educação da Faculdade Araguaia, 4: 30-45, 2013.
Referências
91
MEDEIROS, A.; MEDEIROS, C. F. de. O Método da Falsa Posição
na História e na Educação Matemática. Ciência & Educação, v. 10,
n. 3, p. 545-557, 2004
MOTA, R. P. B. Código livre Scilab para o ensino de Cálculo Numérico. In: XXII SBIE - XVII WIE, 2011, Aracajú. Anais... Aracajú,
2011. p. 600-609.
NOTARE, M. R.; BEHAR, P. A. Aprendizagem e Comunicação Matemática em Ambientes Virtuais: Uma Experiência com o Cálculo Diferencial. In: XX SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA
EDUCAÇÃO, 2009, Florianópolis.
OWEN, J. et al. spuRs: Functions and Datasets for "Introduction to
Scientific Programming and Simulation Using R".
R package version 2.0.0, 2014.
Disponível em: <http://CRAN.R-project.org/
package=spuRs>. Acesso em: 25 mai. 2015.
PAPAKONSTANTINOU, J. M. Historical Development of the
BFGS Secant Method and Its Characterization Properties.
A Thesis Submitted in Partial Fulfillment of the Requirements for the
Degree Doctorate of Philosphy, Rice University, Houston, 2009.
R CORE TEAM. R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria, 2011.
Disponível em: <http://www.R-project.org/>. Acesso em: 17 mar. 2015.
RAMOS, D. M. C.; ARAUJO, W. B. de; OLIVEIRA, A. R. de. Aplicação de métodos numéricos através ambiente gráfico no ensino de engenharia. In: XXVIII ENCONTRO NACIONAL DE ENGENHARIA
DE PRODUÇÃO, 2008, Rio de Janeiro.
RIBEIRO, R. R. J. Revisão Bibliográfica de Alguns Métodos
Numéricos para Obtenção de Zeros Reais de Funções Transcedentes e Polinomiais. Trabalho de Conclusão de Curso, Universidade Federal Rural do Semi-árido, Rio Grande do Norte, 2012.
RIBEIRO, R. R. J.; MENEZES, M. da S.; MEZZOMO, I. Métodos
Numéricos para Aproximação de Raízes de Funções. In: CONGRESSO
DE MATEMÁTICA APLICADA E COMPUTACIONAL, 2012, Rio
Grande do Norte. Anais... Rio Grande do Norte, 2012. p. 444-446.
92
Referências
ISSN 2317-3297.
ROMIO, L. C.; SOARES, M. A. da S. O Ensino de Cálculo Numérico:
Uma Experiência com Alunos do Curso de Ciência da Computação.
In: XI ENCONTRO NACIONAL DE EDUCAÇÃO MATEMÁTICA,
2013, Curitiba. Anais... Curitiba, 2013. p. 1-10. ISSN 2178-034X.
RSTUDIO. Disponível em: <http://rstudio.org>. Acesso em: 27 mar.
2015.
RUGGIERO, M. A. G.; LOPES, V. L da R. Cálculo Numérico: aspectos teóricos e computacionais. São Paulo: Pearson Makron Books,
1996.
SAMOHYL, R. W. Controle Estatístico da Qualidade. Rio de Janeiro: Campus, 2009.
SANTOS, R. J. Álgebra Linear e Aplicações. Belo Horizonte: Imprensa Universitária da UFMG, 2010.
SOETAERT, K. rootSolve: Nonlinear root finding, equilibrium and
steady-state analysis of ordinary differential equations. R - package
version 1.6, 2009.
Disponível em: <http://CRAN.R-project.org/
package=rootSolve>. Acesso em: 30 mai. 2015.
SOETAERT, K.; HERMAN, P. M.J. A Practical Guide to Ecological Modelling. Using R as a Simulation Platform. Springer, 372
p., 2009.
SPERANDIO, D.; MENDES, J. T.; SILVA, L. H. M. e. Cálculo Numérico: características matemáticas e computacionais dos métodos numéricos. São Paulo: Pearson Prentice Hall, 2003.
TALES OF R. Install R in Android, via GNURoot -no root
required!. Disponível em: <https://talesofr.wordpress.com/tag/
r-console-free/>. Acesso em: 10 jun. 2015.
VANCE, A. The New York Times, Estados Unidos, 10 jan. 2009.
Disponível em: <http://tecnologia.terra.com.br/hardware-e-software/
poder-da-linguagem-r-fascinaanalistas>. Acesso em: 09 mai. 2015.
Referências
93
VENABLES, W. N.; SMITH,D.M.; R CORE TEAM. An introduction to R. Disponível em: <http:// www.r-project.org>. Acesso em:
21 mar. 2015.
VERZANI, J. Getting Started with RStudio. United States of
America: O’Reilly Media, Inc., 2011.
WALTER, O. M. F. C. et al. Uma Visão Geral do RStudio Aplicado
ao Ensino de Controle Estatístico do Processo. In: XL CONGRESSO
BRASILEIRO DE EDUCAÇÃO EM ENGENHARIA, 2012, Bélem.
WALTER, O. M. F. C. et al. Aplicação individual e combinada
dos gráficos de controle Shewhart e CUSUM: uma aplicação
no setor metal mecânico. Gest. Prod. [online]. 2013, vol.20, n.2, p.
271-286. ISSN 0104-530X.
XIE, Y. animation: An R Package for Creating Animations and Demonstrating Statistical Methods. Journal of Statistical Software,
53(1), 1-27, 2013.
XIE, Y.; YU, L.; ZHU, W. animation: A gallery of animations in statistics and utilities to create animations. R package version 2.3, 2014.
Download

métodos numéricos com r - Departamento de Matemática | UDESC