Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação e Cálculo Numérico: Me. André Abdala Noel Esp. Kryssian Romeiro Manoel Dos Santos
Programação e Cálculo Numérico: Me. André Abdala Noel Esp. Kryssian Romeiro Manoel Dos Santos
Cálculo Numérico
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
DIREÇÃO UNICESUMAR
Reitor Wilson de Matos Silva, Vice-Reitor e
Pró-Reitor de Administração Wilson de Matos
Silva Filho, Pró-Reitor Executivo de EAD William
Victor Kendrick de Matos Silva, Pró-Reitor de
Ensino de EAD Janes Fidélis Tomelin, Presidente
C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a da Mantenedora Cláudio Ferdinandi.
Distância; NOEL, André Abdala; SANTOS, Kryssian Romeiro Ma-
noel dos. NEAD - NÚCLEO DE EDUCAÇÃO A DISTÂNCIA
Programação e Cálculo Numérico. André Abdala Noel; Krys- Diretoria Executiva Chrystiano Mincoff, James Prestes
sian Romeiro Manoel dos Santos. e Tiago Stachon; Diretoria de Graduação e Pós-gra-
Maringá-PR.: Unicesumar, 2020. Reimpresso em 2022. duação Kátia Coelho; Diretoria de Permanência
248 p. Leonardo Spaine; Diretoria de Design Educacional
“Graduação - Híbridos”. Débora Leite; Head de Metodologias Ativas Thuinie
1. Programação. 2. Cálculo . 3. Numérico 4. EaD. I. Título. Daros; Head de Curadoria e Inovação Tania Cristia-
ne Yoshie Fukushima; Gerência de Projetos Especiais
ISBN 978-85-459-2036-6 Daniel F. Hey; Gerência de Produção de Conteúdos
CDD - 22 ed. 005 Diogo Ribeiro Garcia; Gerência de Curadoria Carolina
CIP - NBR 12899 - AACR/2 Abdalla Normann de Freitas; Supervisão de Projetos
Especiais Yasminn Talyta Tavares Zagonel; Projeto
Impresso por: Gráfico José Jhonny Coelho e Thayla Guimarães
Cripaldi; Fotos Shutterstock
Olá, nobre aluno(a) das artes exatas! Muitas vezes vemos a área de exatas
como algo frio e mecânico. No entanto, não precisa ser assim. Nesta disciplina,
vislumbraremos uma bela obra de arte resultante da junção de duas áreas
próximas: a matemática e a computação.
Particularmente, gostamos muito de estudar a história da computação e
sempre aprendemos mais com isso. É interessante conhecer como, o que
hoje temos como óbvio e habitual, no passado foi desbravado por mentes
excelentes que conseguiram enxergar na matemática o que hoje podemos
utilizar em computadores, seja assistindo vídeo, ouvindo música, editando
textos ou diversas outras atividades que fazemos.
Neste livro, abordaremos o cálculo numérico e a programação, nesta ordem.
Contudo, o que vem a ser o cálculo numérico? De forma simples, consiste
em encontrar métodos para realizar o cálculo de uma forma computacional,
ou seja, de forma que o computador processe as informações tendo em vista
que ele é uma máquina que executa instruções, muitas vezes diferentes da
forma que o nosso cérebro trabalha.
Sendo assim, na primeira unidade, estudaremos os métodos numéricos que
podem ser utilizados para encontrar as raízes de equações. Você vai ver que
algumas equações você já sabe resolver encontrando raízes exatas, vai desco-
brir métodos novos, trabalhando com a ideia de aproximação.
Na segunda unidade, estudaremos a solução de sistemas de equações lineares
por métodos numéricos. Para resolver sistemas lineares já passamos a ter
mais trabalho manual, pois temos que resolver equações interligadas, fazer
substituições etc. Aqui veremos como passar isso para uma forma mecânica
que o computador faz melhor do que nós.
Em seguida, na Unidade 3, estudaremos a aproximação polinomial, que nos
ajuda a encontrar pontos aproximando-se à solução real de uma função que
podemos não conhecer o comportamento.
Fecharemos a parte do estudo de cálculo numérico na Unidade 4, estudando
métodos numéricos para resolver integração numérica e equações diferen-
ciais, aprendendo formas de encontrar resultados computacionalmente.
A seguir, começaremos a parte mais voltada à programação. Assim, na
Unidade 5, estudaremos conceitos básicos de programação. Portanto, se
você não sabe nada de programação, fique tranquilo(a). A ideia é que você
comece a aprender de forma introdutória. Não chegaremos a ensinar a
programação propriamente dita, mas você terá todo o embasamento que
precisa para o estudo.
Na Unidade 6, compreenderemos como funcionam as linguagens de progra-
mação, necessárias para se escrever os programas de computador. Veremos
algumas características das linguagens e como fazem diferença para cada uma.
Depois de entender o que são as linguagens, iremos nos debruçar, na Unidade
7, em como os programas de computador são escritos e como passam de có-
digo a programas executáveis. Ainda, discutiremos algumas diferenças entre
programas compilados ou interpretados e entre programação web ou desktop.
Voltaremos a tratar de matemática na Unidade 8, juntando as duas
áreas e analisando alguns softwares que ajudam em soluções de cál-
culo. Passaremos por planilhas de cálculo, programação matemática e
softwares online.
Por fim, na Unidade 9, voltaremos ao cálculo numérico, aplicando os méto-
dos numéricos estudados no início em forma de programação, utilizando
a linguagem GNU Octave, compatível com a famosa MATLAB.
Prepare o seu coração, um café bem saboroso e vamos colocar esses neurô-
nios para trabalharem em prol desse conhecimento. A programação está
cada vez mais presente no nosso dia a dia. É cada vez mais necessária para
todas as áreas de atuação.
Vamos lá colocar o computador para trabalhar!
CURRÍCULO DOS PROFESSORES
13
Solução de Sistemas
de Equações
Lineares
39
Aproximação de
Funções
63
Integração Numérica
Criação e Execução
e Equações
de Programas
Diferenciais
87 163
Programas e
Conceitos Básicos
Bibliotecas
de Programação
Matemáticos
115 189
139 217
17 Método de bissecção
127 Loop + Ramificação condicional
170 Processo de compilação
Utilize o aplicativo
Unicesumar Experience
para visualizar a
Realidade Aumentada.
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Métodos Numéricos
PLANO DE ESTUDOS
OBJETIVOS DE APRENDIZAGEM
• Entender o uso de métodos numéricos para obtenção de • Conhecer o método Pégaso para convergir para soluções.
soluções a partir do método da bisseção. • Estudar o método de Newton para encontrar raízes.
• Aprender o método das cordas para a obtenção de so- • Analisar o método da iteração para resolver equações.
luções.
Método
da Bisseção
x3 4 x2 2 x 5 0
Para Chapra e Canale (2011, p. 94) “[...] uma função transcendental é uma função
que não é algébrica. Incluem-se as funções trigonométricas, exponenciais, logarítmicas
e outras funções menos familiares” (grifo do autor). Exemplos são:
f ( x) ln x2 1
f ( x ) e 0,2 x sen(3x 0, 5)
Não existem fórmulas que resolvam essas equações, assim, as equações algébricas
racionais inteiras também são designadas, por sua vez, por equações polinomiais.
O método da bisseção é um método em que reduzimos o intervalo onde a raiz
de f ( x) está contida. Para isso, devemos saber que:
1. A raiz está dentro de um dado intervalo [a, b] .
2. f ( x) é uma função contínua.
3. A equação possui uma solução.
Quando esse é o caso, f ( x) tem sinais opostos nos pontos finais do intervalo, ou
seja, f (a ) f (b) < 0 . Conforme mostrado na Figura 1, se f ( x) é contínua e tem uma
solução entre os pontos x = a e x = b , então ou f (a ) > 0 e f (b) < 0 ou f (a ) < 0
e f (b) > 0 (GILAT; SUBRAMANIAM, 2008).
UNIDADE 1 15
y y y y
Solução Solução
ƒ(a) > 0 ƒ(a) > 0 exata exataƒ(b) > 0 ƒ(b) > 0
X NS b X NS bX X a a
X NS X NS X X
a a b b
Solução Solução
ƒ(b) < 0 ƒ(b) < 0 ƒ(a) < 0 ƒ(a) < 0
exata exata
Seguindo em nosso estudo, Gilat e Subramaniam (2008) ainda dizem que podemos basear
o método da bisseção em quatro passos, facilitando a sua execução e compreensão. São eles:
1. Escolha o primeiro intervalo, encontrando os pontos a e b entre os quais
existe uma solução. Isso significa que f (a ) e f (b) têm sinais diferentes, de
forma que f (a ) f (b) < 0 . Os pontos podem ser determinados a partir de um
gráfico de f ( x) versus x .
2. Então, vamos fazer uma estimativa da solução, que será um ponto entre a e b,
que chamaremos de xNS1 . Calcule a primeira estimativa da solução numérica
xNS1 usando:
( a b)
xNS1
2
3. Determine se a solução exata está entre a e xNS1 ou entre xNS1 e b. Isso é feito
com a verificação do sinal do produto. Se f (a ) f ( xNS 1 ) < 0 , a solução exata
está entre a e xNS1 . Se f (a ) f ( xNS 1 ) > 0 , a solução exata está entre xNS1 e b.
4. Selecione o subintervalo que contém a solução exata (a até xNS1 ou xNS1
até b) como o novo intervalo [a, b] e volte para o passo 2. Os passos 2 a 4 são
repetidos até que a tolerância especificada seja satisfeita ou um determinado
limite de erro seja atingido.
16 Métodos Numéricos
ƒ(x) Solução
exata
a x
b
Primeira Solução
estimativa exata
Primeira x
iteração xNS1
a b
Primeiro intervalo
Segunda
Solução estimativa
exata
Segunda x
iteração xNS2
a b Método de bissecção
Segundo intervalo
Terceira
Solução estimativa
Terceira exata x
iteração
a xNS3 b
Terceiro intervalo
Agora, para fixarmos, iremos resolver um exemplo em que será possível aplicar esses
passos e praticarmos o método da bisseção.
1 EXEMPLO Vamos determinar um valor aproximado da raiz quadrada de 5, com erro menor ou
igual a 0,01. Determinar 5 é equivalente a determinar o zero positivo da equação
x2 5 0 (HUMES et al., 1984).
Resolução: sabemos que o intervalo [2, 3] contém esta raiz. Vamos aplicar o algo-
ritmo da dicotomia. Em cada iteração i, em que i = 0, 1, 2,... , denotaremos por ai
e bi os extremos inferior e superior, respectivamente; do intervalo que está sendo
considerado por xi , o valor aproximado da raiz; e por ei o erro máximo cometido
na i-ésima iteração. Estes valores estão dispostos na Tabela 1. Inicialmente, temos:
f (a0 ) f (2.0) 0 e f (b0 ) f (3.0) 0 .
UNIDADE 1 17
Tabela 1 - Dados obtidos pelo Método da Bissecção
~ bi ai bi ai
ai bi
~
i xi i
2
f xi f ai
2
18 Métodos Numéricos
Método
das Cordas
h1 f (a)
b a f (a ) f (b)
Em que:
x1 a h1
portanto, temos:
f (a)
x1 a (b a )
f (b) f (a )
UNIDADE 1 19
Barroso et al.(1987) apresentaram a interpretação geométrica a seguir, na qual a
curva y = f ( x) é substituída por uma corda que passa pelos pontos A[a, f (a )] e
B[b, f (b)] , e duas das possíveis situações são:
f (a ) 0, f (b) 0 : CasoI
f ( x) 0
f (a ) 0, f (b) 0 : CasoII
y y
ƒ(b) ƒ(a) A
B
h1
a = x0 x1 x2 b a x2 x1 b = x0
0 x 0 x
ƒ(a) A ƒ(b) B
x1 x0 x0 b
f ( x0 ) f ( x0 ) f (b)
f ( x0 )
x1 x0 ( x0 b)
f ( x0 ) f (b)
Por indução:
f ( xn )
xn1 xn ( xn b)
f ( xn ) f (b)
Em que n = 0, 1, 2,...
x1 x0 x0 a
f ( x0 ) f ( x0 ) f (a )
f ( x0 )
x1 x0 ( x0 a )
f ( x0 ) f (a )
20 Métodos Numéricos
Por indução:
f ( xn )
xn1 xn ( xn a )
f ( xn ) f (a )
Em que n = 0, 1, 2,...
Com base no que Barroso et al. (1987) expõem, podemos chegar na equação geral
descrita a seguir:
f ( xn )
xn1 xn ( xn c)
f ( xn ) f (c)
em que:
“A análise do método da secante mostra que, quando os dois pontos que definem
a reta secante são próximos entre si, esse método é na realidade uma forma apro-
ximada do método de Newton” (GILAT; SUBRAMANIAM, 2008, p. 88).
Podemos ver pela fórmula geral do método da secante que ela pode ser reescrita
de forma a aproximar o valor da derivada de f ( x) em xi , contida no método de
Newton.
UNIDADE 1 21
Método
Pégaso
22 Métodos Numéricos
Considerando f ( x) uma função contínua no intervalo [ x0 , x1 ] e f ( x0 ) f ( x1 ) < 0 ,
as aproximações ( x2 , x3 , x4 ,...) da raiz desta função podem ser obtidas pela fórmula
a seguir:
f ( xn )( xn xn1 )
xn1 xn
f ( xn ) f ( xn1 )
Em que n = 1, 2, 3,...
Considerando que, se f ( xn1 ) f ( xn ) 0 , então
[ xn1 , f ( xn1 )] [ xn , f ( xn )] ,
e que se
f ( xn1 ) f ( xn ) 0 ,
então
f ( xn1 ) f ( xn )
[ xn1 , ].
( f ( xn ) f ( xn1 ))
UNIDADE 1 23
Método
de Newton
24 Métodos Numéricos
y y=ƒ(x) ƒ(x)
ƒ(x2) ƒ(xi) – 0
Solução
ƒ(x3)
x 0
xi+1 xi x
x4 x3 x2 x1 xi – xi+1
Inclinação: ƒ’(x3) Inclinação: ƒ’(x2)
f ( xi ) 0
f ( xi )
xi xi 1
xi 1 xi
e
xi
f ( xi ) ≤ d
UNIDADE 1 25
2 EXEMPLO Use o método de Newton (Newton-Raphson) para fazer uma estimativa da raiz de
f ( x) e x x , utilizando uma aproximação inicial x0 = 0 (CHAPRA; CANALE,
2011).
e assim temos:
e xi xi
xi 1 xi
e xi 1
26 Métodos Numéricos
Método
da Iteração
x = g ( x)
UNIDADE 1 27
y y=x
Solução
y = g(x)
x
x
É importante ressaltar que este método pode tomar dois caminhos diferentes, como
Gilat e Subramaniam (2008) afirmam e expressam nos gráficos a seguir:
• Quando o método funciona, os valores de x obtidos são iterações sucessivas
que convergem progressivamente em direção à solução.
y y
y=x y=x y = g(x)
g (x2) g (x4)
y = g(x)
Solução g (x1)
g (x3) Solução
g (x1)
g (x2)
x TS x g(x3) x
x1 x1
x2 = g(x1) x3 = g(x2) x TS x2 = g(x1)
x3 = g(x2)
x4 = g(x3)
28 Métodos Numéricos
y y
y = g(x) y=x
g (x4)
g (x3) y=x g (x2)
Solução
g (x2) g (x1)
g (x1)
Solução g (x3)
y = g(x)
x x
x4 = g(x3) x1
x1 x4 = g(x3) x3 = g(x2)
x3 = g(x2) x2 = g(x1)
x2 = g(x1)
Figura 9 - Divergência do método da iteração de ponto fixo
Fonte: Gilat e Subramaniam (2008, p. 90).
3 EXEMPLO Use a iteração de ponto fixo para localizar a raiz de g(x) (CHAPRA; CANALE, 2011).
Resolução: a função pode ser separada diretamente e expressa na forma a seguir:
xi 1 e xi
Começando com uma aproximação inicial x0 = 0 , essa equação iterativa pode ser
usada para calcular.
Assim, cada iteração traz o valor estimado para mais perto do valor verdadeiro:
0,56714329.
UNIDADE 1 29
Comparação entre Métodos
Como ressaltam Barroso et al. (1987), cada um dos métodos apresentados aqui possui
uma particularidade, vejamos no quadro comparativo a seguir:
Quadro 1 - Comparação dos métodos
Chegamos ao fim da nossa primeira unidade, cuja finalidade foi mostrar as possíveis
formas de como calcular raízes de equações algébricas e transcendentes.
Vimos que cada método tem sua particularidade que o caracteriza singularmente
e, mesmo sendo o de Newton o mais indicado para diversas situações, isso não o
torna o melhor método. O que torna o método o melhor é a exigência e informação
fornecida por cada situação que será calculada. Podemos dizer que a escolha do me-
lhor método para se encontrar a raiz de uma equação está diretamente ligada com as
suas características, ou seja, depende do comportamento na função na região da raiz
exata, das dificuldades com o cálculo de f ′( x) , critério de paradas etc.
De forma geral, a escolha do método está ligada à natureza e características dos
seus dados de entrada, sendo a qualidade e a eficácia do método ligados diretamente
à assertividade da análise prévia dos dados iniciais.
Observamos, desde o início, como os computadores nos auxiliarão em cálculos
que precisam de um determinado nível de precisão e de repetição de métodos, coisas
que os computadores fazem muito bem e que, para nós, são maçantes.
30 Métodos Numéricos
Você pode utilizar seu diário de bordo para a resolução.
2
2. Dada a função f ( x) x log10 x , encontre a raiz pelo método da bissecção.
(sendo a=0,5; b=1,0; E=0,005).
a) r 0, 987 0, 004
b) r 0, 244 0, 003
c) r 0, 526 0, 005
d) r 0, 421 0, 006
e) r 0, 735 0, 005
31
3. Use o método das cordas para fazer uma estimativa da raiz de
f ( x) x3 9 x 3 . Comece com as estimativas iniciais de x1 0 e x0 = 1, 0 .
Assinale a alternativa correta:
x1 = 0, 45327
a)
x2 = 0, 34567
x3 = 0, 26743
x1 = 0, 83270
b) x2 = 0, 70384
x3 = 0, 50045
x1 = 0, 37500
c) x2 = 0, 33194
x3 = 0, 33763
x1 = 0, 85900
d) x2 = 0, 09546
x3 = 0, 00356
x1 = 0, 61270
e) x2 = 0, 56384
x3 = 0, 56717
32
FILME
O Jogo da Imitação
Ano: 2014
Sinopse: durante a Segunda Guerra Mundial, o governo britânico monta uma
equipe que tem por objetivo quebrar o Enigma, o famoso código que os ale-
mães usam para enviar mensagens aos submarinos. Um de seus integrantes é
Alan Turing (Benedict Cumberbatch), um matemático de 27 anos estritamente
lógico e focado no trabalho, que tem problemas de relacionamento com prati-
camente todos à sua volta. Não demora muito para que Turing, apesar de sua
intransigência, lidere a equipe. Seu grande projeto é construir uma máquina que
permita analisar todas as possibilidades de codificação do Enigma em apenas
18 horas, de forma que os ingleses conheçam as ordens enviadas antes que
elas sejam executadas. Entretanto, para que o projeto dê certo, Turing terá
que aprender a trabalhar em equipe e temem Joan Clarke (Keira Knightley) sua
grande incentivadora.
WEB
33
BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.
CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.
GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre:
Bookman,2008.
HUMES, A. F. P. C.; MELO, I. S. H.; YOSHIDA, L. K.; MARTINS, W. T. Noções de cálculo numérico. São Paulo:
McGraw-Hill do Brasil, 1984.
34
1. D.
2.
A ± B R ± ER
0,5 - 1,0 0,75 + 0,5
0,5 - 0,75 0,625 + 0,25
0,5 - 0,625 0,5625 + 0,125
0,5 - 0,5625 0,5313 + 0,0625
0,5 - 0,5313 0,5157 - 0,0313
0,5157 - 0,5313 0,5235 - 0,0156
0,5235 - 0,5313 0,5274 + 0,0078
0,5235 - 0,5274 0,5255 - 0,0039
f 1 5 5
x1 1 1 0 1 1 0, 375
f 1 f 0 5 3 8
f 0, 375
x2 0, 375 0, 375 1
f 0, 375 f 1
0, 32226
0, 375 0, 625
0, 32226 5
= 0, 331942348
f 0, 33194
x3 0, 33194 0, 33194 0, 375
f 0, 33194 f 0, 375
0, 049114531
0, 33194 0, 04306
0, 049114531 0, 32226
= 0, 33763414
Portanto,
x1 = 0, 37500
x2 = 0, 33194
x3 = 0, 33763
35
36
37
38
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Solução de Sistemas de
Equações Lineares
PLANO DE ESTUDOS
Solução de
Métodos Jacobi
Sistemas Triangulares
Sistemas de
Métodos Gauss Métodos Gauss-Seidel
Equações Lineares
OBJETIVOS DE APRENDIZAGEM
• Apresentar o conceito de sistemas de equações lineares • Entender a utilização dos Métodos Jacobi para solucionar
e possíveis aplicações. sistemas.
• Identificar sistemas triangulares e aplicar a decomposição • Utilizar os métodos Gauss-Seidel para obter as soluções
de sistemas. de sistemas lineares.
• Estudar o procedimento de solução de sistemas lineares
proposto por Gauss.
Sistemas
de Equações Lineares
Como já vimos, sistemas de equações lineares são amplamente utilizados para cál-
culos de estruturas, redes elétricas ou solução de equações diferenciais, tornando-se
um problema de grande interesse prático.
Formalmente, temos uma equação linear quando cada termo da equação apresen-
ta apenas uma variável, que aparece apenas na primeira potência (FRANCO, 2006).
2
Com isso, uma equação 3 xy = 0 não é linear, nem uma equação 2 x 3 x 1 0 .
Sendo assim, um Sistema de n Equações Lineares ou um Sistema Linear de
Ordem n é um conjunto de n equações lineares com n variáveis. Resolver um sis-
tema linear significa encontrar os valores para as n variáveis de forma que todas as
equações sejam satisfeitas simultaneamente (FRANCO, 2006).
Um sistema linear Sn pode ser escrito da seguinte forma:
an1 x1 an2 x2 ... ann xn bn
ou
n
Sn aij x j bi , i 1, 2,..., n
j 1
UNIDADE 2 41
Dentre os sistemas possíveis, temos os sistemas determinados, quando admitem
uma única solução, ou indeterminados, quando admitem mais de uma solução
(FRANCO, 2006).
Por exemplo, dados os três sistemas a seguir:
x y 3 x 2 y 3 2 x y 5
(I ) ( II ) ( III )
x y 1 2 x 4 y 6 2 x y 1
Para o sistema linear (I), temos apenas um par de x e y que satisfazem o sistema, que
é: x = 2 e y = 1 . Portanto, é um sistema possível e determinado.
=1
3
x -y
2x+
4
x+2 y=6
y=3
Por último, o sistema linear (III) é um sistema impossível, pois não há valores para
x e y que satisfaçam as duas equações simultaneamente. Isto é, temos duas retas que
nunca se encontram, ou sejam, retas paralelas no plano. São chamadas de equações
contraditórias (FRANCO, 2006).
2x+
2x+
y
=1
y=
5
UNIDADE 2 43
Métodos Diretos (Exatos) ou Iterativos
Sistemas Triangulares
Inferior, Triangular
Superior e Diagonal
UNIDADE 2 45
a11 0 0 0 x1 b1
a a22 0 0 x2 b2
21
a31 a32 a33 0 x3 b3
a41 a42 a43 a44 x4 b4
a11 x1 b1
a x a x b2
21 1 22 2
a31 x1 a32 x2 a33 x3 b3
an1 x1 an2 x2 an3 x3 … ann xn bn
Se o sistema linear puder ser escrito na forma de uma matriz triangular inferior, fa-
cilmente percebemos que ele pode ser resolvido por meio de substituições simples,
iniciando pelo valor obtido na primeira equação, em que há apenas uma variável.
De forma análoga, um sistema linear de ordem n é triangular superior quando
possui valores apenas na diagonal e acima da diagonal da matriz A que forma o sistema.
a11 a12 a13 a14 x1 b1
0
a22 a23 a24 x2 b2
0 0 a33 a34 x3 b3
0 0 0 a44 x4 b4
Da mesma forma, também pode ser resolvido por meio de substituições simples, a
partir da última equação, que possui apenas uma variável, com o resultado direto.
Por fim, temos o sistema linear diagonal, que é escrito de forma em que há valo-
res apenas na diagonal principal da matriz A, gerando o sistema. Dessa forma, cada
equação terá apenas um termo com uma variável cada, o que já nos entrega a solução
do sistema (GILAT; SUBRAMANIAM, 2008).
a11 x1 b1
a11 0 0 0 x1 b1 a x b
0 0 x2 b2 22 2 2
a22 0
a33 x3 b3
0 0 a33 0 x3 b3
0 0 0 a44 x4 b4
ann xn bn
Em geral, os sistemas de equações lineares não são sistemas triangulares como os que
foram apresentados. Contudo, podemos decompor uma matriz quadrada A = (aij )
no produto de uma matriz triangular inferior por uma matriz triangular superior.
Temos o seguinte teorema, conhecido como Teorema LU:
UNIDADE 2 47
1 u11 a11 u11 a11
...
1 u1n a1n u1n a1n
Logo,
u1 j a=
= 1 j , j 1, 2,..., n
a21
21u11 a21 21
u11
a31
31u11 a31 31
u11
...
a
n1u11 an1 n1 n1
u11
Logo,
ai1
=
i1 = , j 2, 3,..., n
u11
...
21u1n u2 n a2 n u2 n a2 n 21u1n
Logo,
u2 j a2 j 21u1 j , j 2, 3,..., n
...
a u
n1u12 n2u22 an2 n2 n2 n1 12
u22
Logo,
ai 2 i1u12
i2 , i 3,..., n
u22
Aplicando a Decomposição LU
a Sistemas Lineares
Temos por definição que um sistema de equações lineares pode ser escrito como
Ax = b . Sendo um sistema que satisfaz as condições para a decomposição LU, vimos
que LU = A , logo, nosso sistema pode ser escrito na forma LUx = b .
Então, para encontrar a solução do sistema decomposto, podemos fazer Ux = y
e aplicar na equação anterior, para resolver primeiro pelo sistema triangular inferior,
tendo Ly = b . Ao obter o vetor y, aplicamos na equação em relação ao sistema trian-
gular superior para obter o vetor x, que é a solução para o nosso sistema original.
Mais adiante, em nosso livro, veremos como esse método pode ser aplicado em
programação, utilizando sistemas como Matlab ou Octave para solucionar sistemas
lineares.
UNIDADE 2 49
Métodos
Gauss
(0 ) (0 ) (0 )
Fazendo B0 = B e chamando de L1 , L2 , L3 as linhas 1, 2 e 3, respectivamente,
(0 )
de B0 , escolhe-se a11 como pivô e calculam-se os multiplicadores:
a (0) 4
m21(0) 21(0) 2
a11 2
a31(0) 2
m31(0) 1
a11(0) 2
Fazem-se, agora, as seguintes transformações elementares sobre as linhas de B0 :
L1(0) → L1(1)
UNIDADE 2 51
2ª etapa
(1)
Escolhe-se a22 2 como pivô e calcula-se o multiplicador:
a32(1) (6)
m32(1) (1)
3
a22 2
L1(1) → L1(2)
L2(1) → L2(2)
L1(2) , L2(2) , L3(2) são linhas da matriz transformada B2 , que já está na forma
triangular:
2 3 1 | 5
B2 0 2 1 | 7 A | b
0 0 5 | 15
2 x1 3 x2 x3 5
2 x2 x3 7
5 x3 15
T
Resolvendo-o por substituição retroativas, obtém-se a solução x 1 2 3 , que
é também a solução do sistema dado, uma vez que são equivalentes.
UNIDADE 2 53
A forma explícita de um sistema de equações, que foi adaptado de Gilat e Subrama-
niam (2008), é ilustrada a seguir: à direita (a) está a forma padronizada; à esquerda
(b) está a forma explícita de um sistema de quatro equações.
a11 x1 a12 x2 a13 x3 a14 x4 b1 x1 [b1 (a12 x2 a13 x3 a14 x4 )] / a11
a21 x1 a22 x2 a23 x3 a24 x4 b2 Escrevendo as equações x2 [b2 (a21 x1 a23 x3 a24 x4 )] / a22
a31 x1 a32 x2 a33 x3 a34 x4 b3 de forma explícita x3 [b3 (a31 x1 a32 x2 a34 x4 )] / a33
a41 x1 a42 x2 a43 x3 a44 x4 b4 x4 [b4 (a41 x1 a42 x2 a43 x3 )] / a44
(a) (b)
De acordo com Barroso et al. (1987), o Método Jacobi funciona do seguinte modo:
(0 )
a) Escolhe-se uma aproximação inicial x .
(k )
b) Geram-se aproximações sucessivas de x a partir da iteração:
x ( k 1) Fx ( k ) d , k = 0, 1, 2, ...
UNIDADE 2 55
1
x1( k 1) b1 a12 x2( k ) a13 x3( k ) ... a1n xn ( k )
a11
1
x2( k 1) b2 a21 x1( k ) a23 x3( k ) ... a2 n xn ( k )
a22
1
xn ( k 1) bn an1 x1( k 1) an2 x2( k 1) ... an,n1 xn1( k 1)
ann
ou, então,
i 1 n i 1, 2,..., n
xi ( k 1) d Fij x (jk 1) ij j , onde k 0,1, 2,...
F x (k )
j 1 j i 1
Sendo assim, percebemos que os métodos iterativos podem ser executados até chegar a
um limite mínimo de tolerância (erro) ou até um número máximo de iterações. Devemos
lembrar que, por mais que os sistemas computacionais sejam cada vez mais potentes e
baratos, ainda são finitos e limitados. Uma aproximação boa o suficiente muitas vezes é
o que precisamos.
Terminamos, então, nossa unidade sobre Sistemas de Equações Lineares. Vale lembrar
que adiante veremos como aproveitar esse conhecimento em linguagens computacionais.
Ainda temos mais a tratar sobre o cálculo numérico, mas até aqui você já deve ter per-
cebido que encontramos formas de automatizar processos mecânicos de cálculos e, por
vezes, utilizamos caminhos diferentes do que usaríamos para calcular manualmente. Isso
é necessário, pois a máquina não tem a mesma visão do todo e do contexto que nós temos.
É importante frisar que não precisamos ter medo dessas fórmulas e desses cálculos,
porque, a partir do ponto em que eles foram estabelecidos, esse processo será passado para
as máquinas calcularem. Para elas, um processo mecânico repetitivo é simples e menos
suscetível a erros do que quando nós fazemos os cálculos.
Continue firme em seus estudos e nos vemos na próxima unidade!
5 3
2. Dada a matriz A 8 4 , faça a decomposição de A em LU, ou seja, em uma
matriz triangular inferior e uma matriz triangular superior.
57
FILME
58
ARENALES, S.; DAREZZO, A. Cálculo Numérico: Aprendizagem com Apoio de Software. 2. ed. São Paulo:
Cengage, 2016.
BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.
CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.
GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre: Bookman,
2008.
59
1. B.
2.
5 3
A
8 4
u11 a11 5
u12 a12 3
11 1
12 0
a21 8
21 1, 6
u11 5
u21 0
u22 a22 21u12 4 1, 6 3 0, 8
22 1
1 0
L
1, 6 1
5 3
U
0 0, 8
3. D.
60
61
62
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Aproximação de Funções
PLANO DE ESTUDOS
OBJETIVOS DE APRENDIZAGEM
• Apresentar o conceito de aproximação polinomial e sua • Estudar a interpolação quadrática e sua utilização.
aplicação. • Aprender a utilizar a interpolação de Lagrange.
• Entender o conceito de interpolação linear para aproxi- • Analisar e aplicar o método de interpolação polinomial
mação. de Newton.
Aproximação
Polinomial
64 Aproximação de Funções
No uso cotidiano, algumas funções podem ser complexas de serem resolvidas e
uma boa forma de simplificar é aproximar essas funções a funções mais simples, de
onde os resultados possam ser obtidos com menos esforço.
Podemos utilizar de aproximações quando precisamos avaliar diferentes pontos
ou quando precisamos derivar ou integrar; também quando temos um conjunto de
pontos da função, mas não sabemos sua forma analítica real (ARENALES; DARE-
ZZO, 2016).
É comum a necessidade de se fazer estimativas de pontos intermediários entre
dados precisos. Para isso, usamos as técnicas de Aproximação Polinomial. O método
mais comum, que discutimos nesta unidade, é a interpolação polinomial. A fórmula
geral para um polinômio de grau n é
f ( x) a0 a1 x2 ... an x n
Para n +1 pontos dados, existe um e somente um polinômio de grau n que passa por
todos os pontos. A interpolação polinomial consiste em determinar o único polinômio
de grau n que passa pelos n +1 pontos dados. Esse polinômio, então, fornece uma
fórmula para calcular valores intermediários (CHAPRA; CANALE, 2011).
Este polinômio recebe o nome de polinômio interpolador. O polinômio inter-
polador de uma função f ( x) definida em x0 , x1 ,..., xn (n+1) pontos distintos de um
intervalo a, b é o polinômio P ( x) de grau igual ou menor a n, que coincide com a
função nos pontos xi , i = 0,..., n . Isso significa que P=
( xi ) f=
( xi ) yi , y = 0,..., n
(ARENALES; DAREZZO, 2016).
UNIDADE 3 65
De uma forma um pouco mais visual, podemos entender um pouco do funciona-
mento por meio da figura a seguir, em que temos alguns pontos da função f(x) e
encontramos um polinômio P(x) que passa por esses pontos.
y
f(x)
yn
Pn (x)
...
–
Pn (x)
–
ƒ(x)
y1
y0
x0 = a x1 –
x ... xn = b x
Figura 1 - Exemplo de polinômio interpolador
Fonte: adaptada de Arenales e Darezzo (2016).
66 Aproximação de Funções
Interpolação
Linear
f1 ( x) f ( x0 ) f ( x1 ) f ( x0 )
x x0 x1 x0
UNIDADE 3 67
ƒ(x)
ƒ(x1)
ƒ1(x)
ƒ(x0)
x0 x x1 x
Figura 2 - Representação gráfica de interpolação linear
Fonte: Chapra e Canale (2011, p. 410).
1 EXEMPLO Seja a função y = f ( x) definida pelos pontos (0,00; 1,35) e (1,00; 2,94), determinar
aproximadamente o valor de f (0, 73) (BARROSO et al., 1987).
P1 ( x) 1, 59 x 1, 35
P1 (0, 73) 1, 59 0, 73 1, 35 2, 51
Segundo Barroso et al. (1987), o resultado obtido no Exemplo 1 está afetado por
dois tipos de erro:
a) Erro de arredondamento (e A ) : é cometido durante a execução das operações
e no caso de o resultado ser arredondado.
b) Erro de truncamento (eT ) : é cometido quando a fórmula de interpolação a
ser utilizada é escolhida, pois a aproximação de uma função conhecida apenas
por meio de dois pontos é feita por um polinômio de 1º grau.
68 Aproximação de Funções
2 EXEMPLO Faça uma estimativa do logaritmo natural de 2 usando uma interpolação linear. Pri-
meiro, faça o cálculo interpolando entre ln(1) = 0 e ln(6) = 1, 791759 . Então, repita
o procedimento, mas use o intervalo menor de ln(1) a ln(4) = 1, 386294 . Observe
que o valor verdadeiro de ln(2) = 0, 6931472 (CHAPRA; CANALE, 2011).
f ( x1 ) f ( x0 )
Resolução: usamos a Equação f1 ( x) f ( x0 ) ( x x0 ) e a interpo-
x1 x0
1, 791759 0
f1 (2) 0 (2 1) 0, 3583519
6 1
ƒ(x)
2 ƒ(x) = In x
Valor
1 verdadeiro
ƒ1(x)
Estimativas lineares
0
0 5 x
Figura 3 - Duas interpolações lineares para estimar ln(2)
Fonte: Chapra e Canale (2011, p. 411).
Pelos exemplos, podemos perceber que, quanto menor o intervalo, mais próxima
será a nossa aproximação. Entretanto, em muitos casos, a aproximação pode trazer
um erro aceitável.
UNIDADE 3 69
Interpolação
Quadrática
f2 ( x) b0 b1 ( x x0 ) b2 ( x x0 )( x x1 )
Desenvolvendo-a, temos:
f2 ( x) b0 b1 x b1 x0 b2 x2 b2 x0 x1 b2 xx0 b2 xx1
Colecionando os termos:
f2 ( x) a0 a1 x a2 x2
em que
a0 b0 b1 x0 b2 x0 x1
a1 b1 b2 x0 b2 x1
a2 = b2
70 Aproximação de Funções
Retomando a equação f2 ( x) b0 b1 ( x x0 ) b2 ( x x0 )( x x1 ) e considerando
x = x0 para encontramos b0 , temos que:
b0 = f ( x0 )
f ( x1 ) f ( x0 )
b1
x1 x0
f ( x2 ) f ( x1 ) f ( x1 ) f ( x0 )
x2 x1 x1 x0
b2
x2 x0
3 EXEMPLO Ajuste um polinômio de segundo grau aos três pontos usados no Exemplo 2, veja a
seguir (CHAPRA; CANALE, 2011):
=x0 1=f ( x0 ) 0
x1 = 4 f ( x1 ) = 1, 386294
x2 = 6 f ( x2 ) = 1, 791759
Para b f ( x1 ) f ( x0 )
1
x1 x0
1, 386294 0
b1 0, 4620981
4 1
UNIDADE 3 71
Finalmente, para b2 , temos:
f ( x2 ) f ( x1 ) f ( x1 ) f ( x0 )
x2 x1 x1 x0
b2
x2 x0
1, 791759 1, 386294
0, 4620981
b2 64 0, 0518731
6 1
f2 ( x) = 0, 5658444
ƒ2(x)
Valor
1 verdadeiro
Estimativa quadrática
Estimativa linear
0
0 5 x
Figura 4 - Interpolações linear e quadrática (Exemplos 2 e 3)
Fonte: Chapra e Canale (2011, p. 412).
72 Aproximação de Funções
Interpolação
de Lagrange
“
Os polinômios interpoladores de Lagrange
formam uma classe específica de polinô-
mios que podem ser usados para fazer o
ajuste de um determinado conjunto de da-
dos simplesmente a partir dos valores dos
pontos. Os polinômios podem ser escritos
diretamente, e os coeficientes são determi-
nados sem a necessidade de nenhum cálcu-
lo preliminar (GILAT; SUBRAMANIAM,
2008, p. 218).
UNIDADE 3 73
ƒ(x) (x–x2) (x–x1)
ƒ(x)= y1 + y2
(x1–x2) (x2–x1)
(x2, y2)
(x, y)
*
(x1, y1)
f ( x) y a1 ( x x2 ) a2 ( x x1 )
y1
y1 a1 ( x1 x2 ) a2 ( x1 x1 ) ou a1 e
( x1 x2 )
y2
y2 a1 ( x2 x2 ) a2 ( x2 x1 ) ou a2
( x2 x1 )
Nesse caso, obtemos uma função linear, na qual, se x = x1 , teremos o polinômio igual
a y1 . No caso de x = x2 , podemos ver que o polinômio seria y2 . Quando x for um
outro valor, entre x1 e x2 , teremos um valor que é a interpolação em y.
Podemos, ainda, escrever a equação como:
( y2 y1 ) x y x y
f ( x) x 2 1 1 2
( x2 x1 ) ( x2 x1 )
74 Aproximação de Funções
E o polinômio que passa pelos três pontos:
( x x2 )( x x3 ) ( x x1 )( x x3 ) ( x x1 )( x x2 )
f ( x) y1 y2 y3
( x1 x2 )( x1 x3 ) ( x2 x1 )( x2 x3 ) ( x3 x1 )( x3 x2 )
“
Quando a coordenada x1 , x2 ou x3 de um dos três pontos é substituída, o va-
lor do polinômio é igual a y1 , y2 ou y3 , respectivamente. Isso ocorre porque o
coeficiente na frente do termo yi correspondente é igual a 1 e o coeficiente dos
outros dois termos é igual a zero (GILAT; SUBRAMANIAM, 2008, p. 219).
(x-x2)(x-x3) (x-x1)(x-x3)
ƒ(x)= y1 + y2
(x1-x2)(x1-x3) (x2-x1)(x2-x3)
(x-x1)(x-x2)
+ y3
ƒ(x) (x3-x1)(x3-x2)
(x3, y3)
(x, y)
(x2, y2)
*
(x1, y1)
x
UNIDADE 3 75
n n n (x x j )
f ( x) yi Li ( x) yi
i 1 i 1 j 1 ( xi xj)
j i
n (x x )
j
L
em que as funções i ( x ) ( x x ) são chamadas de funções de Lagrange. Essa
j 1 i j
j i
4 EXEMPLO Use um polinômio interpolador de Lagrange de primeiro e segundo graus para cal-
cular ln(2) com base nos dados fornecidos no Exemplo 2, veja a seguir (CHAPRA;
CANALE, 2011):
=x0 1= f ( x0 ) 0
x1 = 4 f ( x1 ) = 1, 386294
x2 = 6 f ( x2 ) = 1, 791759
Resolução: o polinômio de primeiro grau pode ser usado para se obter a estimativa
em x = 2 ,
( x x2 ) ( x x1 )
f ( x) y1 y2
( x1 x2 ) ( x2 x1 )
(2 4) (2 1)
f1 (2) 0 1, 386294 0, 4620981
(1 4) (4 1)
f2 (2) = 0, 5658444
76 Aproximação de Funções
Interpolação
de Newton
UNIDADE 3 77
Dessa forma, podemos escrever:
f [ x1 ] f [ x0 ]
f [ xo , x1 ]
x1 x0
f [ x1 , x2 ] f [ x0 , x1 ]
f [ xo , x1 , x2 ]
x2 x0
f [ x1 , x2 , x3 ] f [ x0 , x1 , x2 ]
f [ xo , x1 , x2 , x3 ]
x3 x0
e assim por diante (FRANCO, 2006).
Cuidado para não se perder no cálculo das diferenças divididas. Como auxí-
lio, você pode montar uma tabela em que vai anotando por níveis os resul-
tados, primeiro para um ponto, depois para dois pontos e assim por diante.
f [ x0 , x] f [ x0 , x1 ]
f [ x0 , x1 , x] , para x x0 e x x1
x x1
Pn ( x) f [ x0 ] ( x x0 ) f [ x0 , x1 ] ( x x0 )( x x1 ) f [ x0 , x1 , x2 ]
... ( x x0 )...( x xn1 ) f [ x0 , x1 ,..., xn ]
78 Aproximação de Funções
Tenha sua dose extra de conhecimento assistindo ao vídeo.
Para acessar, use seu leitor de QR Code.
x -1 0 3
f(x) 15 8 -1
P2 ( x) f [ x0 ] ( x x0 ) f [ x0 , x1 ] ( x x0 )( x x1 ) f [ x0 , x1 , x2 ]
Calculando o polinômio:
P2 ( x) 15 ( x 1)(7) ( x 1)( x 0)(1)
P2 ( x) x2 6 x 8
f (1) 2
f (0) 0
f (1) 2
f (2) 4
80
3. A fim de encontrar o polinômio interpolador, podemos usar um cálculo chamado
“diferenças divididas”. Assinale a alternativa com o método que utiliza diferenças
divididas para definir o polinômio.
a) Interpolação Linear.
b) Interpolação Quadrática.
c) Interpolação Lagrange.
d) Interpolação de Newton.
e) Interpolação Circular.
81
WEB
WEB
82
ARENALES, S.; DAREZZO, A. Cálculo Numérico: Aprendizagem com Apoio de Software. 2. ed. São Paulo:
Cengage, 2016.
BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.
CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.
GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre:
Bookman,2008.
REFERÊNCIAS ON-LINE
1
Em: http://www.professorisidro.com.br/interpolacao-grafica-dando-um-up-no-seu-jogo/. Acesso em: 10 set.
2019.
83
1. A.
P3 ( x) f [ x0 ] ( x x0 ) f [ x0 , x1 ] ( x x0 )( x x1 ) f [ x0 , x1 , x2 ] ( x x0 )( x x1 )( x x2 ) f [ x0 , x1 , x2 , x3 ]
f [ x0 ] 2 .
f [ x1 ] 0
f [ x2 ] 2
f [ x3 ] 4
f [ x0 , x1 ] 2
f [ x1 , x2 ] 2
f [ x2 , x3 ] 2
f [ x0 , x1 , x2 ] 0
f [ x1 , x2 , x3 ] 0
f [ x0 , x1 , x2 , x3 ] 0
Calculando o polinômio:
P3 ( x) = 2 x
3. D.
84
85
86
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Integração Numérica
e Equações Diferenciais
PLANO DE ESTUDOS
OBJETIVOS DE APRENDIZAGEM
• Estudar a regra dos trapézios para resolver integração • Aprender o método de Euler para a solução de equações
numérica de forma computacional. diferenciais.
• Entender a regra 1/3 de Simpson para aproximar integrais. • Analisar o método Runge-Kutta para equações diferen-
• Utilizar uma outra forma de aproximação no cálculo de ciais.
integrais.
Regra
dos Trapézios
Integração Numérica
Antes de iniciarmos nosso estudo da regra dos Trapézios, vamos pensar um pouco
sobre como resolvemos nosso problema de integração numérica. Nosso objetivo é
encontrar métodos numéricos para calcular a integral definida de uma função. Uma
fórmula que forneça um valor numérico aproximado da integral de uma função é
chamada de quadratura numérica ou fórmula de integração numérica (HUMES et
al., 1984). Exploraremos como o método de Newton-Cotes se aplica a funções com
valores conhecidos em pontos igualmente espaçados.
Segundo Chapra e Canale (2011), esse método é baseado na substituição de uma
função complicada ou de dados tabulados por um polinômio simples que é fácil de
integrar. Três das fórmulas mais amplamente usadas de Newton-Cotes serão discuti-
das em detalhes: a regra do trapézio, a regra 1/3 de Simpson e a regra 3/8 de Simpson.
Todas essas fórmulas se destinam aos casos nos quais os dados a serem integrados
estão igualmente espaçados.
Utilizando os Trapézios
Para dar início ao nosso pensamento, observe a Figura 1. Vamos nos lembrar do mo-
tivo de usarmos a integração numérica, a princípio. Suponha que queremos descobrir
a área do gráfico que fica entre o eixo x e a nossa função y = f ( x) , no intervalo
compreendido entre os pontos a e b. Qual é a forma da nossa figura? Temos uma
figura com o topo arredondado, que não sabemos calcular a área.
Para calcular a área, podemos aproximar o desenho real ao desenho de um tra-
pézio que “se encaixa” em nossa área desejada. Afinal, nós sabemos como se calcula
a área de um trapézio.
Facilitando mais ainda, como vemos na figura, podemos dividir a área do nosso
trapézio em duas áreas: a área de um retângulo e a área de um triângulo, que possuem
fórmulas triviais para o cálculo da área.
UNIDADE 4 89
y y=ƒ(x)
ƒ(b)
Área
= 1 (b-a)(ƒ(b) - ƒ(a))
2
ƒ(a)
Área
= ƒ(a)(b-a)
x
a b
Figura 1 - Método do trapézio
Fonte: Gilat e Subramaniam (2008, p. 293).
Com isso, conseguimos a área de nosso trapézio, que é uma aproximação da área
original a que queremos medir, com um erro claramente visto na área em que o
trapézio não cobre a área original.
Como nosso objetivo sempre é chegar mais próximo do valor real, precisamos
diminuir ao máximo o erro no cálculo. Basicamente, podemos diminuir essa diferença
dividindo o intervalo [a, b] em intervalos menores, no qual cada intervalo possui
o seu trapézio, e quanto menor o trapézio, menor o erro em relação à área original.
Segundo Gilat e Subramaniam (2008), podemos encontrar uma função linear de
aproximação ao longo do intervalo para refinar os métodos do retângulo e do ponto
central na integração numérica. Vimos, na unidade anterior, o polinômio de Newton.
Entre os pontos x = a e x = b , o polinômio é:
f ( x ) f ( a ) ( x a ) f [ a, b] f ( a ) ( x a )
f (b) f (a)
ba
Então, podemos substituir a equação obtida na fórmula antiderivada e realizar a
integração analítica:
b
I ( f ) f ( x)dx (antiderivada)
a
1
f (a )(b a ) f (b) f (a) b a
2
A partir daí, encontramos a fórmula conhecida como regra ou método trapezoidal.
f (a) f (b)
I( f ) b a
2
Se a gente parar para observar a fórmula apresentada, o termo f (a )(b − a ) representa
a área de um triângulo de altura f (a ) e largura (b − a ) . O segundo termo equivale à
área do triângulo, que pode ser calculada como (b − a ) de base e f (b) f (a ) de
altura, levando-nos à imagem do trapézio, que é formado pelo retângulo e o triângulo.
Analisando a imagem, percebemos que o uso do trapézio é mais eficaz do que o uso
de apenas um retângulo.
h3
Et f (x )
12
Em que x está em algum ponto do intervalo entre a e b. Dessa forma, se estivermos
integrando uma função linear, a regra dos trapézios é exata. Se não for linear, podemos
ter algum erro (CHAPRA; CANALE, 2011).
UNIDADE 4 91
1 EXEMPLO Calcular, pela regra do trapézio e, depois, analiticamente, o valor de (BARROSO
et al., 1987):
3,6 dx
I
3,0 x
Resolução:
h
I y0 y1
2
1
como y = , então:
x
1 1
y=
0 =
x0 3
1 1
y=
1 =
x1 3, 6
h x1 x0 3, 6 3, 0 0, 6
logo,
0, 6 1 1
I 0, 18333
2 3 3, 6
Cálculo do erro:
h3 h3 2
Et f (x ) 3
12 12 x
(0, 6)3 2
E 1, 333 103
12 27
então:
UNIDADE 4 93
ƒ(x) ƒ(x)
x x
(a) (b)
Figura 2 - (a) Descrição gráfica da regra 1/3 de Simpson; (b) Descrição gráfica da regra 3/8 de Simpson
Fonte: Chapra e Canale (2011, p. 514).
x3 x3 h
I f ( x)dx p ( x)dx f ( x1 ) 4 f ( x2 ) f ( x3 )
x1 x1 3
h ab
I f (a) 4 f f (b) , onde h=(b-a)/2.
3 2
ƒ(x3)
y = ƒ(x)
p(x)
ƒ(x1)
ƒ(x2)
h h
x
x1 = a x2 x3 = b
Figura 3 - Regra 1/3 de Simpson
Fonte: Gilat e Subramaniam (2008, p. 296).
Então, utilizamos a regra 1/3 de Simpson quando temos n=2, ou seja, vamos integrar
a função entre três pontos consecutivos usando um polinômio de segundo grau
(FRANCO, 2006). No caso de utilizar quatro pontos, podemos utilizar a regra 3/8,
que será vista adiante.
UNIDADE 4 95
Regra 3/8
de Simpson
b b 3
I f ( x)dx p ( x)dx h f (a ) 3 f ( x2 ) 3 f ( x3 ) f (b)
a a 8
3
I h f ( x1 ) 3 f ( x2 ) 3 f ( x3 ) f ( x4 )
8
ƒ(x2)
h h h
x
x1 = a x2 x3 x4 = b
2 EXEMPLO Use a regra 3/8 de Simpson para integrar (CHAPRA; CANALE, 2011):
de a = 0 a b = 0, 8 .
Resolução: uma única aplicação da regra 3/8 de Simpson exige quatro pontos igual-
mente espaçados:
= f (0) 0=
,2 f (0, 2667) 1, 432724
=f (0, 5333) 3=, 487177 f (0, 8) 0, 232
aplicando,
3
I h f ( x1 ) 3 f ( x2 ) 3 f ( x3 ) f ( x4 )
8
3
I (0, 26667) 0, 2 3(1, 432727) 3(3, 487177) 0, 232
8
I = 1, 519170
UNIDADE 4 97
1 3 3 2 3 3 2 3 3 2 3 3 1
y
1 3 3 1
1 3 3 1 ƒ(x12) ƒ(b)
1 3 3 1 1 3 3 1 ƒ(x11)
ƒ(x3) ƒ(x4)ƒ(x5)
ƒ(x2) ƒ(x6) ƒ(x10)
ƒ(a) ƒ(x7)
ƒ(x8) ƒ(x9)
h h h x
x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12
x1 = a x13 = b
Como a gente já viu no método anterior, para este também há pré-requisitos para o
uso desta equação:
1. Os subintervalos devem ser igualmente espaçados.
2. O número de subintervalos no domínio a, b deve ser divisível por 3.
Esses não são os únicos métodos numéricos para aproximar a integração numérica,
porém são os principais que analisamos nesta obra. A seguir, passaremos aos métodos
para soluções de equações diferenciais.
UNIDADE 4 99
Segundo Gilat e Subramaniam (2008), a aplicação do método de Euler na so-
lução de sistemas de EDOs (Equações Diferenciais Ordinárias) pode ser mostrada
primeiro para o caso de duas EDOs. Um sistema de duas EDOs de primeira ordem,
com y e z como variáveis dependentes e x como variável independente, tem a forma:
dy
= f1 ( x, y, z )
dx
dz
= f 2 ( x, y , z )
dx
yi 1 yi f1 xi , yi , zi h
zi 1 zi f2 xi , yi , zi h
dy
2 x3 12 x2 20 x 8, 5
dx
y 0, 5 x 4 4 x3 10 x2 8, 5 x 1
f (0, 1) 1, 0 8, 5(0, 5) 5, 25
A solução verdadeira em x = 0, 5 é
Logo, o erro é:
Et verdadeiro aproximado 3, 21875 5, 25 2, 03125
y 1 y 0, 5 f 0, 5, 5, 25 0, 5
3 2
y 1 5, 25 2 0, 5 12 0, 5 20 0, 5 8, 5 0, 5
y 1 5, 875
UNIDADE 4 101
Tabela 1 - Comparação dos valores verdadeiro e aproximado da integral de
y 2 x3 12 x2 20 x 8, 5 ,com a condição inicial de que y=1 em x = 0
h = 0,5
Solução verdadeira
0
0 2 4 x
Figura 6 - Comparação da solução verdadeira com a de Euler
Fonte: Chapra e Canale (2011, p. 589).
1
yi 1 yi k1 2k2 2k3 k4 h
6
UNIDADE 4 103
em que
k1 f xi , yi
1 1
k2 f x1 h, yi k1h
2 2
1 1
k3 f xi h, yi k2 h
2 2
k4 f xi h, yi k3 h
Observe que para EDOs, que são uma função apenas de x, o método RK de quarta
ordem clássico é parecido com a regra 1/3 de Simpson. Além disso, no método RK de
quarta ordem são desenvolvidas múltiplas estimativas da inclinação para se chegar a
uma inclinação média melhorada no intervalo. Cada um dos k’s representa uma incli-
1
nação. Então, a equação yi 1 yi k1 2k2 2k3 k4 h representa uma média
6
ponderada delas para chegar a uma inclinação melhorada (CHAPRA; CANALE, 2011).
f x, y 4e0,8 x 0, 5 y
k1 f 0, 2 4e 0, 5 2 3
0,8 0
Esse valor é usado para calcular um valor de y e uma inclinação no ponto médio,
y 0, 25 2 3 0, 25 2, 75
k2 f 0, 25, 2, 75 4e 0, 5 2, 75 3, 510611
0,8 0,25
Essa inclinação, por sua vez, é usada para calcular um outro valor de y e uma outra
inclinação no ponto médio,
y 0, 25 2 3, 510611 0, 25 2, 877653
dv c
Na dedução da equação, g v , baseada na segunda lei de Newton, para
dt m
calcular a velocidade “v” de um paraquedista em queda livre como função do
tempo, temos que g é a constante gravitacional, “m” é a massa e “c” é o coeficiente
de arrasto. Tais equações, que são compostas por uma função desconhecida e
suas derivadas, são chamadas equações diferenciais. Essa equação é, algumas
vezes, denominada equação de taxa, porque expressa a taxa de variação de
uma variável como uma função das variáveis e parâmetros. Essas equações
desempenham papel fundamental na engenharia, já que muitos fenômenos
físicos são mais bem formulados matematicamente em termos de sua taxa de
variação.
Fonte: adaptado de Chapra e Canale (2011).
UNIDADE 4 105
Chegamos ao fim de mais uma unidade! Quantas coisas novas aprendemos! Uma
delas foi calcular de forma numérica problemas que exigem integração numérica e
ainda equações diferenciais. Vimos que há várias formas de executar esses cálculos
e cada uma possui uma particularidade, o que é importante ressaltar.
Outro ponto fundamental no cálculo numérico é a questão dos arredondamentos
e casas decimais. Nesta unidade, percebemos como essa questão é fundamental para
obtermos um bom resultado.
Vimos que as integrais resolvidas numericamente são utilizadas principalmente
em casos em que as integrais são muito difíceis ou que não se sabe como resolvê-las
ou, ainda, em casos em que não exista solução analítica, e mostraram-se de forma
simples quando aplicamos as fórmulas do método de Newton-Cotes, que é aquele
que se aplica a funções com valores conhecidos em pontos igualmente espaçados.
Pudemos aprofundar nosso conhecimento nas famosas Regra do Trapézio e Regra
de Simpson.
Por fim, apresentamos os métodos de resolução de equações diferenciais por meio
numérico, mediante os métodos de Euler e Runge-Kutta. Esses métodos aplicados a
problemas que envolvem taxa de variação de uma variável em relação à outra exigem
atenção no momento de desenvolvê-los manualmente, devido ao grande volume de
informação.
1 In x
4
1. Calcule o Valor da Integral I 3
e x 1 dx aplicando a regra dos 3/8 com
3 subintervalos.
n=3 h=1
i x1 yi ci
0 1 1,0744 1
1 2 2,3884 3
2 3 3,4529 3
3 4 4,2691 1
O resultado correto é:
a) 8,5753.
b) 7,9988.
c) 9,9997.
d) 4,5432.
e) 6,0009.
dy
2. Use o método de Euler para resolver a EDO 1, 2 y 7e0,3 x de x=0 a
dx
x=2,5 com a condição inicial y=3 em x=0, use h=0,5. Faça até o sexto ponto.
As coordenadas x e y do sexto ponto são:
a) (3,5; 2,879).
b) (1,3; 2,324).
c) (4,2; 5,278).
d) (6,7; 4,341).
e) (2,5; 3,542).
107
3. Use o método de Runge-Kutta de quarta ordem para resolver a EDO
dy
1, 2 y 7e0,3 x de x=0 a x=1,5 com a condição inicial y=3 em x=0, use h=0,5.
dx
Faça até o quarto ponto.
As coordenadas x e y do quarto ponto são:
a) (1,9; 2,366).
b) (3,5; 3,867).
c) (1,5; 4,167).
d) (2,7; 1,252).
e) (4,2; 3,365).
108
LIVRO
FILME
109
ARENALES, S.; DAREZZO, A. Cálculo Numérico: Aprendizagem com Apoio de Software. 2. ed. São Paulo:
Cengage, 2016.
BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.
CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.
FRANCO, N. B. Cálculo Numérico. 1. ed. São Paulo: Pearson Prentice Hall, 2006.
GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre:
Bookman,2008.
HUMES, A. F. P. C.; MELO, I. S. H.; YOSHIDA, L. K.; MARTINS, W. T. Noções de cálculo numérico. São Paulo:
McGraw-Hill do Brasil, 1984.
110
1. a) 8,5753.
4
I In x3 e x 1 dx
1
teremos 3 intervalos: [1,2][2,3][3,4]
b b 3
I f ( x)dx p ( x)dx h f (a ) 3 f ( x2 ) 3 f ( x3 ) f (b)
a a 8
onde teremos:
3 1
I 1, 0744 3 2, 3884 3 3, 4529 4, 2691
8
3
22, 8674
8
= 8, 575275
2. e) (2,5; 3,542).
dx
Para calcular a EDO, 1, 2 y 7e0,3 x , x de 0 a 2,5, com passo de 0,5. Condição inicial y=3 e x=0.
dy
Temos que xi 1 xi h e yi 1 yi f xi , yi h .
X Y
1 (inicial) 0 3
2 0,5 4,7
3 1 4,892
4 1,5 4,550
5 2 4,052
6 2,5 3,542
111
3. c) (1,5; 4,167).
dx
Para calcular a EDO, 1, 2 y 7e0,3 x , de x=0 a x=1,5 com a condição inicial y=3 em x=0, use h = 0,5.
dy
1
Temos, pelo método, que yi 1 yi k1 2k2 2k3 k4 h , onde
6
k1 f xi , yi
1 1
k2 f xi h, yi k1h
2 2
1 1
k3 f xi h, yi k2 h
2 2
k4 f xi h, yi k3 h .
x y k1 k2 k3 k4
1 0 3 3,4 1,8742044043 2,331943083 1,0257899852
2 0,5 4,0698404 1,141147339 0,3634608336 0,5967667852 -0,056141022
3 1 4,3202955 0,0013728934 -0,373741568 -0,26120723 -0,564233252
4 1,5 4,1675657 -0,537681795 -0,698886767 -0,650525275 -0,769082238
112
113
114
Me. Andre Abdala Noel
Esp. Kryssian Romeiro
Conceitos Básicos
de Programação
PLANO DE ESTUDOS
Algoritmos Fluxograma
OBJETIVOS DE APRENDIZAGEM
• Apontar as definições e diferenças entre hardware e software. • Utilizar fluxogramas para escrever algoritmos completos.
• Entender o conceito de algoritmos e como ele se aplica • Escrever algoritmos em forma de pseudocódigo para che-
à programação. gar próximo à programação de computadores.
• Aprender a escrever algoritmos em forma de uma des-
crição narrativa.
Hardware
e Software
“
que funciona apenas quando o sistema todo está Podemos ter periféricos de entrada, que
“ligado”. são aqueles que só transferem dados ao com-
Não há como dar mais importância ao har- putador (mouse, teclado, joystick etc.), pe-
dware ou ao software, pois um não faz sentido riféricos de saída, aqueles que recebem os
sem o outro. Contudo, historicamente, no início, dados do processador (monitor, impressora,
apenas o hardware tinha valor, enquanto o soft- placa de som etc.), periféricos de entrada
ware era apenas “necessário” para a máquina fun- e saída, que enviam e recebem dados (pen-
cionar. Foi a partir da década de 80 que o software drives, CD-RW, cartões de memória etc.), ou
passou a ter mais valor e a ser mais reconhecido ainda os periféricos de comunicação, que
com a estabilização das licenças de software e a permitem a comunicação com outras má-
concorrência entre desenvolvedores de softwares quinas e/ou pessoas (modem, placa de rede
em geral e sistemas operacionais. etc.) (NOEL, 2019, p. 151, grifos do autor).
UNIDADE 5 117
Temos, então, que a arquitetura de computadores compreende essa Software
estrutura básica de entrada, processamento (CPU e memória) e
saída. Quando falamos em computadores, estamos generalizando, De acordo com Mokarzel e
pois equipamentos como smartphones, tablets e diversos outros Soma (2008), define-se por
dispositivos modernos se enquadram como computadores e se- software um conjunto de pro-
guem essa arquitetura. gramas de um computador
– programa como sendo uma
entidade pela qual se consegue
instruir um computador para
que ele faça o que se deseja. Pro-
A introdução de textos em um computador a partir do teclado se grama nada mais é do que uma
dá por meio de uma conversão de cada tecla digitada para um sequência de instruções que, ao
determinado conjunto de 8 bits. Cada tipo de caractere tem seu serem executadas, realizam uma
conjunto específico denominado padrão de bits. Ora, com 8 bits, determinada tarefa.
existem 256 combinações de bits distintas, possibilitando repre- Existem diferentes formas
sentar em um computador 256 caracteres diferentes. de classificar os softwares. Uma
A determinação dos padrões de bits para cada caractere é esta- forma é a partir de sua utilização.
belecida por convenções internacionais denominadas códigos Softwares que prestam serviço
para informação. O código mais conhecido é o ASCII (American para deixar a máquina mais atra-
Standard Code for Information Interchange) [...]. tiva, por exemplo, são denomina-
Fonte: Mokarzel e Soma (2008, p. 31). dos softwares de sistema, como
sistemas operacionais, compila-
dores e montadores. Outro tipo
É importante ter em mente que, apesar das inúmeras variações de software é de aplicação, ou
de equipamentos em capacidade e qualidade, o funcionamento aplicativos, que é voltado para
dos diferentes computadores é similar. No início, era necessário simples usuários de máquinas,
aprender funções de programação específicas para cada arquitetura, como planilhas eletrônicas e pro-
enquanto hoje nós programamos independente (ou quase) da cessadores de texto, por exemplo
arquitetura, e o sistema operacional se encarrega de conversar (HENNESSY; PATTERSON,
com o hardware. 2000).
Softwares de
aplicação
twares
Sof istema de
s
Hardware
Existem softwares para as mais diferentes utilidades. É bom ressaltar que eles são programas executáveis
escritos a partir de algoritmos (que veremos à frente) em uma determinada linguagem de programação,
que possui as instruções para o sistema operacional.
Apesar da popularização do termo “app” ou “aplicativo” para descrever especificamente software
para plataformas móveis, como smartphones, esses aplicativos são “programas de computador” ou
“software” como os demais. A forma de programar é parecida, tendo que tratar, é claro, de algumas
especificidades de plataformas móveis.
Mais adiante, na Unidade 6, veremos um pouco mais sobre linguagens de programação e, na Unidade
7, veremos como se dá o processo de escrita e compilação de software, para que possamos escrever
nossos próprios programas. Nas Unidades 8 e 9, colocaremos um pouco de mão na massa, utilizando
programação específica para a área matemática, em que veremos algumas implementações do que
discutimos nas primeiras unidades.
UNIDADE 5 119
Algoritmo
UNIDADE 5 121
Algoritmos podem ser escritos em vários níveis de detalhe (GILAT; SUBRAMANIAM, 2008). Como
um exemplo simples, considere um algoritmo para a solução da equação quadrática:
b b2 4 ac b b2 4 ac
x1 x2
2a 2a
Uma vez planejado, o algoritmo pode ser implementado em um programa de computador e ser usado
para quaisquer valores de a, b e c.
UNIDADE 5 123
Para facilitar o entendimento da solução e ficar melhor visualmente, é comum utilizar a descrição
narrativa como uma lista de passos. Por exemplo, já pensou em como você faz para assistir TV?
1 Ir até a sala.
2 Procurar o controle remoto.
3 Se jogar no sofá.
4 Ligar a televisão.
5 Passar pelos canais até achar algo interessante.
6 Desistir e abrir plataformas de streaming.
7 Escolher o filme ou série.
8 Relaxar.
Essa é uma sequência de passos que costumamos executar. Por mais simples que pareça, ela nos introduz
conceitos interessantes e importantes sobre algoritmos. Aprendemos que algoritmos são sequências de
tarefas. Isso é visto no exemplo apresentado na forma de uma lista. O algoritmo nos introduz à ideia
de looping (ou repetição). No quinto passo, passamos pelos canais de forma repetitiva até encontrar
algo interessante (cuidado que podemos cair em um looping infinito se não houver algo interessante
na TV). No sexto item, interrompemos o looping e partimos para uma outra opção, o que pode nos
apresentar uma estrutura condicional, que significa algo como: “Se chegar a um número de tentativas
sem sucesso, faça outra coisa”.
Em resumo, a descrição narrativa é um ótimo primeiro passo para colocar as ideias em ordem e
descrever a sequência de ações necessária para resolver o nosso problema.
Para um problema matemático simples, como a soma de dois números, podemos ter o seguinte
algoritmo:
1. Obter o primeiro número.
2. Obter o segundo número.
3. Realizar a soma dos dois números.
4. Exibir o resultado da soma na tela.
UNIDADE 5 125
Variáveis reais: A, B, C, X1, X2, delta, real, imag
Testes de
Início A, B, C Delta B²– 4*A*C Condição
Processos com uma ou várias repetições, chamamos de loop. Ele é mostrado graficamente por um
percurso fechado do fluxograma. Para que ele chegue até o final, é preciso que um dos passos do loop
seja uma ramificação condicional; caso contrário, haverá uma repetição infinita (BROCKMAN, 2013).
Em outras palavras, um looping sempre precisa de uma condição de parada. Veja a seguir um exemplo
de um fluxograma com um loop e uma ramificação condicional:
Para contar
moedas
Zerar
contador
Moedas no Mostrar
bolso? Não
contagem
Sim
Remover
moeda
Loop + Ramificação condicional
Incrementar
contador
De posse de tal fluxograma, podemos escrever um código que pode ser transformado em programa
de computador.
Tenha sua dose extra de conhecimento assistindo ao vídeo. Para acessar, use
seu leitor de QR Code.
UNIDADE 5 127
Pseudocódigo
Apesar de ter sido criada apenas para fins didáticos ou para estruturar o código antes de uma im-
plementação real, existem alguns projetos de compiladores para pseudocódigo, geralmente com
finalidade didática. Neles, é possível programar em português bem estruturado e definido, bem
como executar para ver o resultado.
Um desses projetos mais conhecido é o VisualG. Ele possui a vantagem de mostrar um resultado
do programa que você escreveu na tela, o que pode funcionar como um incentivo. Contudo, tome
cuidado, porque um compilador de pseudocódigo pode te deixar preguiçoso para entender o código,
já que ele vai analisar e tentar compilar o que você fez. Sempre saiba ler o seu código e encontrar
os erros, não deixe isso só para o compilador.
Em nossos exemplos de pseudocódigos, os algoritmos são iniciados com um nome que os identifica,
seguido de seu corpo delimitado pelas chaves “{” e “}”. No corpo do algoritmo, são colocadas, primeiro,
as declarações de variáveis e, depois, os vários comandos do programa, que podem ser comandos de
atribuições, de entrada e saída de dados, condicionais ou de repetição.
RaizesEquação2Grau {
Variáveis Reais: A, B, C, X1, X2, Delta, Real, Imag;
Sub-Rotina
Na linguagem dos algoritmos, o termo para uma sequência detalhada que está incluída em um passo
mais geral é sub-rotina, e também se chama de sub-rotina a ação de ir do processo principal para uma
sub-rotina (BROCKMAN, 2013). Para ficar mais claro, vamos voltar ao exemplo do bolo:
UNIDADE 5 129
Fluxograma Sub-rotinas
principal sub-rotinas proporcionam um
Para fazer Para Para misturar Para misturar mecanismo de abstração a um
o bolo preparar bolo cobertura processo que permite ao proje-
tista ignorar detalhes menores
e se preocupar apenas com o
Colocar mistura Bater açúcar
Preaquecer de bolo, água conjunto.
Preparar óleo e ovos em com manteiga
forno a 180°C por 1 minuto
uma tigela
Testes de
Condição
Bater por Adicionar leite
Misturar bolo Untar forma e uma clara
2 minutos em neve De forma análoga ao que já vi-
mos com os fluxogramas, em
pseudocódigo também pode-
Bater por mos escrever repetições em
Assar 4 minutos
nossos algoritmos. Usando o
exemplo que foi dado com os
fluxogramas, veremos como
Misturar decidir o tempo de assar o
cobertura
bolo. Para a descrição de uma
sequência simples como essa,
a representação em pseudocó-
Aplicar digo não é muito diferente da
cobertura
linguagem comum. Na descri-
Figura 9 - Fluxograma principal e sub-rotina ção de uma ramificação é que
Fonte: Brockman (2013, p. 253). o pseudocódigo começa a ad-
quirir um formato diferente.
Veja que as sub-rotinas não mudam o processo para se fazer o Reescrevendo a ramificação
bolo, elas apenas acrescentam mais passos ao roteiro, dando mais do algoritmo do fluxograma
detalhes ao processo e o simplificando, já que as tarefas ficam me- (Figura 10) em pseudocódigo,
nores e mais simples. Ainda de acordo com Brockman (2013), as temos:
comumente usadas. Suponha que a cláusula SE- Quando não conhecemos o número de repeti-
NÃO de um SE/ENTÃO/SENÃO contenha outro ções, podemos utilizar o comando ENQUAN-
SE/ENTÃO. Para esses casos, o SENÃO e o SE TO. A ideia é que enquanto uma determinada
podem ser combinados na estrutura SE/ENTÃO/ condição for verdadeira, um bloco de comandos
SENÃOSE. A estrutura CASO (ou ESCOLHA) é executado.
UNIDADE 5 131
Para o nosso algoritmo de contar moedas, te- o bloco de código vai executar, pelo menos, uma
mos em fluxograma e podemos escrever o código vez, diferentemente do ENQUANTO ou mesmo
a seguir. do PARA.
Por exemplo, imagine que você quer somar os
Contador <- 0
ENQUANTO (Tem moedas no bolso) FAÇA
números de 1 a 10. Você pode escrever o seguinte
Remover moeda código:
Contador <- Contador + 1
FIM-ENQUANTO
ESCREVA (“Havia “, Contador, “ moedas no bolso”)
Soma <- 0
Figura 13 - Pseudocódigo para contar as moedas do bolso X <- 1
Fonte: os autores.
REPITA
Por último, temos o comando REPITA, que fun- Soma <- Soma + X
ciona de forma muito similar ao ENQUANTO, ATÉ QUE X = 10
com a diferença que ele, primeiro, executa um blo-
Figura 14 - Pseudocódigo para somar números de 1 a 10,
co de código para, depois, testar se vai continuar usando a estrutura REPITA
em looping. Com isso, temos uma certeza de que Fonte: os autores.
Note que a condição no comando REPITA é contrária ao que usaríamos no ENQUANTO, pois no
REPITA o bloco continua em looping enquanto a condição for falsa e não verdadeira. Algumas lin-
guagens implementam o comando FAÇA/ENQUANTO, que funciona como o REPITA, mas permanece
em looping enquanto a condição for verdadeira.
No caso do nosso algoritmo apresentado, o número 10 entrou na soma? Sim, ele entrou, porque pri-
meiro a soma foi efetuada para depois o valor de X ser testado.
Chegamos, então, ao final de nossa unidade. Ela apresentou conceitos a respeito do funcionamento de
computadores e também de programação. Lembrando que o que foi apresentado aqui não é suficiente
para você aprender a programar, mas também esse não é o nosso objetivo neste livro. Contudo, os con-
ceitos iniciais apresentados lhe podem ser muito úteis no estudo de programação. Tendo em vista que a
programação está a cada dia mais presente em nosso dia a dia e que ela vem a ser uma ferramenta muito
útil em qualquer área do conhecimento, aprender programação funciona, hoje em dia, como uma segunda
linguagem para a nossa vida.
133
3. Para programar um computador, precisamos escrever os nossos algoritmos em
uma linguagem que o computador entenda.
Considerando o texto da questão 2, avalie as afirmações a seguir.
I) Algoritmos são comandos de linguagens de programação que podem ser
executados.
II) A linguagem conhecida como Português Estruturado é uma linguagem de
programação comercial que utiliza comandos em português.
III) Os algoritmos não, necessariamente, têm a ver com computadores.
IV) Português Estruturado possui uma gramática limitada e não ambígua.
134
FILME
FILME
Revolutions OS
Ano: 2001
Sinopse: com a participação de algumas das pessoas mais influentes da história,
como Richard Stallman, Eric Raymond e Linus Torvalds, o documentário come-
ça no início da década de 80 com o projeto GNU, passando pela definição de
software livre e código aberto, o papel do Apache na adoção inicial do Linux, a
liberação do código-fonte do navegador Netscape para combater o monopólio
do Internet Explorer da Microsoft, o IPO da Red Hat e a adoção do Linux e do
software aberto de forma geral como modelo viável de negócios.
Comentário: vale muito a pena assistir esse documentário porque é feito com
depoimento das próprias pessoas que fazem parte da história da computação
e, mais especificamente, de software.
135
BROCKMAN, J. B. Introdução à engenharia: modelagem e solução de problemas. Rio de Janeiro: LTC, 2013.
CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.
CORMEN, T. H. et al. Algoritmo: teoria e prática. 2. ed. Rio de Janeiro: Elsevier, 2002.
GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre: Bookman,
2008.
MOKARZEL, F. C.; SOMA, N. Y. Introdução à ciência da computação. Rio de Janeiro: Elsevier, 2008.
136
1. C.
2. B.
3. D.
137
138
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Linguagens de
Programação
PLANO DE ESTUDOS
OBJETIVOS DE APRENDIZAGEM
UNIDADE 6 141
Sendo assim, os sistemas digitais trabalham apenas com duas
possibilidades de informação: 0 ou 1, falso ou verdadeiro, tensão
baixa ou tensão alta. Esse formato digital é a maneira pela qual a
informação é armazenada e manipulada, seja em um disco rígido,
na memória principal, no processador ou no tráfego de informações
em uma rede.
UNIDADE 6 143
Contudo, não podemos (ainda) utilizar lin- Ainda existem as linguagens fortemente
guagens naturais para programar. E o que seriam tipadas em que os tipos de dados das variá-
elas? As linguagens que usamos em nosso dia a veis não mudam em tempo de execução e não
dia (português, inglês, espanhol), que são cheias podem ser realizadas operações com variáveis
de ambiguidades e possuem uma noção de con- de tipos diferentes. Por outro lado, existem as
texto que as máquinas não dão conta de entender. linguagens fracamente tipadas, na qual a mis-
Por isso, as linguagens de programação são não tura de tipos ou a troca do tipo de dados de uma
ambíguas e com uma gramática simplificada. variável não ocasiona nenhum erro.
Temos, ainda, a classificação em níveis, que
Como Classificar mencionaremos adiante, na qual uma linguagem
as Linguagens de mais baixo nível se aproxima mais à lingua-
gem de máquina, enquanto uma linguagem de
Existem várias formas diferentes de classificar as mais alto nível se aproxima mais da linguagem
linguagens de programação. Podemos classificar natural (ou linguagem falada).
pela forma em que geram o programa final, por
exemplo. Existem as linguagens compiladas, E os Paradigmas?
cujo código-fonte (o programa escrito na lin-
guagem em questão) passa por um compilador Os paradigmas de linguagens de progra-
que verifica se há erros, otimiza o código e gera mação têm a ver com o estilo de escrita dos
um arquivo executável permanente. Existem as programas. Essa tem sido uma forma bastante
linguagens interpretadas, cujo código-fonte comum de classificar as linguagens, que leva
passa por um interpretador que faz um pro- em consideração a forma em que são utilizadas.
cesso parecido, mas toda vez em que se precisa É importante ter em mente que uma lingua-
executar o programa, ela não gera um arquivo gem de programação pode dar suporte à pro-
executável permanente. gramação em diferentes paradigmas, ou seja,
Olhando de uma outra forma, podemos ava- existem linguagens que admitem apenas um
liar como as linguagens lidam com os tipos de paradigma, mas existem linguagens que admi-
dados. Existem as linguagens estaticamente tem mais de um.
tipadas, que exigem que as variáveis sejam de- Existem vários paradigmas de programação
claradas com seus devidos tipos de dados antes diferentes, mas usaremos uma definição que
de serem utilizadas. Há também as linguagens foca nos principais. Segundo Sebesta (2010),
dinamicamente tipadas que não exigem a de- existem quatro paradigmas principais: Impera-
claração de variáveis. A variável recebe o tipo de tivo, Funcional, Lógico e Orientado a Objetos.
dados quando recebe um valor, o tipo da variável Já Scott (2009) separa os paradigmas em dois
será o tipo daquele valor. grupos:
Na prática, qual é a diferença? Nos paradigmas imperativos, a programação segue uma lógica de pro-
gramação com a ideia das tarefas (ou instruções) executadas pelo computador. São paradigmas mais
naturais para o computador.
Os paradigmas declarativos seguem uma ideia de que as informações são “declaradas” ao com-
putador e o resultado final vem por meio da combinação das informações ou funções. Aproxima-se
um pouco mais do funcionamento do cérebro humano. O processamento é efetuado de acordo
com todo o conhecimento e as regras informadas na programação, mas lembrando que tudo acaba
sendo ainda traduzido para a linguagem de máquina para ser efetivamente processado.
UNIDADE 6 145
Linguagens
Simbólicas
No entanto, escrever um programa diretamente em qualquer uma das linguagens (A) ou (B) torna-se
um trabalho extremamente monótono e cansativo, que ocuparia muito tempo, tornando-o altamente
sensível a numerosos erros, o que nos leva a pensar que seria extremamente conveniente se fosse pos-
sível escrever instruções para o equipamento diretamente na linguagem fluente, como:
Infelizmente, não é possível programar da forma apresentada. Como forma de contornar este incon-
veniente, criou-se uma série de linguagens simbólicas de programação, que apresentam características
intermediárias entre ambas as linguagens, ou seja, uma similaridade entre a linguagem interna do
equipamento (A e B) e a linguagem humana (C), permitindo, assim, que a programação possa ser
entendida por alguém que seja familiarizado com certas regras, ainda se assemelhando de maneira
suficiente à linguagem da máquina, tornando possível a um determinado programa fazer a conversão
da linguagem simbólica para a linguagem da máquina. Veja o exemplo a seguir.
Quadro 1 – Comparação entre as linguagens utilizadas por humanos e máquinas
UNIDADE 6 147
É possível observar, pelo Quadro 1, que a lingua-
gem simbólica force uma ideia geral da natureza
da operação, sem trazer a fluência e a redundância
da linguagem humana. No entanto, é importante
destacar que a utilização deste tipo de linguagem
requer, ainda, a criação de um programa conver-
sor, que traduza um programa simbólico para a
linguagem interna da máquina. Mesmo assim, é
possível destacar algumas vantagens na utilização
da linguagem simbólica (HABERKORN, 1977):
1. Redução do tempo e, consequentemente,
do custo de programação.
2. Por ser um trabalho menos monótono e
cansativo, minimiza a ocorrência de erros.
3. Redução do tempo de testes para a corre-
ção de erros.
4. Facilidade em introduzir alterações em
programas já existentes.
5. Facilidade em desenvolver rotinas pa-
dronizadas a serem utilizadas em vários
programas.
UNIDADE 6 149
Nível da
Linguagem
“Pessoa”
Usuário
c) O número de sentenças
s Linguagem de Altíssimo Nível Natural a escrever numa lin-
ma
gra Lotus, VisiCale, dBase...
w ar
e - Pro
Linguagem de Alto Nível
Altíssimo guagem de baixo nível é
t
Sof Basic, Cobol, Pascal...
C.Forth
Alto aproximadamente igual
Sistema
Micro Montadora Operacional ao número de instruções
Linguagem Assembler
de Máquina Baixo que o programa conver-
Hardware
Equipamento sor produzirá em LM.
O Assembly é uma linguagem de baixo nível que depende das características específicas do compu-
tador para o qual está se programando. Quando essa linguagem está sendo utilizada, o processo que
deseja ser realizado é descrito de maneira minuciosa. Implica que o programador deverá, praticamente,
escrever uma sentença em linguagem Assembly para cada processo que deseja obter em linguagem de
máquina (HABERKORN, 1977).
O programa em Assembly é escrito em texto puro (ou texto plano) que recebe o nome de progra-
ma-fonte. É este programa que o conversor irá transformar em um outro programa de linguagem de
máquina, que será chamado de programa-objeto ou módulo (HABERKORN, 1977).
Veremos, ainda, diferenças com a programação em linguagem C, uma linguagem escrita na década
de 70 e uma das mais utilizadas no mundo. É uma linguagem versátil e compacta, presente no códi-
go-fonte dos sistemas operacionais que usamos e em diversos sistemas embarcados, aqueles que são
programados e embutidos nos dispositivos.
A linguagem C, apesar de estar em um nível mais alto que a linguagem Assembly, ainda possui muitas
características de baixo nível, como a manipulação de ponteiros, alocação de memória, até mesmo a
possibilidade de embutir código Assembly dentro da programação em C.
UNIDADE 6 151
Linguagens de
Programação de
Alto Nível
UNIDADE 6 153
Com essas informações, cria-se uma variável
de controle termo (linha 15), que armazenará ter-
mo a termo de nossa P.A. (sim, não é a melhor
forma de fazer esse cálculo), começando pelo
primeiro termo (linha 16). E há, ainda, a variável
soma (linha 17), que armazenará toda a soma,
começando com o valor zero.
Das linhas 18 a 21 há um looping que, enquan-
to não passar do último termo (linha 18), soma-se
o valor do termo atual ao resultado que temos da
soma (linha 19) e atualiza o termo para o próximo
termo (linha 20).
Por fim, exibe-se na tela o resultado final da
Figura 3 - Programa escrito em C para realizar a soma dos soma (linha 22) e termina o programa (linha 24).
termos de uma P.A.
Fonte: os autores.
FORTRAN
Nós vimos que existem diversas linguagens de programação de alto nível e que as linguagens podem
ter propósitos específicos. Portanto, não há uma linguagem específica que seja melhor do que as ou-
tras para qualquer finalidade. Para você criar um programa para auxiliar no seu trabalho, é preciso
conhecer como funciona uma linguagem de programação, assim como seus comandos e estruturas.
Por mais que o intuito desse conteúdo não seja formar programadores, é interessante o conhecimento
e o domínio de, pelo menos, uma linguagem de programação, visto que a programação hoje está em
todas as áreas do conhecimento.
Nas próximas unidades, estudaremos o processo de criação de programas, algumas diferenças
entre tipos de programas de computador, para, depois, focar em softwares matemáticos que podem
nos ajudar nas áreas de engenharia.
Aproveite bem o conteúdo!
UNIDADE 6 155
Você pode utilizar seu diário de bordo para a resolução.
156
3. Existem diferentes paradigmas de linguagens de programação que podem ser
utilizados de acordo com a linguagem ou necessidade.
Assinale V (verdadeiro) ou F (falso).
( ) Os paradigmas de linguagens de programação podem ser entendidos como
estilos de programação.
( ) Uma linguagem pode ter apenas um paradigma.
( ) Os paradigmas declarativos se aproximam à forma que o computador trabalha,
enquanto os imperativos funcionam mais próximos ao pensamento humano.
Assinale a alternativa que apresenta a sequência correta:
a) V-V-V.
b) V-V-F.
c) V-F-F.
d) F-F-V.
e) F-F-F.
157
FILME
WEB
Cursos em Vídeo
O canal no youtube “Cursos em Vídeo” traz mais de quinze cursos, muitos deles
de programação, produzidos pelo professor Gustavo Guanabara. Os cursos são
gratuitos e com uma boa didática.
Para acessar, use seu leitor de QR Code.
WEB
Prof. Isidro
O Prof. Isidro tem um canal bem claro e didático sobre programação, com alguns
conceitos iniciais e fundamentais de programação em geral. Também dá dicas
de programação em Java e programação de games.
Para acessar, use seu leitor de QR Code.
WEB
Carol Soares
Muitos canais de conhecimento na área de desenvolvimento foram compilados
nessa lista da Carol Soares e é atualizada a partir de contribuições da comuni-
dade. Tem muito conteúdo gratuito e de qualidade.
Para acessar, use seu leitor de QR Code.
158
HABERKORN, E. M. Computador e Processamento de Dados. São Paulo: Atlas, 1977.
IRVINE, K. R. Assembly language for Intel-based computers. 4. ed. New Jersey: Prentice Hall, 2003
MEIRELLES, F. de S. Informática: Novas aplicações com microcomputadores. São Paulo: McGraw-Hill, 1988.
159
4. C.
5. B.
6. C.
160
161
162
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Criação e Execução
de Programas
PLANO DE ESTUDOS
OBJETIVOS DE APRENDIZAGEM
• Entender o que é necessário para escrever programas • Estudar o uso de máquinas virtuais para execução de
de computador. programas.
• Analisar o processo de transformar o programa-fonte em • Apresentar a forma de programação para web e a execu-
programa executável. ção dos programas.
• Diferenciar compiladores e interpretadores de código.
Como Escrever
Códigos
UNIDADE 7 165
linguagem é a melhor para começar. Alguns su- Você deu uma boa analisada no programa (Figura
gerem iniciar com uma pseudolinguagem. Alguns 1)? Entendeu o que o fluxograma apresenta? Con-
iniciam com a linguagem C, que é bem antiga, fesso que não é a forma mais bonita de fazer um
mas muito utilizada e serve de base para várias programa de soma ou subtração (principalmente
outras linguagens. Outros sugerem iniciar com o teste), mas vai servir bem para nosso exemplo.
uma linguagem de scripts, como Python ou, até A partir de um fluxograma, a gente consegue
mesmo, JavaScript. estabelecer correlações diretas com o código. Passo
Fique tranquilo, eu vou facilitar a sua vida e tirar a passo, o programa faz o seguinte: inicia, recebe
de você o fardo da decisão. Vou escolher a lingua- dois números digitados pelo usuário e pergunta se
gem para iniciarmos e vamos ver como criar um ele quer realizar uma soma. Se a resposta for “sim”,
programa simples na linguagem C. executa a soma e salva o resultado na variável “S”. Se
Primeiro, vamos definir o nosso programa. Para for “não”, executa a subtração e salva o resultado na
começar bem simples, vamos escrever um progra- variável “S”. Por fim, exibe o valor de “S” e termina.
ma que pode somar ou subtrair dois números. Sim,
com um simples programa, vamos fazer o mesmo
que o primeiro projeto de computador fazia.
Escrevendo o passo a passo de nosso programa Tenha sua dose extra de
conhecimento assistindo ao
em um fluxograma, ele fica assim: vídeo. Para acessar, use seu
Início leitor de QR Code.
N1, N2
Vamos passar isso para código, adicionando umas
entrelinhas para o programa ficar mais agradável.
FALSO Executar VERDADEIRO Primeiro, iniciamos o nosso código em C. Sem
soma?
aprofundar muito na linguagem, você só precisa
saber que o código inicia com a inclusão de uma bi-
blioteca (stdio.h, no caso) e abrindo a função “main”,
S = N1 - N2 S = N1 + N2 por onde o programa começa sua execução:
Fim
Figura 1 - Fluxograma de um programa que soma ou subtrai Figura 2 - Trecho inicial de código em linguagem C
dois números Fonte: os autores.
Fonte: os autores.
UNIDADE 7 167
Digitados os dados, resta agora O comando “return 0” serve para retornar ao sistema uma infor-
ao programa efetuar a operação mação de que o programa terminou sem erros.
e exibir o resultado. Chegamos Bom, agora que terminamos o nosso código, nada melhor
ao ponto do fluxograma em que do que apresentar o código completo todo junto. Se você quiser
temos uma tomada de decisão: (nós recomendamos), você pode copiar esse código, compilar e
“Executar a soma?”. Não precisa- executar para ter a sensação do funcionamento. por exemplo.
mos fazer duas perguntas. Como
nosso sistema é simples, podemos
considerar que se não for executar
a soma, sempre vai cair para exe-
cutar uma subtração.
UNIDADE 7 169
Esse processo de transformação do código em um programa exe-
cutável pode ser feito via compiladores ou interpretadores, que
possuem finalidades similares, mas desempenham processos dife-
rentes (MEIRELLES, 1994).
Adiante, trataremos com mais detalhes a diferença entre compila-
dores e interpretadores, mas agora vamos tratar sobre como funciona
o processo de compilação de um programa.
Quando um programador escreve o código-fonte de um pro-
grama, sua tarefa é a de gerar o arquivo com a programação, com os
comandos. Todo o resto do processo fica por conta do compilador.
Depois que o programador finaliza a escrita do código e o passa
para o compilador gerar o executável, o código passa por várias etapas
Processo de compilação antes de chegar ao resultado final. Primeiro, passa por um processo
de análises, tentando encontrar erros no código, então, gera um pro-
grama intermediário, que será otimizado antes de virar um programa
executável. O processo está ilustrado na figura a seguir.
Programa
Analisador Analisador Analisador
Fonte
Léxico Sintático Semântico
(txt)
UNIDADE 7 171
Compiladores
e Interpretadores
“
como vemos no trecho a seguir. o programa, dado que nem todo programador
O processo de interpretação é similar, com a quer vender seu código-fonte.
diferença que ele não gera um arquivo exe- Segundo Farias ([2019], on-line)1, os interpre-
cutável final, o código-fonte é interpretado tadores tendem a ser menores que os compilado-
toda vez que o sistema precisa ser executado. res e isso facilita a implementação de estruturas
Pode parecer estranho e não-usual, mas é de dados mais complexas em alto nível. Portanto,
o processo utilizado por linguagens como os prós e contras devem ser pesados na hora de
Python, JavaScript, PHP, Lua e Ruby (NOEL, adotar uma linguagem de programação.
2019, p. 166).
Interpretadores Interativos
Portanto, há linguagens amplamente utilizadas
no mercado atual que utilizam um processo Uma outra vantagem de linguagens interpretadas
ou outro, sendo que são formas diferentes de é a possibilidade de utilizar interpretadores em
chegar ao objetivo, que podem se adequar a modo interativo, que permitem que comandos
casos específicos. possam ser executados individualmente, sem a
Existem vantagens e desvantagens no uso de necessidade de criar um programa completo, e
interpretadores. Dentre as vantagens está o fato com respostas imediatas. É uma ótima estratégia
de facilitar o desenvolvimento, pois sempre se para testes ou aprendizado.
UNIDADE 7 173
REPL é a sigla utilizada para denominar interpretadores interativos. A sigla significa “Read-eval-print
loop” (Ler, avaliar e imprimir em looping). Há um site chamado “repl.it” (cujo endereço online é jus-
tamente esse) no qual você pode escrever programas ou testar comandos de forma interativa em
diversas linguagens de programação diferentes. É uma ótima ferramenta para testes e também tem
exemplos para ajudar a entender.
O site possui suporte às principais linguagens de programação, inclusive para as linguagens tradicio-
nalmente compiladas, como C e C++, por exemplo. Você pode acessar a lista de linguagens disponíveis
no link: https://repl.it/languages.
Diversas linguagens possuem esse tipo de interpretador, mas podemos adotar como exemplo a lin-
guagem Python. Ao instalar o interpretador Python, que é necessário para executar programas nessa
linguagem, o interpretador roda em modo interativo se for executado diretamente.
Na documentação da linguagem consta que o nosso primeiro uso do interpretador Python é uti-
lizá-lo como uma calculadora. Você pode digitar expressões matemáticas e já obter a resposta, já que
a sintaxe da linguagem segue o que a gente aprende de expressões na escola.
UNIDADE 7 175
Máquina
Virtual
#include <stdio.h>
Compilador para
Linux
int fibonacci(int n) {
if (n < 2) return 1;
return fibonacci(n-1)+
fibonacci(n-2);
}
int main() {
int i;
for (i = 1; i < 10; i++) {
printf(”%i: %i\n”, i,
fibonacci(i));
}
return 0;
}
Compilador para
Mac
Portanto, o programa final é dependente de uma plataforma e é preciso compilar o programa e gerar
um executável específico para cada plataforma que se deseja utilizar. É por esse motivo que você vai
na internet baixar um programa e a página de downloads te pergunta qual é o seu sistema operacional
e se é 64 bits ou não.
Esse quadro é comum na maioria das linguagens de programação, porém algumas delas utilizam
um artifício chamado máquina virtual, na qual é criada uma camada intermediária que funciona
como se fosse um computador com uma arquitetura única. Por isso, o código-fonte pode ser compi-
lado apenas uma vez e o programa gerado funciona em qualquer plataforma que tenha suporte a essa
máquina virtual.
“Espere aí!”, você pode estar pensando. “Foi muita informação para assimilar em apenas um pará-
grafo!”. Sim, foi! Mas vamos com calma, agora, ver como funciona.
Vou utilizar como exemplo a linguagem Java, que ficou famosa por ser multiplataforma utilizando
máquina virtual. A Figura 13 ilustra o processo da escrita até a execução de um programa feito em Java.
Um código escrito em Java (a folha, à esquerda) precisa ser compilado para se tornar um programa (o
compilador é representado pela engrenagem), mas ele não gera um arquivo executável para a plata-
forma, em vez disso, é gerado um bytecode (apresentado na imagem como um arquivo binário), que
é um programa objeto que tem instruções para a máquina virtual. Esse bytecode pode ser executado
em qualquer sistema que tenha a máquina virtual Java instalada (representada pela xícara de café),
sem a necessidade de recompilar para cada sistema.
UNIDADE 7 177
JVM
Portanto, o código-fonte é compilado e gera um arquivo binário (bytecode), que possui instruções que
serão convertidas pela máquina virtual para a arquitetura de onde a máquina virtual está sendo executa-
da. Por isso, ela precisa ter uma versão dela disponível para cada arquitetura, mas os programas criados
em Java terão apenas um bytecode que pode ser executado em qualquer máquina virtual Java (JVM).
Você já parou para pensar por que há uma xícara de café perto do relógio do Windows que fica
pedindo para você atualizar o Java? Se o seu computador tem essa xícara, é um sinal de que você
tem a máquina virtual Java instalada para executar algum programa que precisou dela e o café é o
símbolo da linguagem que recebeu esse nome graças ao famoso café da ilha de Java.
UNIDADE 7 179
Para entender a programação web, precisamos entender um pouco sobre a arquitetura cliente/
servidor. Um sistema web possui o lado do cliente – ou seja, o usuário final que está acessando o na-
vegador web – e o lado do servidor – que fica respondendo a requisições via protocolos utilizados na
web. Quanto ao servidor, é necessário saber apenas seu endereço URL ou o endereço IP.
Em relação à programação, chamamos de programação front-end aquela programação que roda no
lado do cliente, ou seja, direto no navegador. É uma programação focada, principalmente, na interação
do usuário, interfaces e usabilidade. Temos como linguagem de programação front-end a linguagem
JavaScript e um conjunto de frameworks JavaScript.
Já no servidor, é executada o que chamamos de programação back-end. O código escrito fica
armazenado no servidor e é executado de acordo com as requisições que o servidor recebe. É comum
ser uma programação com processamento mais pesado e acesso a bancos de dados, sendo que apenas
o resultado do processamento é encaminhado para o usuário, em forma de documento HTML, geral-
mente. A Figura 14 ilustra o processo. Como exemplo de linguagens de programação back-end, temos
PHP, ASP, Java, C# e Node.js, que é uma plataforma para executar JavaScript também no back-end.
CLIENTE SERVIDOR
NAVEGADOR PHP
HTML ASP
CSS C#
JAVA BANCO
JAVASCRIPT
PYTHON DE DADOS
UNIDADE 7 181
Você pode utilizar seu diário de bordo para a resolução.
182
2. A programação web está muito presente em nosso dia a dia e costumamos usar
diversos programas web em nossos navegadores.
Considerando o texto, assinale verdadeiro (V) ou falso (F):
( ) A programação front-end é executada no lado do cliente, diretamente no
navegador.
( ) Os servidores são as pessoas envolvidas no processo de desenvolvimento de
sistemas web.
( ) A programação back-end processa informações no servidor e envia ao usuário
apenas o que é necessário para ele.
183
LIVRO
LIVRO
184
FILME
Os Estagiários
Ano: 2013
Sinopse: Billy (Vince Vaughn) e Nick (Owen Wilson) são grandes amigos e traba-
lham juntos como vendedores de relógios. Eles são pegos de surpresa quando
seu chefe (John Goodman) fecha a empresa, por acreditar que o negócio esteja
ultrapassado. Com problemas financeiros, eles conseguem a inscrição em uma
seleção de estágio no Google. Mesmo sem terem a garantia que serão contra-
tados, eles partem para a sede da empresa e lá precisam lidar com a diferença
de idade entre eles e os demais competidores.
Comentário: um filme bom para mostrar um pouco do funcionamento de em-
presas de tecnologia, em especial a Google, e o impacto que pessoas que não
eram da área tiveram ao tentar se adaptar. Apesar de ser uma comédia e ficção,
traz muitos termos e conceitos reais de programação.
WEB
Vida de Programador
Um site que aborda programação com bom humor utilizando histórias reais e
tirinhas curtas. Provavelmente você não vai aprender muito sobre programação
ali, mas dá para perceber como é o dia a dia de quem trabalha desenvolvendo
sistemas.
Para acessar, use seu leitor de QR Code.
185
MEIRELLES, F. de S. Informática: novas aplicações com microcomputadores. São Paulo: Makron Books, 1994.
REFERÊNCIA ON-LINE
1
Em: http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/index.
html. Acesso em: 13 set. 2019.
186
1. D.
2. E.
3. Uma vantagem da compilação é que ela cria um arquivo executável permanente, que será utilizado sempre
que se precisar do programa, tornando o processamento mais rápido. Uma desvantagem é a necessida-
de de voltar ao código-fonte para realizar alguma alteração e passar novamente por todo o processo de
compilação.
187
188
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Programas e
Bibliotecas Matemáticos
PLANO DE ESTUDOS
Softwares Matemáticos
Bibliotecas de Programação
Livres
OBJETIVOS DE APRENDIZAGEM
• Analisar a utilização de planilhas de cálculos para a reso- • Descrever softwares livres similares ao Matlab e de grande
lução de problemas. desempenho.
• Conhecer o conceito de bibliotecas e como a programação • Aprender como utilizar ferramentas online que auxiliam
modular pode auxiliar. em cálculos matemáticos.
• Apresentar o software Matlab e as possibilidades de pro-
gramação e estatística.
Planilhas
de Cálculos
Microsoft Excel
Comumente chamado apenas de Excel, ele compõe o pacote Microsoft Office (Figura 1), sendo o
software gerenciador de planilhas mais conhecido no mundo. É um software proprietário, sendo seu
uso restrito ao pagamento da licença do pacote Office, que atualmente é um pagamento mensal.
Grosso modo, pode-se dizer que se trata de uma versão digital de uma grande folha contábil, na qual uma série
de cálculos sequencias e interconectados podem ser mostrados. Qualquer modificação dos dados de entrada
gera automaticamente uma atualização dos valores calculados a partir deste (CHAPRA; CANALE, 2011).
Entre os recursos numéricos internos estão aqueles que permitem a resolução de equações, traçado
de curvas e otimização, além de um suplemento de grande potencialidade, a VBA – uma linguagem de
macros que pode ser utilizada para a implementação de cálculos numéricos. Muitos usuários aderem ao
Excel devido às suas várias ferramentas de visualização, como gráficos e desenhos de superfícies tridi-
mensionais – ferramentas de grande utilidade para análises na engenharia (CHAPRA; CANALE, 2011).
UNIDADE 8 191
Além de lançar dados nas planilhas, esse software também faz o cálculo automático e conta com um
bloco de notas analítico. Assim, a extração, a soma, o cruzamento e a interpretação de dados se tornam
processos automáticos e muito mais ágeis, economizando um bom tempo de trabalho.
Para melhorar ainda mais a produtividade com o Excel, a ferramenta conta com centenas de fórmulas
prontas. Por exemplo =HOJE() adiciona a data atual na planilha, =SOMA() realiza a adição de uma seleção
de forma automática. Existe fórmula até para testes condicionais (SE) e procuras relacionais (PROCV).
Fonte: Doutores do Excel ([2019], on-line)1.
Em linhas gerais, o Excel facilita a análise de dados devido à facilidade do uso de fórmulas, correlações e
geração de gráficos. A linguagem VBA é exclusiva da Microsoft, sendo que outros programas similares
utilizam outras linguagens ou ainda não dão suporte a macros.
LibreOffice Calc
Uma alternativa em software livre ao Excel é o LibreOffice Calc (Figura 2). Este faz parte da suíte de
escritório LibreOffice, que contém programas equivalentes aos principais programas da suíte da Mi-
crosoft. Além de gratuito, possui a vantagem de ter compatibilidade com o Excel, mantendo as mesmas
fórmulas e gráficos, podendo, inclusive, fazer a conversão entre os formatos.
Google Docs
Ainda há como alternativa o Google Docs (Figura 3), acessível pelo Google Drive – uma suíte de es-
critórios do Google para trabalho em nuvem. Possui também um gerenciador de planilhas de cálculos
(Google Sheets), que tem compatibilidade com Excel e LibreOffice.
Possui, ainda, algumas limitações de recursos, mas as vantagens o tornam muito atrativo, principalmente
para trabalho em equipe. Para utilizar, basta ter uma conta do Google. Entre as vantagens, podemos listar:
• Alta disponibilidade: uma vez que está hospedado em servidores do Google e acessível a qual-
quer momento.
• Trabalho colaborativo simultâneo: várias pessoas podem acessar e editar o documento ao mesmo
tempo, com um ótimo gerenciamento.
• Portabilidade: pode ser acessado em computadores ou dispositivos móveis.
• Controle de versões: mantém o histórico de alterações e permite recuperar alterações que foram
feitas a qualquer momento.
Em geral, as vantagens em sua utilização compensam em relação ao que esse software ainda não possui.
Entretanto, como o Excel muitas vezes é utilizado para processamentos de cálculos e fórmulas com-
plexas, recomenda-se um teste antes da adoção, para garantir que não lhe falte alguma característica
importante para o seu negócio.
UNIDADE 8 193
Bibliotecas
de Programação
Existem diversas funções matemáticas que são interessantes de serem utilizadas no cotidiano, princi-
palmente para quem trabalha com matemática ou engenharia.
Como todo bom programador sabe, não vale a pena reinventar a roda, ou seja, não vale a pena eu
ter que gastar tempo desenvolvendo uma função que calcula o seno de um ângulo se o cálculo do seno
é sempre o mesmo e, com certeza, alguém já fez esse trabalho.
Por isso, a maioria das linguagens de programação possui um conjunto de bibliotecas fornecidas para
expandir a capacidade da linguagem com novas funções, além daquelas bibliotecas que você mesmo pode
desenvolver. Essas funções não são incluídas no núcleo da linguagem para que esta não fique grande e pesada
sem necessidade, ou seja, nem todo programa precisa de funções matemáticas, por exemplo.
Bibliotecas, em programação, é um termo usado para arquivos externos (em relação ao seu código-
-fonte) que possuem funções que podem ser executadas pelo seu código. Isto é, você pode ter um
conjunto de funções para qualquer finalidade, que terão entrada e saída bem definidas, e você pode
utilizar qualquer uma dessas funções apenas indicando em seu código que vai usar aquele arquivo
de biblioteca e passando o nome da função com os dados de entrada em algum ponto do código.
A sintaxe para a inclusão da biblioteca pode mudar de acordo com a linguagem, mas toda linguagem
de programação possui uma forma de utilizar arquivos externos, o que ajuda muito no processo de
programação e reuso de código.
UNIDADE 8 195
Sendo assim, a linguagem C, por exemplo, possui a biblioteca math.h, que pode ser incluída no início
do arquivo fonte por meio da linha:
#include <math.h>
Com isso, o seu código-fonte tem à disposição uma série de funções. Algumas delas são descritas a seguir:
Tabela 2 – Relação de funções matemáticas da Linguagem C
Dessa forma, as linguagens de programação podem deixar um grande poderio de cálculo e processa-
mento para ser chamado apenas por programas que realmente vão utilizá-lo.
A linguagem Python também é conhecida por ter uma biblioteca matemática muito boa e poder
definir uma boa precisão em cálculos.
UNIDADE 8 197
Esse é apenas um “gostinho”
do que pode ser feito. Se você
tiver curiosidade, a linguagem
Python é uma linguagem bem
interessante para se aprender e
que abre grandes possibilidades
para automatizar seus cálcu-
los. Como vimos, a linguagem
Python possui uma biblioteca
matemática bem completa e
utilizada por uma grande co-
munidade, o que a mantém
atualizada e verificada.
Além disso, pelo conheci-
mento introdutório que temos
sobre programação nesta disci-
plina, você tem uma base já para
aprender alguma linguagem es-
pecífica. Python é uma lingua-
gem simples e muito utilizada
no mercado e em aplicações
práticas.
No entanto, qualquer lingua-
gem de programação que você
venha a escolher irá apresentar
um conjunto de funções e/ou
bibliotecas matemáticas. Muito
do que precisamos para nosso
trabalho já foi implementado
por alguém e pode estar dispo-
nível para uso de forma relativa-
mente simples. Então, siga uma
das regras mais importantes da
T.I.: “Não se esqueça de ler o
manual”.
UNIDADE 8 199
MATLAB
Para a engenharia, o MATLAB (nome originado do termo em inglês MATrix LABoratory, pois as
matrizes são o seu elemento mais básico de dados) se consolida cada vez mais como uma importante
linguagem utilizada na computação técnica. De acordo com Gilat e Subramaniam (2008, p. 441), entre as
suas utilidades,“o MATLAB pode ser usado em cálculos matemáticos, modelagem e simulações, análises
de dados e processamento, visualização e traçado de gráficos, e no desenvolvimento de algoritmos”.
No meio acadêmico, o MATLAB também possui vasta aplicação, constituindo cursos introdutórios
e avançados em matemática, ciência e, principalmente, em engenharia. Para as indústrias, este pro-
grama vem sendo utilizado pelos setores de pesquisa e desenvolvimento de novos projetos (GILAT;
SUBRAMANIAM, 2008).
A princípio, pode parecer difícil a utilização do MATLAB, mas podemos começar utilizando ope-
rações básicas, como fazemos em uma calculadora. A linguagem possui um conjunto de operadores
elementares apresentados na Tabela 3.
Tabela 3 - Operações aritméticas fundamentais com escalares
Podemos, a partir de seu interpretador, escrever expressões aritméticas e obter a resposta para elas.
>> 7 + 8/2
ans =
11
>> (7+8)/2 + 27^(1/3)
ans =
10.5000
Assim como aprendemos em outras linguagens de programação, podemos trabalhar com variáveis
para os valores que utilizamos.
Além dos operadores aritméticos anteriores, existem diversas funções predefinidas na linguagem,
em que a função recebe parâmetros de entrada e retorna o valor calculado. No exemplo a seguir, é
apresentada a função sqrt, que calcula a raiz quadrada de um número.
UNIDADE 8 201
A simulação de processos reais dos mais diferen-
tes ramos da engenharia permite aos estudantes
avaliar as possibilidades e, até mesmo, as limi-
tações de uma determinada operação. Graças
aos avanços da programação, softwares como o
MATLAB são uma ferramenta útil para modelar,
simular e otimizar os processos industriais de
maneira teórica, sem perdas reais com testes.
Como um engenheiro em formação, você acre-
dita ser de valia levar até o campo de trabalho
esta ferramenta matemática?
“
Programas distribuídos como software li-
vre ou código aberto não são programas
sem licença, mas possuem uma licença que
garante a qualquer um algumas liberdades,
dentre elas, a de ter acesso ao código-fonte
do programa (NOEL, 2019, p. 168).
UNIDADE 8 203
definições), por isso é comum que o software livre seja gratuito mesmo. Como há uma garantia de
acesso ao código-fonte e ainda garantem a liberdade de distribuição, quem desenvolve software livre
não visa ganhar dinheiro com a venda do software, mas com outros modelos de negócio.
GNU Octave
O software GNU Octave é, provavelmente, a melhor alternativa ao MATLAB, pois há grande com-
patibilidade entre as funções e os programas escritos em ambos. Além disso, possui grande apelo em
relação ao software livre, sendo publicado sob a licença GNU GPL.
Assim como o MATLAB, o GNU Octave é considerado como uma linguagem de programação cien-
tífica de alto nível, feita para trabalhar com cálculo numérico, permitindo a plotagem de gráficos por
meio da programação e possuindo ferramentas para visualização dos gráficos.
Permite resolver problemas numéricos lineares e não lineares, problemas de álgebra linear para
determinar raízes de equações não lineares, integração de funções ordinárias, manipulação de poli-
nômios, entre outros (TEIXEIRA, 2010).
O GNU Octave possui uma linha de comandos em que são passados comandos e expressões, mas
também é possível criar scripts, como o código-fonte de programação que já vimos anteriormente.
Tenha sua dose extra de conhecimento assistindo ao vídeo. Para acessar, use
seu leitor de QR Code.
O próximo exemplo mostra o código para plotar um gráfico de uma função senoidal.
O código utilizado produz um gráfico no Octave, em que é criada a curva da função de seno de x,
utilizando os valores passados para x, que vão de -10 até 10, com passos de 0,1, ou seja, calcula pontos
com espaços de 0,1 entre eles.
0.5
sin (x)
-0.5
-1
-10 -5 0 5 10
x
Na página do projeto, é possível baixar os instaladores ou ver comandos de instalação. Algumas dis-
tribuições Linux o incluem na instalação e algumas outras possuem ele em suas centrais de instalação
de aplicativos.
UNIDADE 8 205
Scilab
Scilab é um software livre francês conhecido por ser um software de grande potencial e aplicabilidade,
empregado no cálculo numérico de problemas, visualização de gráficos, por meio de uma linguagem
de programação de alto nível. O Scilab não realiza cálculos do tipo simbólico, porém, agregado a outros
softwares, permite a realização deles (BARRETO, 2008).
É possível lidar com diversos tipos de dados, manipulando vetores e matrizes. É uma linguagem de
programação que permite a criação ou utilização de algoritmos de acordo com a necessidade, tendo
uma boa similaridade com o MATLAB (BARRETO, 2008).
O interpretador do Scilab exibe uma linha de comandos (prompt) que é o local em que podem ser
inseridas as instruções. Assim como fizemos com o MATLAB ou com o GNU Octave, podemos usar
ele como uma calculadora ou aproveitar as funções predefinidas da linguagem.
UNIDADE 8 207
WolframAlfa
Sabe aquele dia em que você precisa resolver um problema e não sabe como, então você procura no
Google e não encontra a solução. Você pensa: “eu queria um lugar onde eu pudesse passar qualquer
problema e ele resolvesse para mim”. Boa notícia: Isso existe e é o WolframAlfa.
Essa é uma das capacidades do sistema, que vale a pena ser testado e avaliado. Ainda que não seja o
sistema principal que você utiliza, é bom para recorrer sempre que precisar, por estar disponível online.
Cymath
Uma outra alternativa online é o cymath, que também recebe fórmulas e exibe a solução. Não é tão
completo como o WolframAlfa, mas é uma boa solução e simples de utilizar.
UNIDADE 8 209
Dentre as opções de soluções, o Cymath trabalha com assíntotas, diferenciação, integração, divisão
polinomial, solução de sistemas lineares, solução de equações, entre outras (CYMATH, [2019], on-line)4.
Na figura a seguir, vemos um exemplo de solução de integração calculada no cymath.
Dessa forma, ao entrar com o problema “integrate cos(x)^3”, o sistema exibe a forma matemática da
equação e exibe um passo a passo da solução.
Vimos, então, que existem diversas ferramentas para o trabalho de matemática e engenharia, algu-
mas para serem instaladas e outras online, algumas gratuitas e outras com um valor de licenciamento.
Portanto, há várias opções para apoio ao cálculo e, combinadas com a programação, possibilita-nos
automatizar boa parte do trabalho e ganhar bastante em produtividade.
Na próxima e última unidade, iremos focar em soluções específicas de cálculo numérico. Você vai
ver conceitos abordados nas primeiras unidades, porém agora utilizando um sistema para resolver.
Te espero lá, não esqueça o café!
2. O MATLAB pode ser visto como uma linguagem de programação voltada para
matemática. Avalie as afirmações a seguir.
I) Scilab e Octave são duas alternativas em software livre que são compatíveis
com MATLAB.
II) Apesar do poder que há no software, o MATLAB pode ser utilizado como
uma calculadora.
III) Um dos pontos fortes do MATLAB é a manipulação de vetores e matrizes.
IV) O programa GNU Octave se diferencia do MATLAB por permitir apenas a
plotagem de gráficos.
Assinale a alternativa correta:
a) Apenas I e II estão corretas.
b) Apenas II e III estão corretas.
c) Apenas III e IV estão corretas.
d) Apenas I, II e III estão corretas.
e) Apenas II, III e IV estão corretas.
211
3. A linguagem C possui um conjunto de operandos aritméticos. Caso queria saber
o resto da divisão de 5520 por 37, assinale a sintaxe que deve ser utilizada.
a) 5520 / 37
b) 37 /- 5520
c) 5520 *= 37
d) 37 % 5520
e) 5520 % 37
212
FILME
A rede social
Ano: 2010
Sinopse: em uma noite de outono em 2003, Mark Zuckerberg (Jesse Eisen-
berg), analista de sistemas, graduado em Harvard, senta-se de frente ao seu
computador e começa a trabalhar em uma nova ideia. Apenas seis anos e 500
milhões de amigos mais tarde, Zuckerberg se torna o mais jovem bilionário da
história com o sucesso da rede social Facebook. O sucesso, no entanto, o leva
a complicações em sua vida social e profissional.
LIVRO
WEB
213
BARRETO, L. S. Iniciação ao Scilab. Costa de Caparica: edição do autor, 2008.
CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.
GILAT, A.; SUBRAMANIAM, V. Métodos Numéricos para Engenheiros e Cientistas: uma introdução com
aplicações usando o MATLAB. Porto Alegre: Bookman, 2008.
REFERÊNCIAS ON-LINE
214
1. B.
2. D.
3. E.
215
216
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
Cálculo Numérico
Utilizando Octave
PLANO DE ESTUDOS
Funções Predefinidas
Métodos Numéricos
do MATLAB/Octave
Limitações Sistemas de
Integração Numérica
Computacionais Equações Lineares
OBJETIVOS DE APRENDIZAGEM
• Entender como são representadas as informações no • Conhecer funções predefinidas em MATLAB e Octave que
computador e as limitações computacionais. facilitam o cálculo.
• Aprender a escrever os métodos numéricos em Octave. • Analisar programas que fazem o cálculo da integração
• Utilizar programação em Octave para resolver sistemas numérica em Octave.
de equações lineares.
Limitações
Computacionais
DECIMAL BINÁRIO
1539 11000000011
UNIDADE 9 219
cimal separadas, representaremos como uma coisa só e então o ponto (ou a vírgula
na nossa representação habitual) é que será “deslocada” nessa representação. Você
também pode conhecer isso como “notação científica”.
Em que a mantissa seria o número completo, sem considerar a vírgula; a base é sempre
10; e o expoente é o que vai definir onde vai a vírgula, de acordo com as potências de
10. Por exemplo, o número 123,45 pode ser representado como:
123,45 = 12345 x 10-²
Para armazenar o número, não precisamos armazenar a base, que é sempre 10, mas
armazenaremos a mantissa e o expoente. O tamanho do número em bytes pode variar
de acordo com a linguagem ou com a precisão, mas vamos usar um número de ponto
flutuante de 4 bytes, consequentemente 32 bits. Usaremos 24 bits para a mantissa e
8 bits para o expoente. Veja a Figura 2.
int num; MEMÓRIA
num = 1539; num 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
float num2; 0 0 0 0 0 1 1 0
0 0 0 0 0 0 1 1
num2 = 123.45; num2 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0
0 0 1 1 1 0 0 1
MANTISSA EXPOENTE 1 1 1 1 1 1 1 0
-2
123,45 12345 x 10
11111110
11 0000 0011 1001
Cada quadrado representa 1 bit.
Cada linha representa 1 byte.
Agora que já sabemos como são manipulados os números de ponto flutuante, pode-
mos entender melhor como funcionam os erros em soluções numéricas. Por haver
um limite para a representação do número, nem sempre o número cabe nessa repre-
sentação, então é preciso fazer uma aproximação.
Se nós analisarmos, por exemplo, uma operação de divisão que gera uma dízima
periódica, como 2 / 3, o número não pode ser representado de forma exata por um
motivo óbvio: ele possui infinitas casas decimais. Por isso, precisamos cortar ou ar-
redondar o número. Podemos representar como 0,6666 ou como 0,6667, cortando
ou arredondando, respectivamente (GILAT; SUBRAMANIAM, 2008).
Nesse caso, a diferença parece muito pequena e aceitável, mas após várias opera-
ções seguidas, sempre arredondando os números, temos o que é chamado de erro
de arredondamento, o que pode levar a erros no cálculo numérico.
UNIDADE 9 221
Realizando a subtração (p-q), temos:
Fazendo a conta manualmente (ou mentalmente), sabemos que a resposta real seria
3,8. Sendo assim, percebemos que, pelo menos nesse caso, o arredondamento fun-
ciona melhor do que o corte.
O erro neste exemplo é até simples, mas trabalhamos com números com muitas
casas decimais em métodos numéricos e esses erros podem ir aumentando, afastan-
do-se da solução inicial.
Ainda há o chamado erro de truncamento, além do erro de arredondamento,
que acontece quando os métodos numéricos adotam um procedimento aproximado
para chegar à solução.
O erro de truncamento depende do método utilizado e não do arredondamento
ou corte. Portanto, pode ocorrer erro de truncamento mesmo quando as operações
matemáticas são exatas (GILAT; SUBRAMANIAM, 2008).
“
Métodos numéricos são aplicações de al-
goritmos pelas quais é possível formular e
resolver problemas matemáticos usando
operações aritméticas menos complexas.
Estes também são conhecidos como mé-
todos indiretos.
UNIDADE 9 223
Acredito que isso refresca a sua memória e você se lembra dos algoritmos que já vimos
para resolver problemas matemáticos, várias vezes por aproximação. Vale lembrar,
também, que um algoritmo não depende de um computador ou uma linguagem de
programação. A própria sequência de instruções que executamos no cálculo já é um
algoritmo.
Você também já está craque em saber que o computador não pensa ou calcula da
mesma forma que nós fazemos. Um exemplo que podemos ver é a solução de equa-
ções quadráticas. Como encontramos os valores de x de uma equação quadrática?
Recorremos à nossa velha amiga, a Fórmula de Bháskara.
b b2 4 ac
x
2a
Então, vamos ver como resolver a seguinte equação (GILAT; SUBRAMANIAM, 2008):
x 2 100, 0001x 0, 01 0
Primeiro, vamos resolver manualmente. Com algumas operações, chegamos aos
valores:
b b2 4 ac
x1
2a
x1 100
b b2 4 ac
x2
2a
x2 0, 0001
Feito isso, vamos fazer o mesmo processo no Octave. Você pode executar na sua
instalação do Octave para conferir na prática. Primeiro, definimos que vamos usar
o formato “long”, para trabalhar com maior precisão, depois vamos definir quem é a,
b e c na expressão quadrática. Em seguida, calcularemos a raiz quadrada.
>> format long
>> a = 1; b = -100.0001; c = 0.01;
>> RaizesDis = sqrt(b^2 - 4*a*c)
RaizesDis = 99.9999000000000
Observe que, por causa dos erros que comentamos há pouco, chegamos ao valor de
x1 exato, mas x2 tem um erro de arredondamento.
Portanto, a forma que usamos para calcular a Fórmula de Bháskara não é a melhor
forma para o computador. Para resolver, você pode modificar um pouco a fórmula,
sem causar erro no cálculo.
x2
b b2 4 ac b b2 4 ac
b b2 4 ac
2c
2a 2a
b b2 4 ac
b b2 4 ac
UNIDADE 9 225
Sistemas de
Equações Lineares
x + 2y = 3
3x - y = 5
Vimos que todo sistema pode ser escrito na forma Ax = b , em que A é uma matriz
com os índices que acompanham as variáveis e b é um vetor vertical com os resulta-
dos. O sistema anterior pode ser representado como:
1 2 x 3
3 1 y 5
Você deve se lembrar que a decomposição não é a coisa mais legal do mundo de se
fazer, ainda mais quando as matrizes são grandes. E é aqui que reforçamos o objetivo
desse livro e de toda essa disciplina: tudo o que é chato de se fazer, nós passamos para
o computador.
UNIDADE 9 227
No GNU Octave (que chamaremos apenas de Octave, você também pode usar o
mesmo código no MATLAB), podemos escrever uma função para decomposição
LU, descrevendo aquelas mesmas regras que aprendemos na Unidade 2, desta forma:
As linhas foram numeradas para facilitar a análise. Se você voltou à Unidade 2 para
relembrar, vai ver que das linhas 3 a 6, calculamos a 1ª coluna de L. Das linhas 7 a 9,
calculamos a 1ª linha de U. Depois, das linhas 11 a 13, calculamos as próximas linhas
de L, e de 14 a 16, as linhas de U.
Criando um exemplo aleatório no Octave, vamos criar uma matriz quadrada A,
um vetor b e nossa intenção será calcular o vetor x, de soluções.
>> A = [3 4 5; 4 1 -2; 3 7 -1]
A=
3 4 5
4 1 -2
3 7 -1
Agora que temos as matrizes triangular inferior e triangular superior, podemos che-
gar ao resultado por meio de substituições sucessivas. Para isso, podemos escrever
funções para essas substituições:
UNIDADE 9 229
Lembrando que o nosso sistema Ax = b pode ser escrito como LUx = b , podemos
substituir Ux = y para obter o sistema Ly = b . O passo a passo seria encontrar o
vetor y, depois substituir para encontrar x. Em nosso exemplo, temos que:
x1 1, 3333x2 1, 66667 x3 y1 3 y1 5
x2 2 x3 y2 4 y1 4, 3333 y2 1
x3 y3 3 y 3 y 12 y 2
1 2 3
A partir dessas funções que escrevemos no Octave, podemos então encontrar o vetor
y, para depois encontrar o vetor x.
>> y = ProgressSub(L, b)
y=
1.66667
1.76923
0.69231
>> x = RegresSub(U, y)
x=
0.00000
0.38462
0.69231
UNIDADE 9 231
Temos o operador de divisão à esquerda, que é uma barra invertida (\), que nos
permite escrever uma divisão x = a\b.
>> x = A\b
x=
0.00000
0.38462
0.69231
Sim, só isso. O Octave já calcula o vetor x e você já percebeu que é o mesmo resultado.
Nós utilizamos a divisão à esquerda porque o vetor b é um vetor vertical. No caso,
se o nosso sistema for escrito como x A = b , teremos a matriz A transposta e b como um
vetor horizontal. Neste caso, podemos usar a divisão à direita, que é a barra comum (/).
Para o exemplo, transpomos a matriz A e reescrevemos manualmente b, apenas
para mostrar as duas formas de escrever.
>> A = A’
A=
3 4 3
4 1 7
5 -2 -1
>> b = [5 -1 2]
b=
5 -1 2
>> x = b/A
x=
0.00000 0.38462 0.69231
É equivalente a:
x = b’/A’
Apenas para finalizar a nossa diversão com sistemas lineares, a própria decomposição
LU já tem função predefinida no Octave. Você tem acesso a uma função chamada
“lu”, que recebe uma matriz A e produz três matrizes: as conhecidas L e U, além de
uma matriz P, de transição.
Para os mesmos A e b do exemplo anterior, temos:
>> A
A=
3 4 5
4 1 -2
3 7 -1
>> b
b=
5
-1
2
U=
4.00000 1.00000 -2.00000
0.00000 6.25000 0.50000
0.00000 0.00000 6.24000
UNIDADE 9 233
P=
Permutation Matrix
0 1 0
0 0 1
1 0 0
>> y = L\(P*b)
y=
-1.0000
2.7500
4.3200
>> x = U\y
x=
0.00000
0.38462
0.69231
UNIDADE 9 235
Integração
Numérica
Aproveitando a teoria do método dos trapézios, que não vamos repetir aqui, pode-
mos também escrever uma função para resolver a integração como o código escrito
a seguir (GILAT; SUBRAMANIAM, 2008):
Portanto, temos uma função chamada “trapezoidal”, que recebe 4 variáveis de entrada:
“integrando”, “a”, “b” e “N”, em que:
• integrando: função a ser integrada, passada como texto.
• a: limite inferior da integral.
• b: limite superior da integral.
• N: número de subintervalos que será gerado.
UNIDADE 9 237
A saída, ou seja, o valor da integral será salvo na variável “I”.
Na linha 2, é calculada a largura dos intervalos.
Na linha 3, integrando é definido como uma função inline (em linha).
Na linha 4, x é um vetor que recebe as coordenadas dos subintervalos. Na sintaxe
do Octave, essa linha significa que deve ser gerado um vetor com valores de a até b,
com espaço de h entre os valores.
Nas linhas 5 a 7, é executando um loop onde um vetor F recebe os valores do
integrando em cada ponto x.
Por fim, na linha 8, a variável I recebe o valor da integral, de acordo com a fórmula
obtida na regra dos trapézios.
“
1 EXEMPLO Um Boeing 727-200 de massa m = 97000 kg aterrissa a uma velocidade de 93 m/s
(em torno de 181 nós) e liga os seus reversos em t = 0. A força F aplicada no avião
à medida que ele reduz a sua velocidade é dada por F 5v2 570000 , onde
v é a velocidade do avião. Usando a segunda lei de Newton do movimento e da
dinâmica dos fluidos, a relação entre a velocidade e a posição x do avião pode ser
escrita como:
dv
mv 5v2 570000
dx
Determine a distância percorrida pelo avião antes que sua velocidade se reduza
a 40 m/s (em torno de 78 nós) usando o método tradicional composto (GILAT;
SUBRAMANIAM, 2008, p. 294).
x 40 97000v 93 97000v
0 d x dv dv
93
5v 2
570000 40 2
5v 570000
Para utilizar essas funções, vamos escrever nossa equação em forma de uma função.
UNIDADE 9 239
As funções predefinidas no Octave possuem entradas e saídas específicas e podem
possuir conjuntos de entrada diferentes, mesmo que tenham o mesmo objetivo.
Por isso, sempre veja a documentação das funções.
Em seguida, podemos utilizar essas funções. Veja a utilização a seguir, você pode
comparar os resultados.
>> I = quad(@myfun,40,93)
I = 574.1494131674854
>> I = quadv(@myfun,40,93)
I = 574.1494133380179
Para utilizar as outras funções, nossa função precisa ser adaptada, o que não faremos
neste momento.
Estamos no fim de nossa unidade e vimos como aplicar no computador o que
aprendemos de cálculo numérico. Por favor, nunca se esqueça de que o computador
pode fazer por você o trabalho chato de cálculo que você não quer fazer.
Temos formas diferentes de chegar às soluções e, em nossa utilização prática, pre-
cisaremos levar em conta fatores como tolerância de erros, nível de precisão, tempo
de processamento, entre outros. Cabe a você encontrar um método de acordo com
suas necessidades.
Não deixe de estudar e se aprimorar sempre. Espero que você possa aproveitar
esse conteúdo e que tenha sido um tempo proveitoso de estudo.
Sucesso!
241
3. Métodos numéricos trabalham com aproximações, não necessariamente com
soluções exatas.
Assinale verdadeiro (V) ou falso (F):
( ) Os métodos numéricos sempre apresentam erros na solução, mas esses
podem ser ignorados.
( ) Por causa da forma que o número é representado, podem ocorrer erros de
arredondamento no cálculo.
( ) Podemos definir a tolerância de erro que aceitamos em um método numérico.
( ) Um método numérico tem que ter critérios de parada que, além da tolerância
de erro, pode ser um número de iterações predefinido.
Assinale a alternativa correta:
a) V-V-V-V.
b) V-F-F-V.
c) F-F-F-F.
d) F-V-V-V.
e) V-F-V-F.
242
FILME
LIVRO
243
FRANCO, N. M. B. Cálculo Numérico. São Paulo: Pearson, 2006.
GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre: Bookman,
2008.
REFERÊNCIAS ON-LINE
244
1. A.
2. B.
3. D.
245
246
247
CONCLUSÃO
Chegamos ao fim do nosso estudo. Permita-me, agora, imaginar que você não
conseguiu segurar um “Aaaaahhhhhhh!”, com um misto de tristeza por acabar e
felicidade pelo dever cumprido.
Pode ficar feliz porque este não é o fim! Todo(a) bom/boa profissional, princi-
palmente quem se envolve com tecnologia, sabe que sempre estamos aprendendo
algo novo, atualizando-nos, e esta disciplina apenas introduziu você no fantástico
mundo da programação.
Não tivemos a pretensão, neste livro, de dizer que ensinamos os melhores mé-
todos ou melhores softwares, até porque sabemos que os softwares sempre passam
por adaptações, melhorias, outros softwares surgem, alguns ficam defasados. A
intenção é que você saiba que há diversos recursos disponíveis e também passar
um caminho para que você saiba por onde iniciar a busca pela solução dos seus
problemas.
Começamos nosso estudo com os métodos numéricos para encontrar as raízes
de equações, já percebendo que o computador realiza os cálculos de forma diferente
de como o nosso cérebro trabalha. Depois, passamos para os métodos numéricos
que resolvem sistemas lineares e, na terceira unidade, passamos a trabalhar com
polinômios, estudando a aproximação polinomial. Então, fechamos o estudo dos
métodos numéricos com a integração numérica e equações diferenciais.
Em seguida, passamos a estudar o computador e a programação, iniciando, na
Unidade 5, com conceitos básicos sobre o computador e a programação. Então,
na Unidade 6, passamos a estudar as linguagens de programação, para então, na
Unidade 7, descobrir como escrever código nessas linguagens e transformá-los
em programas.
Nas duas últimas unidades, fizemos a união da matemática com a computação:
na Unidade 8, alguns softwares para manipulação matemática; fechamos o estudo,
na Unidade 9, escrevendo os métodos numéricos em forma de programação.
Espero ter lhe animado a se aprofundar nos estudos e a aproveitar todo o po-
tencial que seu computador tem, que pode não estar sendo bem aproveitado.
Um ótimo futuro para você!