Prévia do material em texto
ACESSE AQUI ESTE
MATERIAL DIGITAL!
CRISTIANE BONATTI
DEBORA CRISTINA BRANDT COSTA
EDSON ORIVALDO LESSA JUNIOR
GRAZIELLE JENSKE
LEONARDO GARCIA DOS SANTOS
LUIZ CARLOS PITZER
MICHELY DE MELO PELLIZZARO
RAFAEL ORIVALDO LESSA
ORGANIZADOR
SERGIO GAMBA
FUNDAMENTOS
DE MATEMÁTICA
APLICADA À
INFORMÁTICA
Coordenador(a) de Conteúdo
Grazielle Jenske
Projeto Gráfico e Capa
Arthur Cantareli Silva
Editoração
Juliana Oliveira Duenha e Nivaldo
Vilela de Oliveira Junior
Design Educacional
Patricia Peteck
Revisão Textual
Cristina Maria Costa Wecker e Gabriel
Augusto Lenzi
Ilustração
Eduardo Aparecido Alves e Geison
Ferreira da Silva
Fotos
Shutterstock e Envato
Impresso por:
Bibliotecária: Leila Regina do Nascimento - CRB- 9/1722.
Ficha catalográfica elaborada de acordo com os dados fornecidos pelo(a) autor(a).
Núcleo de Educação a Distância. BONATTI, Cristiane; COSTA, Debora
Cristina Brandt, LESSA, Edson Orivaldo jr;, JENSKE, Grazielle , SANTOS,
Leonardo Garcia dos., PITZER, Luiz Carlos, PELLIZZARO, Michely de Melo
,LESSA, Rafael Orivaldo.
Fundamentos De Matemática Aplicada À Informática / Cristiane
Bonatti ,Debora Cristina Brandt Costa. Edson Orivaldo Lessa Junior,
Grazielle Jenske, Leonardo Garcia dos Santos, Luiz Carlos Pitzer, Michely
de Melo Pellizzaro e Rafael Orivaldo Lessa; organizador: Sergio Gamba, -
Florianópolis, SC: Arqué, 2023.
384 p.
ISBN papel 978-65-6083-472-9
ISBN digital 978-65-6083-473-6
1. Matemática 1 2. Informática 3. EaD. I. Título.
CDD - 519
EXPEDIENTE
Centro Universitário Leonardo da Vinci.C397
FICHA CATALOGRÁFICA
03506777
RECURSOS DE IMERSÃO
Utilizado para temas, assuntos ou con-
ceitos avançados, levando ao aprofun-
damento do que está sendo trabalhado
naquele momento do texto.
APROFUNDANDO
Uma dose extra de
conhecimento é sempre
bem-vinda. Aqui você
terá indicações de filmes
que se conectam com o
tema do conteúdo.
INDICAÇÃO DE FILME
Uma dose extra de
conhecimento é sempre
bem-vinda. Aqui você terá
indicações de livros que
agregarão muito na sua
vida profissional.
INDICAÇÃO DE LIVRO
Utilizado para desmistificar pontos
que possam gerar confusão sobre o
tema. Após o texto trazer a explicação,
essa interlocução pode trazer pontos
adicionais que contribuam para que
o estudante não fique com dúvidas
sobre o tema.
ZOOM NO CONHECIMENTO
Este item corresponde a uma proposta
de reflexão que pode ser apresentada por
meio de uma frase, um trecho breve ou
uma pergunta.
PENSANDO JUNTOS
Utilizado para aprofundar o
conhecimento em conteúdos
relevantes utilizando uma lingua-
gem audiovisual.
EM FOCO
Utilizado para agregar um con-
teúdo externo.
EU INDICO
Professores especialistas e con-
vidados, ampliando as discus-
sões sobre os temas por meio de
fantásticos podcasts.
PLAY NO CONHECIMENTO
PRODUTOS AUDIOVISUAIS
Os elementos abaixo possuem recursos
audiovisuais. Recursos de mídia dispo-
níveis no conteúdo digital do ambiente
virtual de aprendizagem.
4
233
7
135
5
SUMÁRIO
233U N I D A D E 3
MATRIZES 234
SISTEMAS LINEARES 294
INTRODUÇÃO À TEORIA DE GRAFOS 332
7U N I D A D E 1
MATEMÁTICA DISCRETA 8
LÓGICA PROPOSICIONAL 36
LÓGICA DE PREDICADOS 84
135U N I D A D E 2
INDUÇÃO MATEMÁTICA 136
RELAÇÕES E FUNÇÕES 162
SEQUÊNCIAS FINITAS E INFINITAS 204
UNIDADE 1
MINHAS METAS
MATEMÁTICA DISCRETA
Fornecer uma visão geral da matemática discreta e suas aplicações em vários campos.
Conhecer o sistema de conversão de bases.
Converter números escritos em uma base para outra.
Diferenciar erros de arredondamento de erros de truncamento.
Compreender como se dá a propagação de erros.
Compreender o sistema de numeração e como é possível representá-los em outras
bases numéricas.
Identificar o que é ponto flutuante.
T E M A D E A P R E N D I Z A G E M 1
8
INICIE SUA JORNADA
Quando procuramos obter resultados através de observações experimentais, de-
vemos sempre nos preocupar que nossas observações serão sempre limitadas,
no sentido de que jamais retratam com perfeição absoluta a natureza observada.
Dessa forma, quando relatamos o resultado da medição de uma grandeza,
é de suma importância sabermos quantificar a qualidade do resultado, ou seja,
precisamos informar quão boa foi a nossa medição.
Um exemplo prático do resultado de uma mediação seria tentar determinar o
tempo de queda de um corpo, quando um aluno mediu uma única vez o evento.
Tendo a incerteza do aparelho utilizado, poderíamos ter uma ideia do acerto do
aluno. No entanto, a incerteza cobre apenas o erro do aparelho e não do aluno
ou mesmo do procedimento experimental.
Da mesma forma, como segundo exemplo, se um engenheiro mecânico
queira calcular a distância que um determinado carro, com velocidade de 100
km/h, percorre até parar completamente, sem dispor de uma trena. Através das
equações da Cinemática, ele pode fazer isso, já que tem as velocidades inicial
e final e pode determinar o tempo gasto durante a frenagem, não levando em
consideração no cálculo a resistência do ar, o atrito dos pneus no pavimento
(asfalto, cascalho, paralelepípedos...) e a precisão do cronômetro que medirá o
tempo gasto. Na teoria, esses fatores podem parecer desprezíveis, mas na prática
eles afetam o resultado final.
Nestes exemplos, você pode observar que é necessário levar em consideração
todos os fatores que interferem no momento da medição da grandeza no proce-
dimento experimental.
Neste tema, iremos estudar sobre a teoria dos erros, o sistema de numeração
e o ponto flutuante, necessários para entender a correta medição de grandezas.
Este podcast leva o estudante a entender a matemática discreta, especificamente
a teoria dos erros, o sistema de numeração e o ponto flutuante. Recursos de mídia
disponíveis no conteúdo digital do ambiente virtual de aprendizagem
PLAY NO CONHECIMENTO
UNIASSELVI
9
TEMA DE APRENDIZAGEM 1
DESENVOLVA SEU POTENCIAL
TEORIA DOS ERROS
VAMOS RECORDAR?
Considerando a situação de medição de grandezas de um experimento, é
conveniente lembrar dos conceitos de metro e de sistema decimal para um
melhor entendimento dos assuntos que serão tratados adiante. Uma sugestão
seria você ler estes conceitos no Infopédia, digitando os termos anteriores na
opção pesquisa do site.
Na próxima fase, será desenvolvido o tópico teoria dos erros, que trará a solução
inicial para medição de grandezas de um experimento. Recursos de mídia
disponíveis no conteúdo digital do ambiente virtual de aprendizagem
VOCÊ SABE RESPONDER?
O que é Cálculo Numérico?
No dia a dia nos deparamos com vários problemas físicos cuja solução numérica
gostaríamos de conhecer ou de encontrar uma aproximação apropriada para ela.
Podemos, de uma maneira simples, representar este processo pela Figura 1.
1
1
Problema Físico
Obtenção de Dados
Modelo Matemático
Escolha do Método Numérico
Implementação Computacional
Análise dos Dados Obtidos
Resolução
Modelagem
Figura 1 – Processo de Cálculo Numérico / Fonte: Costa (2011, p. 3).
Descrição da Imagem: a figura apresenta o processo de cálculo numérico, que se inicia com um problema físico.
A obtenção de dados deste problema físico passa a ser a segunda fase. A modelagem seconstitui em representar
o problema físico em um modelo matemático, terceira fase. Para a quarta fase, é necessário a escolha de um
método numérico em conexão com o modelo matemático. Na quinta fase, a representação matemática passa para
a implementação computacional, onde temos a resolução do problema. A última fase se constitui na avaliação ou
na análise dos dados obtidos. Fim da descrição.
Como exemplo, sabemos que é fácil resolver um sistema matemático com três
equações e três incógnitas. No entanto, quando o sistema tem 10 equações e 10
incógnitas, é aí que entra o cálculo numérico. Podemos esperar que, uma vez
encontrado o modelo matemático correto, os resultados obtidos sejam iguais
aos esperados. Na verdade, os resultados obtidos são, muitas vezes, bastante
diferentes dos esperados, mesmo que todas as etapas da resolução tenham sido
aplicadas corretamente.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
ERROS DE MODELAGEM
Consideremos uma função real contínua f, definida sobre um intervalo [a,b] e su-
ponhamos que precisássemos calcular a área delimitada por ela no plano cartesiano.
Uma maneira mais precisa de fazer isso é calculando a integral da função f no
intervalo [a,b]. Esse é o modelo matemático mais apropriado. Entretanto, conse-
guiremos obter aproximações razoáveis para esse valor se dividirmos o intervalo
[a,b] em n partes iguais e, de posse do conjunto de pontos entre a e b, somarmos
as áreas de todos os retângulos de base n e altura f(x), conforme Figura 2.
O objetivo principal do texto é a apresentação de métodos
numéricos com sua fundamentação teórica, suas vantagens e
dificuldades computacionais. Em todos os capítulos são expos-
tas lista de exercícios, com respostas no apêndice. A maioria
dos capítulos também apresenta propostas de projetos.
INDICAÇÃO DE LIVRO
Figura 2 – Função Real Contínua / Fonte: Costa (2011, p. 4).
Descrição da Imagem: a figura apresenta uma representação em um plano cartesiano de uma função real con-
tínua. No eixo Y, temos os valores da altura f(x). No eixo X, temos n valores de a até b. A soma das áreas dos
n retângulos se aproxima da área entre o intervalo [a,b] e a curva da função real contínua. Fim da descrição.
f(x)
a b
y
1
1
ERROS NA FASE DE RESOLUÇÃO
Imaginemos desejar medir o perímetro de uma circunferência de raio 1. Sabemos
que a fórmula para se calcular essa medida (modelo matemático) é P = 2πr, onde
r, neste caso, vale 1. O resultado preciso dessa expressão é P = 2π. Entretanto,
sabemos que é impossível obter esse valor numericamente, uma vez que π é um
número irracional. Nem a máquina mais precisa fabricada pelo homem é capaz
de fornecer o número π completo. Assim, embora tenhamos o modelo matemáti-
co ideal, não conseguimos expressar exatamente o valor deste perímetro. Sempre
trabalharemos com uma aproximação.
CONVERSÃO DE BASES
Qualquer número decimal pode ser representado como uma potência de 10. Por
exemplo, o número 23 nada mais é do que 20 + 3 = 2.10¹ + 3.100 = (23)10 (lem-
brando que 100 = 1). Da mesma forma, qualquer número pode ser representado
como potência de 2. Observe a Figura 3:
Figura 3 – Mudança da base 10 para a base 2 / Fonte: Costa (2011, p. 6).
Descrição da Imagem: a figura apresenta divisões sucessivas por 2. Os restos da divisão e último quociente, de
baixo para cima, corresponde ao valor procurado. Fim da descrição.
223
2
5 2
2
1
1
1
1 11
0
2
Assim, (23)10 = (10111)2. É com esta sequência de zeros e uns (0 e 1) que o com-
putador interpreta o número decimal 23. Para converter um número na base
binária (base 2), você deve proceder da seguinte forma:
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
■ Dividimos o número considerado por 2 e o quociente por 2 iteradas vezes,
até que o quociente encontrado seja menor do que 2.
■ Escrevemos os restos obtidos na ordem inversa a que foram encontrados,
sendo que o primeiro dígito da sequência será o último quociente (0 ou 1).
O que acontece se o número considerado for um número real não inteiro? Neste
caso, o procedimento é multiplicar a parte decimal por 2 e repetir esse processo
com a parte decimal do resultado obtido até obter o número inteiro zero como
resposta ou uma dízima periódica. Consideremos o número decimal 0,75.
0,75 . 2 = 1,50 = 1 + 0,50
0,50 . 2 = 1,00 = 1 + 0,00
0,00 . 2 = 0,00
.. (0,75)10 = (0,110)2
Um outro exemplo seria uma dízima periódica 0,9999...
0,9999... . 2 = 1,9998... = 1 + 0,9999...
0,9999... . 2 = 1,9998... = 1 + 0,9999...
0,9999... . 2 = 1,9998... = 1 + 0,9999...
Continue esse processo indefinidamente e você verá que se mantém o padrão
111... e se repete.
.. (0,9999...)10 = (0,111...)2
Outros exemplos de mudança da base 10 para a base 2 podem ser encontrados
na plataforma Khan Academy. Recursos de mídia disponíveis no conteúdo digital
do ambiente virtual de aprendizagem
EU INDICO
ERROS DE ARREDONDAMENTO
Qualquer número x pode ser representado numa base β da seguinte forma, mo-
delo matemático número x na base β:
X x x x xn
n
k� � � � � �( ... ).1
1
2
2
3
3b b b b
b
1
4
Vamos entender como isso funciona para os casos que já trabalhamos com β =
10 e β = 2. Por exemplo, representar 23 na base 10 e na base 2.
( ) .23 2
10
3
10
1010 1 2
2� ��
�
�
�
�
�
( ) .10111 1
2
0
2
1
2
1
2
1
2
0
2
0
2
0
2
0
2
0
2
22 1 2 3 4 5 6 7 8 9 10
5� � � � � � � � � ��
�
�
�
�
�
O valor n é chamado de precisão da máquina.
Considere uma máquina que representa um número com precisão de n = 10,
então a representação de 23 na base 10 é:
( ) ( )23 10111 1
2
0
2
1
2
1
2
1
2
0
2
0
2
0
2
0
2
0
210 2 1 2 3 4 5 6 7 8 9 10� � � � � � � � � � ��
�
��
�
�
�.2
5
De uma maneira mais compacta, teríamos o exemplo anterior na Figura 4:
1 1 1 1 1 10 0 0 0 0 0 0
MANTISSA EXPOENTE
Figura 4 – Representação compacta do número 23 com precisão de máquina n = 10 / Fonte: Costa (2011, p. 9).
Descrição da Imagem: a figura apresenta, na parte da mantissa, os números que estão nos numeradores das
frações. Na parte do expoente, o expoente 5 de 25 é representado por 101 na base 2. Fim da descrição.
O sistema decimal é o sistema que utilizamos no nosso dia a dia. Assim, quando
escrevemos (23)10, na verdade, estamos nos referindo simplesmente ao número
23, conforme o conhecemos. O número (23)5 não é o mesmo que (23)10. Fazendo a
conversão para a base 10, teríamos (23)5 = (13)10 = 43.
ZOOM NO CONHECIMENTO
Cada dígito da mantissa é chamado de bit. Além dos dígitos pertencentes à man-
tissa e ao expoente, mais dois dígitos são considerados: os responsáveis pelos
sinais da mantissa e do expoente respectivamente. Esses bits valem 0 se o número
for positivo e 1 se for negativo. Assim, 23 é representado na Figura 5:
UNIASSELVI
1
5
TEMA DE APRENDIZAGEM 1
Assim, a máquina representada anteriormente utiliza 16 bits para representar
um número decimal (byte).
MANTISSA EXPOENTE
SINAL DA MANTISSA SINAL DO EXPOENTE
0 0 0 0 0 0 0 0 0 01 1 1 1 1 1
Figura 5 - Representação compacta do número 23 com precisão de máquina n = 10 em bits
Fonte: Costa (2011, p. 10).
Descrição da Imagem: a figura representa a Figura 4 acrescentada de 0 na mantissa e no expoente, por repre-
sentarem valores positivos, +23 e +5. Há um zero a mais, ou seja, em vez de 101, temos 0101, a fim de fechar
16 bits. Fim da descrição.
Considere, agora, o primeiro número positivo a seguir:
Sinal da mantissa: 0
Mantissa: 0000000001
Sinal do expoente: 0
Expoente: 0000
O objetivo é encontrar o número decimal correspondente.
0
2
0
2
0
2
0
2
0
2
0
2
0
2
0
2
0
2
1
2
2 0 0009761 2 3 4 5 6 7 8 9 10
0� � � � � � � � ��
�
�
�
�
� �. , 55625
Assim, qualquer número pertencente ao intervalo (0; 0,0009765625) não pode ser
representado por este computador. Qualquer número intermediário será arredon-
dado pelo computador para um dos extremos do intervalo anterior, provocando
um erro de arredondamento nos cálculos.
Por exemplo: (0,00098)10 = (0,0000000001)2
Esses fatos explicampor que cálculos envolvendo números decimais finitos, ao
serem feitos por um computador ou por uma calculadora, às vezes apresentam
erros aparentemente inexplicáveis.
APROFUNDANDO
1
1
ERROS DE TRUNCAMENTO
Cada vez que precisamos parar um processo simplesmente pelo fato de ele ser
infinito ou muito grande, surge o erro de truncamento. Truncar significa exata-
mente isso: parar abruptamente um processo. Por exemplo, a função exponencial
pode ser escrita em termos de um somatório:
e x x x x
n
x
n
� � � � � � �
�
�
��
�
�
��1
2 3
2 3
! !
...
!
...
Fazendo x = 1, temos:
e
n
n
1
2 3
1 1 1
2
1
3
1
� � � � � � �
�
�
��
�
�
��! !
...
!
...
Como é impossível obter essa soma infinita, trunca-se o somatório para um n
suficientemente grande, obtendo uma aproximação para e, ou seja, e = 2,71828,
número de Euler.
O número e é uma constante matemática que é a base dos logaritmos naturais.
Por vezes, é chamado número de Euler. No Google Acadêmico, podemos encon-
trar exemplos e aplicações do número e. Recursos de mídia disponíveis no con-
teúdo digital do ambiente virtual de aprendizagem
EU INDICO
Você pode notar que só faz sentido truncar o somatório apresentado para um n
de tal forma que o erro de truncamento seja da mesma ordem que o erro de ar-
redondamento. A partir deste ponto, o erro de arredondamento será dominante.
PROPAGAÇÃO DE ERROS
Em um exemplo simples, se somarmos números que possuam algum tipo de erro,
o resultado encontrado conterá a soma de todos esses erros. Observe o exemplo
a seguir para ter uma ideia da dimensão deste problema.
Sabemos que, algebricamente falando, (x1 + x2) - x2 = x1 + (x2 - x2), para quais-
quer números reais x1 e x2. Em particular, para x1 = 0,2345 e x2 = 0,3491 . 104.
UNIASSELVI
1
1
https://pt.wikipedia.org/wiki/Constante_matem%C3%A1tica
https://pt.wikipedia.org/wiki/Logaritmo_natural
TEMA DE APRENDIZAGEM 1
Entretanto, se utilizarmos, para efetuar esse cálculo, uma máquina que traba-
lha apenas com 4 dígitos significativos, teremos os seguintes valores:
Para (x1 + x2) - x2 = (0,2345 + 0,3491 . 104) - 0,3491 . 104 = 0,3491 . 104 - 0,3491
. 104 = 0,0000
Para x1 + (x2 - x2) = 0,2345 + (0,3491 . 104 - 0,3491 . 104) = 0,2345
Isso ocorre porque, como a máquina considera apenas 4 dígitos significativos,
interpreta, neste caso, (x1 + x2) = x2. É claro que normalmente trabalhamos com
máquinas muito mais precisas, que levam em conta um número bem superior
de algarismos significativos, mas dependendo da precisão que procuramos, é
possível que nos deparemos com erros similares.
VOCÊ SABE RESPONDER?
Quais os tipos de erros que podem surgir durante um processo de Cálculo
Numérico?
Após os conhecimentos básicos sobre a teoria dos erros, iremos entender melhor
sobre os sistemas de numeração.
Figura 6 – Sistema de numeração decimal.
Descrição da Imagem: a figura representa o sistema de numeração mais utilizado no dia a dia. Sistema de base
10: 0,1,2,3,4,5,6,7,8,9. Fim da descrição.
1
8
SISTEMAS DE NUMERAÇÃO
O sistema de numeração que estamos habituados a utilizar é o sistema posicional
de base 10. No entanto, existem outros sistemas de numeração que são bastante
usuais e que tem sua base de análise fortemente ligadas à Aritmética.
Por exemplo, o sistema sexagesimal, que possui registro em fontes históricas
por volta de 1700 a.C. na civilização dos babilônicos, era usado frequentemente
por matemáticos e astrônomos. Eles faziam uma combinação de base 60 e de base
10, pois os sinais até 59 mudam de 10 em 10. Por exemplo, para representarmos
o valor decimal de 1h 4min 23s, temos que calcular (1. 3600 + 4.60 + 23 = 6023s).
Portanto, o sistema que usamos para representar as horas é um sistema sexagesimal.
Na história, vários povos diferentes usaram sistemas de numeração e existem
alguns deles que foram mais estudados: os sistemas de numeração chinês, maia,
egípcio, romano e babilônico. O sistema numeração que adotamos hoje não
apareceu pronto tal como é, mas foi sendo aperfeiçoado com o passar do tempo.
Ele é conhecido como sistema decimal posicional e sua origem é indo-arábica.
PENSANDO JUNTOS
SISTEMA DE NUMERAÇÃO DECIMAL
O sistema que utilizamos é o sistema de base 10, ele está organizado através de
agrupamentos de 10 em 10, conforme você pode visualizar no Quadro 1.
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 1
C
L
A
S
S
E
S
M
IL
H
Õ
E
S
M
IL
H
A
R
E
S
U
N
ID
A
D
E
S
S
IM
P
L
E
S
O
R
D
E
N
S
9°
8
°
7°
6
°
5°
4°
3°
2°
1°
C
e
nt
e
n
as
d
e
m
ilh
ão
D
ez
e
n
as
d
e
m
ilh
ão
U
n
id
ad
e
s
d
e
m
ilh
ão
C
e
nt
e
n
as
d
e
m
ilh
ar
D
ez
e
n
as
d
e
m
ilh
ar
U
n
id
ad
e
s
d
e
m
ilh
ar
C
e
nt
e
n
as
D
ez
e
n
as
U
n
id
ad
e
s
Q
ua
dr
o
1
–
Cl
as
se
s
e
or
de
ns
d
o
si
st
em
a
de
n
um
er
aç
ão
d
ec
im
al
. /
F
on
te
: h
tt
ps
://
w
w
w
.to
da
m
at
er
ia
.c
om
.b
r/
si
st
em
a-
de
-n
um
er
ac
ao
-d
ec
im
al
/.
A
ce
ss
o
em
: 2
8
s
et
. 2
0
2
3
.
1
1
https://www.todamateria.com.br/sistema-de-numeracao-decimal/
Por exemplo, no nosso sistema decimal, no número 325, o 3 representa 100; o 2
representa 20 e o 5 representa 5 mesmo. Assim, 325 = 3.10² + 2 .10¹ + 5.100. Mais
genericamente, podemos escrever um número n, em base 10, como sendo:
n a a a ar
r� � � � �0 1 2
210 10 10. . ... . ,
r
a
i r
i
�
�
�
0
0 1 9
0 1 2
,
, ,...,
, , ,..., .
Por exemplo: 11547 = 7 + 4 × 10 + 5 × 102 + 1 × 103 + 1 × 104
Este livro tem por objetivo capacitar o leitor a: entender o sis-
tema de numeração decimal; definir o conceito de base; en-
tender o princípio da posição decimal; identificar as ordens das
unidades, dezenas e centenas; identificar as classes: unidades,
milhares, milhões, bilhões, trilhões; ensinar como se lê um nú-
mero; identificar algarismos significativos e não significativos;
reconhecer o valor absoluto de um algarismo; identificar nú-
meros simples e compostos; identificar números pares e ímpa-
res; entender o conceito de grandeza; reconhecer grandezas
discretas e contínuas; e reconhecer grandezas homogêneas e
heterogêneas. O livro utiliza a técnica da Instrução Programa-
da, que é uma tecnologia instrucional que produz excelentes
resultados, possibilitando que o leitor atinja seus objetivos com
a maior eficiência. A obra também apresenta uma introdução à
calculadora HP-12C.
INDICAÇÃO DE LIVRO
Este sistema de numeração supracitado já está no nosso íntimo em processos
matemáticos que já vivenciamos. Agora, generalizaremos os sistemas de nume-
ração para uma base qualquer.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
SISTEMA DE NUMERAÇÃO EM UMA BASE QUALQUER
Ao utilizar uma base qualquer (chamaremos b), devemos supor um conjunto de
b símbolos 0, 1, 2, … , b – 1, que representará quaisquer números. Utilizaremos
o Teorema a seguir para garantir a existência destes números nesta base b.
Teorema 5: seja b um número natural e M = 0, 1, 2, …, b − 1 com b > 1. Todo
número natural n pode ser representado, de modo único, da seguinte maneira:
n a a b a b a br
r� � � � �0 1 2
2. . ... . ,
r
a M
i r
a
i
r
�
�
�
�
0
0 1 2
0
,
,
, , ,..., ,
.
EXPANSÃO DE UM NÚMERO NA BASE B
O Teorema a seguir também nos permite determinar um dispositivo (algoritmo)
para encontrar a expansão de qualquer número inteiro relativamente à base b.
qn-1 = b . qn + rn
Essa expansão nos permite representar números naturais, através de um conjunto
S, com b símbolos. Para nosso sistema (b = 10), temos: S = {0,1,2,3,4,5,6,7,8,9}.
Se tivermos b ≤ 10, utilizaremos os símbolos 0,1,…, b −1. O q corresponde ao
número a ser representado e os quocientes das divisões sucessivas e r corresponde
ao resto das divisões sucessivas.
Por exemplo: representar o número 723 na base 5.
Utilizando a expansão (divisão euclidiana sucessiva), temos:
723 = 144. 5 + 3
144 = 28. 5 + 4
28 = 5. 5 + 3
5 = 5. 1 + 0
1 = 0. 5 + 1
Tomando os restosdas divisões, escrevemos:
1
1
723 = 3 + 4.5¹ + 3.5² + 0.5³ + 1.5⁴. Assim, o número 723 se representa como
10343 na base 5.
Vamos ver outro exemplo com o mesmo número, porém na base 2.
Utilizando a expansão (divisão euclidiana sucessiva), temos:
723 = 361. 2 + 1
361 = 180. 2 + 1
180 = 90. 2 + 0
90 = 45. 2 + 0
45 = 22. 2 + 1
22 = 11. 2 + 0
11 = 5. 2 + 1
5 = 2. 2 + 1
2 = 1. 2 + 0
1 = 0. 2 + 1
Tomando os restos das divisões, escrevemos:
723 = 1 + 1.2¹ + 0.2² + 0.2³ + 1.2⁴ + 0.2⁵ + 1.2⁶ + 1.2⁷ + 0.2⁸ + 1.2⁹. Assim, o
número 723 se representa como 1011010011 na base 2.
O Jogo da Imitação
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 alemães usam para enviar mensagens aos sub-
marinos. Um de seus integrantes é Alan Turing, um matemático
de 27 anos estritamente lógico e focado no trabalho. Seu gran-
de projeto é construir uma máquina que permita analisar todas
as possibilidades de codificação do Enigma em apenas 18 ho-
ras, de forma que os ingleses conheçam as ordens enviadas
antes que elas sejam executadas. Alan aplica a matemática em
um sistema abstrato em que, em vez dos nove dígitos que em-
pregamos para calcular, ele usava apenas 0 e 1 combinados
em cifras. Essa máquina hipotética deu origem a nosso com-
putador. Um excelente exemplo de sistema de numeração.
INDICAÇÃO DE FILME
Na próxima fase, será desenvolvido o tópico ponto flutuante, que irá complemen-
tar o entendimento sobre teoria dos erros e sistema métrico decimal.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
Figura 7 – Computador programável eletromecânico Z3, que incluía aritmética de ponto flutuante / Fonte:
https://commons.wikimedia.org/wiki/File:Z3_Deutsches_Museum.JPG. Acesso em: 28 set. 2023.
Descrição da Imagem: a figura apresenta um painel de controle à esquerda e 2400 relés à direita. Fim da
descrição.
PONTO FLUTUANTE
Em muitas aplicações do dia a dia é necessário realizar operações com quantidades
fracionárias ou representar valores muito grandes ou muito pequenos. Para estas
situações, deve-se representar números em ponto fixo ou em ponto flutuante.
Um número com ponto fixo tem dígitos fixos para determinar o número em
cada parte. Um número com ponto flutuante varia para mais ou menos.
1
4
https://commons.wikimedia.org/wiki/File:Z3_Deutsches_Museum.JPG
Um computador ou calculadora representa um número real no sistema denomi-
nado aritmética de ponto flutuante. Um número x será representado na forma:
x = ± ( 0,d1d2....dj ). βm
Onde:
dj é um dígito binário;
j é o número de dígitos da mantissa, indo de 0 a β-1;
β é base em que a máquina opera; e
m é o expoente do intervalo [1, u].
Por exemplo, uma máquina que opera no sistema de base 10:
β = 10 ; j = 3 e m = [-5, 5].
Você terá:
x = ± (0,d1d2....dj). βm = 0,d1d2d3 . 10m
Sendo:
O menor número em valor absoluto será: 0,100 . 10-5 = 10-6 e o maior número
em valor absoluto será: 0,999 . 105 = 99900.
Em uma determinada máquina, apenas um subconjunto dos números reais
é representado exatamente e a representação de um número real será realizada
através de truncamento ou de arredondamento.
O estudo da Matemática Computacional pode se tornar trágico
se não for precedido por conhecimentos básicos sobre a Arit-
mética de Ponto Flutuante, principalmente sobre os erros ope-
ratórios desse sistema operacional e, por isso, o capítulo inicial
é dedicado a esse estudo. Cada método estudado está acom-
panhado pelo respectivo algoritmo, em Português Estruturado
e por planilhas. Os algoritmos, bastante detalhados, facilitam
muito a implementação dos métodos em qualquer linguagem
de programação que o leitor conheça.
INDICAÇÃO DE LIVRO
UNIASSELVI
1
5
TEMA DE APRENDIZAGEM 1
Por exemplo: x = 105,79 = 0,10579 . 103. Observe que este número possui 5
dígitos na mantissa. Se for usado o truncamento, x será representado por 0,105 .
103 e se for usado o arredondamento, x será representado por 0,236 x 103.
Mais exemplos sobre representação dos números em ponto flutuante, com β
= 10, você pode observar na Tabela 1.
X TRUNCAMENTO ARREDONDAMENTO
2,35 0,235 . 10 0,235 . 10
54,084 0,540 . 102 0,541 . 102
3,81729... 0,381 . 10 0,382 . 10
-778,12 -0,778 . 103 -0,778 . 103
Tabela 1 – Representação dos números em ponto flutuante. / Fonte: o autor.
A maioria das linguagens de programação utilizam a palavra-chave float para
identificar uma variável que pode receber um número fracionário. Isso porque a
máquina utiliza o sistema de ponto flutuante (floating-point).
APROFUNDANDO
Agora, você irá entender o ponto flutuante na base 2, usado em computadores.
PONTO FLUTUANTE NA BASE 1
Primeiramente, precisamos entender sobre ponto fixo. Para representar frações em
ponto fixo, deve-se reservar certo número de bits para armazenar a parte fracionária.
Tome como exemplo o número binário em base 2, que corresponde ao nú-
mero decimal 103:
0 1 1 0 0 1 1 1
Para a mesma cadeia de 8 bits, tem-se os seguintes números, conforme a
posição da vírgula:
1
1
0 1 1 0 0 1 1, 1 = 51,5
0 1 1 0 0 1, 1 1 = 27,75
0 1 1 0 0, 1 1 1 = 12,875
0 1 1, 0 0 1 1 1 = 3,21875
0, 1 1 0 0 1 1 1 = 0,8046875
Para uma determinada notação em ponto fixo, indica-se somente quantos bits
são usados para a fração e quantos bits representam a parte inteira.
Outra questão importante que você deve saber é que as operações de soma e
subtração em ponto fixo são realizadas exatamente da mesma maneira que para
números inteiros. Naturalmente, podem ser somados ou subtraídos apenas nú-
meros que possuam a mesma posição para a vírgula. Entretanto, os números em
ponto fixo com diferentes posições para a vírgula também podem ser operados,
desde que um dos números seja convertido para a representação do outro.
Um exemplo completo de representação seria o número 42,5. Sua representação
em notação de ponto fixo utilizando a base 2 começa com a conversão do número
para binário e uma mantissa de 16 bits.
(42, 5)10 = (101010, 1)2
00101010 10000000 (ponto fixo)
PENSANDO JUNTOS
Agora você irá entender sobre ponto flutuante.
A faixa de números que podem ser representados em ponto fixo é insuficiente
para a maioria das aplicações científicas, onde existe a necessidade de representar
números muito grandes e/ou muito pequenos.
Para contornar este problema, desenvolveu-se a notação científica, na qual
um quintilhão é representado por 1,0 × 1018, em vez de escrevê-lo por extenso.
A representação de números em ponto flutuante é basicamente a versão bi-
nária da notação científica. A cada número em ponto flutuante estão associados
três outros números: a mantissa, o expoente e a base.
O número em ponto flutuante é então calculado por:
N = w . β m
Onde:
w pertence ao conjunto dos números racionais;
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
β é base; e
m é o expoente.
Os números em ponto flutuante são inerentemente redundantes, no sentido
de que um mesmo número pode ser representado de maneiras diferentes.
Um quintilhão é representado por 1,0 . 1018 ou 0,1 . 1019, ou 100,0 . 1016. É
desejável que exista uma forma normalizada de representar um número.
Uma mantissa está normalizada quando é constituída somente de uma par-
te fracionária (não existe parte inteira) e quando o primeiro dígito à direita da
vírgula é diferente de zero.
Assim, a forma normalizada de representar um quintilhão é dada por 0,1. 1019.
Na base binária, a normalização da mantissa exige que seus dois bits mais
significativos sejam diferentes.
Para números em base 2, isso implica que o dígito mais significativo da man-
tissa e o bit de sinal sejam diferentes. Para números positivos, a mantissa inicia
por (0,1)2 e para número negativos, por (1,0)2.
O formato mais recomendado de ponto flutuante seria o do IEEE (Institute of Electrical
and Electronics Engineers), o IEEE 754.
O bit de sinal é representado no bit mais significativo; os bits seguintes represen-
tam o expoentee os bits menos significativos são destinados à mantissa.
A IEEE define três formatos, conforme a Tabela 2.
SIMPLES
32 BITS
DUPLO
64 BITS
QUÁDRUPLO
128 BITS
Sinal 1 bit 1 bit 1 bit
Expoente 8 bits 11 bits 15 bits
Mantissa 23 bits 52 bits 112 bits
Tabela 2 – Formatos de representação dos números em ponto flutuante no IEEE / Fonte: o autor.
1
8
Números em ponto flutuante, para serem somados ou subtraídos, devem apre-
sentar o mesmo expoente. Neste caso, a soma ou subtração é realizada sobre
as mantissas. O número resultado é formado com a mantissa resultada e o
expoente dos operandos.
Passaremos para um exemplo completo de transformação de base 10 para
base 2 em ponto flutuante do número 25,5.
1. Transformar 25,5 em algo parecido com 1,x . 2y.
25,5 / 2 = 12,75
12,75 / 2 = 6,375
6,375 / 2 = 3,1875
3,1875 / 2 = 1,59375
Logo, 1,59375 . 24
2. Calcular a mantissa baseado na parte fracionária de R1.
Esse processo se dá sempre através de multiplicações sucessivas, até que o resul-
tado seja 0 ou até um máximo de 23 multiplicações. Como R1 = 1,59375, logo,
sua parte fracionária é 0,59375.
0,59375 × 2 = 1,1875
0,1875 × 2 = 0,375
0,375 × 2 = 0,75
0,75 × 2 = 1,5
0,5 × 2 = 1,0
0,0 × 2 = 0,0
Mantissa calculada = 100110. Como a quantidade de bits da mantissa ficou
inferior à 23, completa-se o final com zeros até formar 23 dígitos. Mantissa final:
10011000000000000000000.
3. Coletar as informações necessárias para criar a representação binária.
Um exemplo completo de representação seria o número 42,42. Sua representação
em notação de ponto flutuante na base 2 seria, utilizando 32 bits, com 1 bit para o
sinal, 8 bits para o expoente e 23 bits para a mantissa:
(42, 42)10 = (101010, 0110101110000101000111)2
0 10000100 01010011010111000010100 (ponto flutuante)
PENSANDO JUNTOS
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 1
Sinal: Positivo = 0. Se fosse negativo seria 1. Expoente: 4. No entanto, devido ao
padrão estabelecido pela IEEE para números de ponto flutuante, esse expoente
deve ser acrescido de 127. Assim: 4 + 127 = 131 = 10000011.
4. Montar a representação binária.
Basta juntar o sinal, o expoente e a mantissa coletados nos passos anteriores, para
montar o valor de 32 bits que representa o valor inicial. Assim, a representação final é:
01000001110011000000000000000000
VOCÊ SABE RESPONDER?
Segundo a IEEE, o formato simples apresenta quantos bits no sinal, no expoente
e na mantissa?
NOVOS DESAFIOS
No decorrer deste tema, você teve a oportunidade de aprender sobre a teoria dos
erros, o sistema de numeração e o ponto flutuante.
No cálculo numérico, a teoria dos erros apresenta a possibilidade de existir
erros de modelagem, erros na fase de resolução, erros de arredondamento, erros
de truncamento e propagação de erros.
No sistema de numeração, a ênfase é a conversão da base 10, usada em nosso
dia a dia, para a base 2, aplicada na linguagem de máquina.
Com respeito ao ponto flutuante, os números que podem ser representados
em ponto fixo são insuficientes para a maioria das aplicações científicas, onde
existe a necessidade de representar números muito grandes e/ou muito pequenos.
Uma situação de aplicação desta teoria na prática seria um número perten-
cente ao intervalo (0; 0,0009765625), que não pode ser representado por um
computador com 16 bits. Qualquer número intermediário será arredondado
pelo computador para um dos extremos do intervalo anterior, provocando um
erro de arredondamento nos cálculos.
Neste contexto, na vida real, em um trabalho profissional, temos que enten-
der que os computadores e até mesmo calculadoras comuns podem arredondar
valores dentro do intervalo (0; 0,0009765625).
1
1
1. Qualquer número x pode ser representado numa base β da seguinte forma, modelo ma-
temático:
X x x x xn
n
k� � � � � �( ... ).1
1
2
2
3
3b b b b
b
Neste contexto, esta representação fornece uma informação mais detalhada de um número
em uma determinada base.
O sistema binário é usado pelos computadores e é constituído de dois dígitos o 0 e o 1. A
combinação desses dígitos leva o computador a criar várias informações.
Como exemplo, número x pode ser representado numa base 2 da seguinte forma, modelo
matemático:
77 1001101 1
2
0
2
0
2
1
2
1
2
0
2
1
2
210 2 1 2 3 4 5 6 7
7� � � � � � � � � � �� ( ).
Represente o número (77)10 por meio do modelo matemático número x na base β, sendo
o β = 2.
2. Todo número natural 𝑛 pode ser representado, de modo único, da seguinte maneira:
n a a b a b a br
r� � � � �0 1 2
2. . ... . ,
r
a M
i r
a
i
r
�
�
�
�
0
0 1 2
0
,
,
, , ,..., ,
.
Os computadores digitais trabalham internamente com dois níveis de tensão, sendo ne-
cessária a utilização do sistema binário. O sistema binário ou de base 2 é um sistema de
numeração posicional em que todas as quantidades se representam com base em dois
números, ou seja, zero e um.
Um número n pode, por exemplo, ser representado desta forma na base 2:
AUTOATIVIDADE
1
1
n = 1 + 0.2 + 1.22 + ⋯ + 1.2r.
Represente o número 83 na base 2 na forma n a a b a b a br
r� � � � �0 1 2
2. . ... . , .
3. No contexto dos erros na fase de resolução, há erros que são gerados por uma parada
abrupta em um processo. Um exemplo clássico é a obtenção do número de Euler ou
número e.
e
n
n
1
2 3
1 1 1
2
1
3
1
� � � � � � �
�
�
��
�
�
��! !
...
!
...
Como é impossível obter essa soma infinita, considere-se o somatório para um n suficiente-
mente grande, obtendo uma aproximação para o número e, ou seja, e = 2,71828. O número
e é uma constante matemática que é a base dos logaritmos naturais.
Qual tipo de erro surge quando temos que parar um processo pelo fato de ele ser infinito
ou muito grande?
a) Arredondamento.
b) Modelagem.
c) Truncamento.
d) Propagação.
e) Base.
4. Ao longo da história os povos encontraram diversas formas de representar os números. Os
incas, na América do Sul, por exemplo, conseguiam representá-los através de diferentes
tipos de nós feitos em cordas, o quipu. E antes disso, na região da Mesopotâmia, os sumérios
fabricavam pequenos objetos de barro que eram efetivamente seus numerais. Resumindo,
a mente criativa do homem não se limitou às palavras, nem mesmo esperou o desenvolvi-
mento da escrita, quando precisou encontrar meios para representar os números.
O desenvolvimento de um sistema de numeração eficiente, como é o caso do Sistema de
Numeração Posicional Decimal, não foi algo que ocorreu rapidamente e, embora estejamos
habituados com o seu uso, nem sempre os homens dominaram as regras que governam
seu funcionamento, em especial, o princípio de posição.
Considerando o sistema de base 10, podemos afirmar em relação ao número 2023:
AUTOATIVIDADE
1
1
https://pt.wikipedia.org/wiki/Constante_matem%C3%A1tica
https://pt.wikipedia.org/wiki/Logaritmo_natural
I - O zero está na classe do milhar.
II - O três está na segunda ordem.
III - O número como um todo possui duas classes, unidades simples e milhares.
É correto o que se afirma em:
a) I, apenas.
b) III, apenas.
c) I e II, apenas.
d) II e III, apenas.
e) I, II e III.
5. Nos padrões numéricos do IEEE, o padrão IEEE-754 descreve formatos de ponto flutuante,
uma maneira de representar números reais no hardware. Este padrão foi adotado em 1985
e desde então define algumas regras de normalização a serem seguidas nas operações
e representações de números binários com ponto flutuante. Os principais são: simples,
duplo e quádruplo.
Segundo o IEEE, o formado duplo apresenta a seguinte distribuição de bits:
a) 32 no geral, com 1 para o sinal, 8 para o expoente e 23 para a mantissa.
b) 64 no geral, com 1 para o sinal, 11 para o expoente e 52 para a mantissa.
c) 64 no geral, com 1 para o sinal, 12 para o expoente e 51 para a mantissa.
d) 128 no geral, com 1 para o sinal, 15 para o expoente e 112 para a mantissa.
e) 128 no geral, com 0 para o sinal, 16 para o expoente e 112 para a mantissa.
AUTOATIVIDADE
1
1
REFERÊNCIAS
COSTA,D. C. B. Cálculo Numérico. Indaial: Uniasselvi, 2011.
1
4
1. 77 1001101 1
2
0
2
0
2
1
2
1
2
0
2
1
2
210 2 1 2 3 4 5 6 7
7� � � � � � � � � � �� ( ).
2. 83 = 41.2 + 1
41 = 20.2 + 1
20 = 10.2 + 0
10 = 5.2 + 0
5 = 2.2 + 1
2 = 1.2 + 0
1 = 0.2 + 1
83 = 1 + 1..2 + 0.22 + 0.23 + 1.24 + 0.25 + 1.26
3. Opção C. Por definição, o erro de truncamento surge quando precisamos parar um processo
simplesmente pelo fato de ele ser infinito ou muito grande.
4. Opção B.
I O zero está na classe das unidades simples.
II O três está na primeira ordem.
III O número como um todo possui duas classes, unidades simples e milhares.
5. Opção B. Segundo o IEEE, o correto na distribuição dos bits para o formato duplo seria: 64
no geral, com 1 para o sinal, 11 para o expoente e 52 para a mantissa.
GABARITO
1
5
MINHAS METAS
LÓGICA PROPOSICIONAL
Introduzir os conceitos fundamentais da lógica proposicional.
Identificar as aplicações da lógica proposicional na matemática e na ciência da
computação.
Compreender e aplicar os conceitos e símbolos da lógica matemática.
Identificar e diferenciar os conectivos utilizados na lógica matemática.
Construir tabelas-verdade usando os conectivos e suas tabelas específicas.
Construir árvores de refutação e, por meio delas, verificar a validade de argumentos e
teoremas.
T E M A D E A P R E N D I Z A G E M 2
1
1
INICIE SUA JORNADA
Quando pensamos, a lógica, ou a ilógica, necessariamente, nos acompanham.
Ao falarmos ou escrevermos, estamos expressando nosso pensamento. Logo
precisamos usar a lógica nessas atividades. Como devemos proceder no falar ou
no escrever para não sermos ilógicos?
Podemos perceber a importância da lógica em nossa vida, não somente na
teoria, como na prática. Quando queremos pensar, falar, escrever ou agir correta-
mente, precisamos colocar ordem no pensamento. Neste sentido, a lógica objetiva a
criação de uma representação mais formal, que se contrapõe à linguagem natural.
Um exemplo prático e simples de ordem no pensamento seria:
A gaveta está fechada.
A caneta está dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a caneta.
Um segundo exemplo, já com aplicação em lógica de programação, na construção
de um algoritmo (sequência de passos a fim de atingir um objetivo) da troca de
lâmpada, utilizando o português coloquial, seria:
Pegar uma escada.
Posicionar a escada embaixo da lâmpada.
Buscar uma lâmpada nova.
Subir na escada.
Retirar a lâmpada velha.
Colocar a lâmpada nova.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
Nestes exemplos, você pode observar a necessidade de colocar ordem no pensa-
mento a fim de se chegar a uma solução.
Agora, observe um exemplo envolvendo falso ou verdadeiro:
O GitHub é a melhor plataforma de versionamento de código (Proposição ver-
dadeira).
1 + 1 = 2 (Proposição verdadeira).
São Paulo é a capital do Brasil (Proposição falsa).
Neste último exemplo, observe que a lógica está preocupada em verificar se é
falso ou verdadeiro, ou seja, sua validade.
A lógica matemática não se refere a nenhum ser, a nenhuma coisa ou a algum ob-
jeto em particular, nem a um conteúdo, mas à forma e à correção do pensamento,
isto é, ela nos ensina a usar corretamente o raciocínio. Desta forma, pensar com
lógica significa ordenar o pensamento e verificar sua validade.
Neste podcast, você aprenderá sobre a lógica proposicional, dando destaque à
lógica matemática e ao cálculo proposicional. Recursos de mídia disponíveis no
conteúdo digital do ambiente virtual de aprendizagem
PLAY NO CONHECIMENTO
1
8
Na próxima fase, será desenvolvido o tópico conhecendo a lógica matemática, dan-
do destaque em conceitos, simbologias, classificação dos conectivos e formalização.
DESENVOLVA SEU POTENCIAL
CONHECENDO A LÓGICA MATEMÁTICA
A maneira como escrevemos as afirmações matemáticas (lemas, teoremas, pre-
posições, corolários) sempre parte de algumas hipóteses e tudo o que está dito
depois delas precisa ser provado. Esta estrutura vem da lógica matemática.
Podemos definir a lógica como sendo o estudo dos argumentos e, neste tema, da-
remos início aos conceitos próprios da lógica matemática, bem como sua simbologia.
VAMOS RECORDAR?
Para que você tenha uma visão geral da histórica da lógica, retomando conteúdos
básicos, focando principalmente na lógica matemática, sugiro a leitura do texto
Escorço Histórico da Lógica Matemática de Carlos Magno Corrêa Dias. Recursos
de mídia disponíveis no conteúdo digital do ambiente virtual de aprendizagem
Lógica de Programação
Comece sabendo: qualquer iniciante poderá seguir nosso pas-
so a passo sozinho para sair do zero e aprender a pensar com-
putacionalmente, criando algoritmos que na sequência pode-
rão ganhar vida no computador usando a linguagem Python.
Claro, simples, direto e repleto de exemplos graduais, práticos
e ilustrados com situações cotidianas, aliado a explicações de-
talhadas que descomplicam o aprendizado. Conta ainda com
grande diversidade de exercícios minuciosamente resolvidos.
Este livro se tornou referência desde a primeira edição e agora
foi totalmente remodelado e modernizado. Ele mostra o cami-
nho, passo a passo, linha a linha, lado a lado com você para
implementar sua lógica de programação usando Python.
O livro traz aplicações da lógica matemática na computação.
INDICAÇÃO DE LIVRO
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 2
ARGUMENTO
Argumento vem do vocábulo latim e deriva da palavra argumentum, que sig-
nifica prova ou razão. Trata-se de uma sequência de enunciados ou proposi-
ções. Um enunciado é a conclusão e os demais são premissas, as quais servem
para provar a conclusão. Seria o raciocínio que utilizamos para demonstrar ou
comprovar uma proposição, ou ainda, para convencer outra pessoa daquilo
que se afirma ou se nega.
Por exemplo:
Argumento:
Todos os números racionais podem ser expressos como quociente de dois intei-
ros. Contudo, π não pode ser expresso como quociente de dois inteiros. Portanto,
π não é um número racional. Evidentemente, π é um número. Logo, existe pelo
menos um número não racional.
■ Premissa: todos os números racionais podem ser expressos como quo-
ciente de dois inteiros.
■ Premissa: π não pode ser expresso como quociente de dois inteiros.
■ Conclusão intermediária das premissas: π não é um número racional.
■ Premissa: π é um número.
■ Conclusão: existe pelo menos um número não racional.
Os argumentos complexos são formados por etapas. O argumento complexo
anterior consiste em duas etapas. Os três primeiros enunciados formam a pri-
meira etapa e os três últimos formam a segunda etapa. O terceiro enunciado é
componente das duas etapas, funcionando como a conclusão da primeira e como
uma premissa da segunda.
É possível identificar as premissas e a conclusão, através de indicadores
de inferência. Indicadores de inferência são palavras ou frases utilizadas no
argumento. Existem os indicadores de premissas e os indicadores de conclusão.
A seguir, no Quadro 1, listamos alguns exemplos de indicadores:
4
1
INDICADORES DE PREMISSA INDICADORES DE CONCLUSÃO
Pois Portanto
Desde que Por conseguinte
Como Assim
Porque Dessa maneira
Assumindo que Neste caso
Visto que Podemos deduzir que
Admitindo que Logo
Isto é verdade porque De modo que
A razão é que Então
Em vista de Consequentemente
Como consequência de Assim sendo
Como mostrado pelo fato de Segue-se que
Dado que O qual implica que
Sabendo-se que O qual acarreta que
Supondo que O qual prova que
Como foi dito O qual inferimos que
Devido a Resulta em
Quadro 1 – Indicadores de Premissa e de Conclusão / Fonte: Jenske (2015, p. 5).
UNIASSELVI
4
1
TEMA DE APRENDIZAGEM 2
PROPOSIÇÃO
Conforme vimos anteriormente, argumento é um conjunto de proposições. Assim,
as premissas e a conclusão de um argumento são proposições. Proposições ou
enunciados são significados ou ideias expressáveis por sentenças declarativas, onde
afirmam fatos ou exprimem juízosque formamos a respeito de determinada coisa.
As sentenças declarativas são foco de nosso estudo, pois a elas podemos atri-
buir a propriedade de ser “verdadeira” ou “falsa”. Vejamos alguns exemplos de
proposições no Quadro 2:
PROPOSIÇÃO VALOR LÓGICO
A lua é um satélite natural da Terra. Verdadeiro
½ é um número natural. Falso
São Paulo é a capital do Brasil. Falso
Janeiro é o primeiro mês do ano. Verdadeiro
Quadro 2 – Proposição X Valor Lógico / Fonte: Jenske (2015, p. 6).
Um argumento pode ter uma ou mais premissas, mas só pode ter uma única
conclusão.
PENSANDO JUNTOS
Na Língua Portuguesa, temos vários tipos de sentenças: imperativas, exclamativas,
interrogativas e declarativas. No entanto, apenas as declarativas exprimem propo-
sições, pois podemos atribuir um valor verdadeiro ou falso.
APROFUNDANDO
4
1
Os enunciados a seguir não são preposições, pois não é possível atribuir um valor
de verdade (verdadeiro/falso).
Traga o livro. Sentença imperativa.
Você gosta de estudar? Sentença interrogativa.
Que lindo! Sentença exclamativa.
O Cálculo Proposicional analisa a relação entre as proposições, considerando a
forma que essa relação assume e não especificamente o seu conteúdo ou o seu
significado.
As proposições podem ser substituídas por letras maiúsculas do alfabeto latino:
A, B, C, ..., Z.
Por exemplo: Esta é a melhor turma e vocês são os melhores alunos.
Se tomarmos:
R = Esta é a melhor turma.
S = Vocês são os melhores alunos.
Teremos: R e S, a tradução simbólica da proposição.
Uma proposição pode ser simples ou composta.
Uma proposição é dita simples se, e somente se, contiver uma única afirma-
ção. Exemplos:
M = Maria é estudiosa.
N = Eduardo joga futebol.
P = O número 5 é primo.
Q = Todo número par é divisível por 2.
Uma proposição é dita composta quando for constituída por pelo menos duas
proposições simples, relacionadas entre si pelo que chamamos de conectivos.
UNIASSELVI
4
1
TEMA DE APRENDIZAGEM 2
Exemplos:
T = Está frio e choveu hoje.
U = Ele é alto ou baixo.
V = Se Ana chegou atrasada, então ela perdeu o ônibus.
Z = João irá sair hoje se, e somente se, terminar todo o trabalho.
Outros exemplos de argumentos e de proposições podem ser encontrados no
Google Acadêmico, na obra Introdução à Lógica, de Cézar A. Mortari. Recursos
de mídia disponíveis no conteúdo digital do ambiente virtual de aprendizagem.
EU INDICO
LÓGICA FORMAL
A lógica está dividida em formal e informal.
A lógica informal é o estudo de argumentos particulares em linguagem natural e
do contexto no qual elas ocorrem. Ela se concentra na análise prática dos argumentos.
A lógica formal é o estudo das formas de argumento, onde utiliza modelos
abstratos comuns a argumentos distintos, mas que apresentam a mesma estru-
tura. Este é o foco dos nossos estudos.
A lógica matemática, na sua versão formal ou clássica, assume como regras
fundamentais do pensamento válido três princípios básicos.
4
4
■ Princípio da Identidade: toda proposição é idêntica a si mesma. Sim-
bolicamente, P é P.
■ Princípio da Não Contradição: uma proposição não pode ser verda-
deira e falsa ao mesmo tempo. Simbolicamente, P e não P.
■ Princípio do Terceiro Excluído: toda proposição ou é verdadeira ou é
falsa, não existindo um terceiro valor que ela possa assumir. Simbolica-
mente, P ou não P (ou exclusivo).
O Princípio da Identidade garante que P deve ser igual a P e não pode ser A, ou
B. Na prática, é dizer que um cachorro é um cachorro e não pode ser um pássaro.
Este princípio nos garante que tudo tem uma identidade e não podemos pensar
nada sem sua identidade. Tudo que existe na natureza só pode ser representado
e percebido pelo pensamento com sua identidade.
O Princípio da Não Contradição garante que o que é, é e não pode ser sua
negação. Um exemplo disso é que um cachorro é um cachorro e não pode ser um
não cachorro. Ou seja, ou é um cachorro ou não é. Note que, sem este princípio,
não há o princípio de identidade.
O Princípio do Terceiro Excluído garante que toda afirmação é verdadeira ou
é falsa, não existe uma terceira possibilidade. “Ou o aluno é estudioso ou o aluno
não é estudioso”; “ou este relógio funciona ou não funciona”.
VOCÊ SABE RESPONDER?
Para que seja possível uma análise lógica, é necessário que sejam satisfeitos os
três princípios da lógica formal?
CLASSIFICAÇÃO DOS CONECTIVOS E FORMALIZAÇÃO
No tema anterior, vimos que os conectivos proposicionais (e; ou; se... então...; se,
e somente se; não) são utilizados para unir duas ou mais proposições simples,
formando assim uma proposição composta.
Apresentaremos a seguir os conectivos que, com suas representações sim-
bólicas, serão usados na tradução de proposições para a linguagem simbólica.
UNIASSELVI
4
5
TEMA DE APRENDIZAGEM 2
CONJUNÇÃO
É o resultado da combinação de duas proposições ligadas pelo conectivo e, sim-
bolicamente representado por ∧ ou &. A conjunção também pode ser expressa
pelas palavras: mas, contudo, embora, visto que, entre outras.
Por exemplo: Ana gosta de Matemática e Maria gosta de Artes.
A = Ana gosta de Matemática.
M = Maria gosta de Artes.
Simbolicamente:
A M∧ .
DISJUNÇÃO
É o resultado da combinação de duas proposições ligadas pelo conectivo ou,
simbolicamente representado por V. Na linguagem coloquial, a palavra ou pode
ser empregada em dois sentidos, inclusivo ou exclusivo, representados simboli-
camente por V e ou, respectivamente.
Observe as seguintes proposições:
A = Ana é alta ou bonita.
B = Bruna é de áries ou de peixes.
Raciocínio Lógico Simplificado (Vol. 1)
Este primeiro volume disseca, com teorias e questões, os Fun-
damentos de Lógica, a Equivalência Lógica e a Negação de
Proposições, os Diagramas Lógicos, a Lógica de Argumenta-
ção, a Implicação Lógica, as Verdades e Mentiras, a Associação
Lógica.
Os autores lançam mão de uma didática particular, marcada
principalmente pelo uso de cores para alcançar o máximo
aprendizado do aluno.
Além da teoria, cada capítulo traz questões resolvidas e exercí-
cios propostos com gabarito, para fixação da matéria.
INDICAÇÃO DE LIVRO
4
1
Na proposição A, pode ocorrer que Ana seja alta e bonita, neste caso, trata-se do
ou inclusivo, isto é, pode ocorrer se as duas proposições sejam verdadeiras. Já na
proposição B, Bruna não pode ser de áries e de peixes ao mesmo tempo. Ou Bruna
é de áries ou ela é de peixes. Trata-se do ou exclusivo, ou a primeira proposição é
verdadeira ou a segunda é verdadeira.
Por exemplo: Ana gosta de Matemática ou de Artes.
A = Ana gosta de Matemática.
M = Ana gosta de Artes.
Simbolicamente: A V M (ou inclusivo).
ZOOM NO CONHECIMENTO
Quando a disjunção V é empregada no sentido inclusivo, P V Q, o argumento é
válido se:
(i) apenas P for verdadeiro.
(ii) apenas Q for verdadeiro.
(iii) P e Q forem ambos verdadeiros.
Isto é importante para diferenciar da disjunção exclusiva, P V Q, onde pode ocorrer
apenas a situação (i) apenas P for verdadeiro ou a situação (ii) apenas Q for verda-
deiro, mas não pode ocorrer a situação (iii). A disjunção exclusiva ocorre na forma
“Ou ... ou”, por exemplo “ou é dia ou é noite.
APROFUNDANDO
UNIASSELVI
4
1
TEMA DE APRENDIZAGEM 2
CONDICIONAL
Duas proposições formam uma condicional quando forem colocadas no seguinte
modelo:
Se (proposição 1), então (proposição 2).
O símbolo utilizado para ligar as duas proposições de uma condicional é →.
Por exemplo: Se todos os homens são mortais e Sócrates é um homem, então
Sócrates é mortal.
H = Todos os homens são mortais.
S = Sócrates é um homem.
M = Sócrates é mortal.
Simbolicamente: ( )HV S M → .
BICONDICIONAL
Utilizamos o conectivo bicondicional em toda proposição composta, formada
por duas proposições, que pode ser colocada na forma:
(proposição 1) se, e somente se, (proposição 2)
O símbolo que representa o conectivo bicondicional é ↔.
Por exemplo: Um número é dito par, se e somente se, for divisível por dois.
Condicionais implícitas:
(i) Se um número é ditopar, então é divisível por dois.
(ii) Se o número é divisível por dois, então ele é par.
P = Um número par.
D = Divisível por dois.
Simbolicamente: P D ↔ .
Note que a proposição bicondicional pode ser entendida como uma conjunção de
dois condicionais, ou seja, dado A B ↔ , temos A B → e B A → .
PENSANDO JUNTOS
4
8
NEGAÇÃO
Este conectivo nega a afirmação da proposição que o precede. Este é um conecti-
vo unário, pois diferente dos conectivos binários, ele não liga duas proposições.
O símbolo utilizado para esse conectivo é ~, ele é colocado antes da letra que
representa a proposição.
Por exemplo: Fernanda não gosta de cachorros.
F = Fernanda gosta de cachorros.
Simbolicamente: ~ F.
FORMALIZAÇÃO
O processo de formalização consiste em converter uma sentença ou argumen-
to em particular em uma forma sentencial composta de letras proposicionais,
conectivos lógicos e parênteses. Os conjuntos de símbolos utilizados nestas es-
truturas são:
Letras proposicionais são letras maiúsculas do alfabeto, como: A, B, C, D, E, ..., Z.
Conectivos proposicionais: ~, ∧ , V, →, ↔
Parênteses: ( ).
Por exemplo: Três não é um número par, mas é um número primo.
P: Três é um número par.
Q: Três é um número primo.
Simbolicamente: ~ � P Q∧ .
Os símbolos da lógica formal expõem com maior clareza as estruturas lógicas de
proposições e argumentos, que muitas vezes ficam obscuros na linguagem comum.
PENSANDO JUNTOS
UNIASSELVI
4
9
TEMA DE APRENDIZAGEM 2
REGRAS DE FORMALIZAÇÃO
Qualquer sequência composta por elementos do vocabulário do cálculo propo-
sicional constitui uma fórmula. No entanto, nem toda fórmula é aceita pelo cál-
culo proposicional. Para ser aceita, ela precisa ser uma fórmula bem formada,
conhecida como fbf.
Para se obter fbfs é preciso que a sequência formada siga as seguintes regras
de formação:
1. Qualquer letra proposicional isolada é uma fbf.
2.Se j é uma fbf, então ~j também é uma fbf.
3.Se j e d são fbfs, então (ϕ δ∧ � ), (ϕ δ∨ ), (ϕ δ→ ) e (j j↔ � ) também são
fbfs.
Por exemplo: (R P Q � �~ �( ) ) é uma fbf, pois:
Construção Justificativa
P regra 1
Q regra 1
(P ∧ Q) regra 3
~ (P ∧ Q) regra 2
R regra 1
R P Q � �~ �( ) regra 3
Duas destas regras empregam letras gregas. Note que as letras gregas não são
elementos do vocabulário e, portanto, não devem ser empregadas ao se escrever
uma fbf. Cada letra grega serve apenas, na regra, para representar uma fbf qual-
quer. As letras utilizadas são o delta (d ), phi (j ) e o psi ( Y ).
APROFUNDANDO
5
1
Para finalizar o tópico de lógica matemática, você pode memorizar o resumo do
Quadro 3, que irá lhe ajudar em muito nos próximos tópicos.
CONECTIVO SÍMBOLO LÊ-SE
Conjunção ∧ ... e ...
Disjunção
∨ ... ou ...
ou ou ou ... ou ...
Condicional → se ... então ...
Bicondicional ↔ ... se e somente se ...
Negação ~ não (é o caso de ...)
Quadro 3 – Conectivos utilizados na Lógica Proposicional / Fonte: Jenske (2015, p. 23).
Enigmas de Um Crime
A história se passa na faculdade de Oxford, e reúne um es-
tudante americano e um professor de lógica da universidade
inglesa. Eles tentam solucionar uma série de crimes relaciona-
dos a símbolos matemáticos.
Para isso, utilizam técnicas de estratégia e raciocínio calcadas
na matemática, como em uma solução de problemas. Além
disso, empregam técnicas que o escritor Arthur Conan Doyle
descreve em seus livros de Sherlock Holmes.
INDICAÇÃO DE FILME
UNIASSELVI
5
1
TEMA DE APRENDIZAGEM 2
Na próxima fase, será desenvolvido o cálculo proposicional, dando
ênfase a tabelas-verdade e árvores de refutação.
CÁLCULO PROPOSICIONAL
TABELAS-VERDADE
Anteriormente, tratamos a lógica proposicional do ponto de vista
sintático. Nos próximos, temas abordaremos dois testes sistemáti-
cos, tabela-verdade e árvore de refutação, que interpretam os ope-
radores da lógica proposicional, permitindo dar valor de verdade
a um argumento.
O conceito central da semântica da lógica proposicional é o
valor de verdade. O enunciado verdadeiro tem valor de verdade
V e o enunciado falso tem o valor de verdade F, respectivamente,
verdadeiro e falso.
As tabelas-verdade, ou tabelas de valores de verdade, mos-
tram o valor da verdade de uma proposição composta para cada
combinação de valores de verdade que se pode atribuir aos seus
componentes.
A seguir, estudaremos como analisar o valor de verdade de uma
proposição na forma de uma tabela-verdade.
Lógica sem Dúvidas: desmistificando o racicínio lógico
O livro é didático e contextualizado, mantendo o rigor forma,
dos principais conceitos da lógica clássica, como proposição,
tabela-verdade, lógica de argumentação, dentre outros.
É uma excelente ferramenta para questões que venham a apa-
recer em seu cotidiano, sejam elas pessoais ou profissionais.
Sempre, a teoria vem acompanhada de exercícios para o leitor
fixar exercitar os conceitos
INDICAÇÃO DE LIVRO
5
1
LINHAS NA TABELA-VERDADE
Vamos pensar em uma proposição qualquer P, por exemplo: Isto é um compu-
tador. Esta proposição pode ser verdadeira ou falsa. Logo, isto é um computador
(V) ou não (F). Podemos organizar esse pensamento em uma tabela, a qual cha-
mamos de tabela-verdade. Observe o Quadro 4.
P
1 V
2 F
Quadro 4 – Tabela-verdade com uma proposição / Fonte: o autor.
Agora, vamos pensar em uma proposição composta, P e Q, onde P representa
“hoje é sábado” e Q “o dia está ensolarado”.
Perceba que hoje pode ser sábado (V) e pode estar um dia ensolarado (V),
mas também pode ser que hoje seja sábado (V) e que não esteja ensolarado (F).
Também pode ser que hoje não seja sábado (F) e que o dia esteja ensolarado (V).
Por fim, pode ser que hoje não seja sábado (F) e que o dia não esteja ensolarado
(F). Representando isso na tabela-verdade, temos o Quadro 5.
P Q
1 V V
2 V F
3 F V
4 F F
Quadro 5 – Tabela-verdade com duas proposições / Fonte: o autor.
UNIASSELVI
5
1
TEMA DE APRENDIZAGEM 2
O valor lógico de qualquer proposição composta é determinado pelos valores lógicos
das proposições simples que a constituem e pela operação do conectivo envolvido.
Já em uma proposição composta por três proposições simples, teremos um
número de possibilidades maior. Observe o Quadro 6.
P Q R
1 V V V
2 V V F
3 V F V
4 V F F
5 F V V
6 F V F
7 F F V
8 F F F
Quadro 6 – Tabela-verdade com três proposições / Fonte: o autor.
O número de linhas de uma tabela para representar uma proposição composta
por quatro proposições simples será definido por 2n
, onde n representa o nú-
mero de proposições.
VOCÊ SABE RESPONDER?
Quantos linhas de verdadeiro e falso terá uma tabela-verdade com quatro
proposições?
5
4
OPERAÇÕES LÓGICAS DAS PROPOSIÇÕES
A semântica de cada operador lógico também pode ser expressa
na forma de tabela-verdade, onde os valores-verdade das propo-
sições compostas que têm o operador lógico como seu operador
principal são determinados através do valor lógico dos operan-
dos a que se aplicam. A seguir, vamos analisá-los um a um.
NEGAÇÃO (~)
Dada uma proposição P, onde P: hoje é sábado, podemos formar
uma proposição negando P, ~P: não é verdade que hoje é sábado
ou, simplesmente, hoje não é sábado.
Na tabela-verdade, a negação inverte o valor de verdade da
proposição, isto é, se P for verdadeiro, então ~P será falso e se P
for falso, então ~P será verdadeiro. Veja o Quadro 7.
P ~P
1 V F
2 F V
Quadro 7 – Tabela-verdade para a negação / Fonte: o autor.
CONJUNÇÃO ( ∧ , &)
A conjunção de duas proposições simples, P ∧ Q, somente será
verdadeira se P e Q forem ambas verdadeiras. Se uma das propo-
sições (ou ambas) for falsa, a proposição composta P ∧ Q será
considerada falsa. Veja o Quadro 8.
UNIASSELVI
5
5
TEMA DE APRENDIZAGEM 2
P Q P ∧ Q
1 V V V
2 V F F
3 F V F
4 F F F
Quadro 8 – Tabela-verdade para a conjunção / Fonte: o autor.
DISJUNÇÃO INCLUSIVA (V)
A disjunção inclusiva de duas proposições P e Q é a proposição composta P V Q,
que é falsa quando os valores lógicos das proposições(P, Q) forem ambos falsos,
e verdadeira nas demais possibilidades de valor de verdade. Veja a Quadro 9.
P Q P V Q
1 V V V
2 V F V
3 F V V
4 F F F
Quadro 9 – Tabela-verdade para a disjunção inclusiva / Fonte: o autor.
DISJUNÇÃO EXCLUSIVA (OU OU)
A disjunção exclusiva de duas proposições P e Q é a proposição composta P OU
OU Q, que é verdadeira quando os valores lógicos das proposições (P, Q) forem
diferentes, e falsa quando P e Q forem ambas falsas ou ambas verdadeiras.
5
1
Lembre-se de que a disjunção exclusiva, como a própria denominação carac-
teriza, exclui uma das duas possibilidades: ambas sejam verdadeiras ou ambas as
falsas, nunca as duas são verdadeiras ou falsas. Veja o Quadro 10.
P Q P OU OU Q
1 V V F
2 V F V
3 F V V
4 F F F
Quadro 10 – Tabela-verdade para a disjunção exclusiva / Fonte: o autor.
VOCÊ SABE RESPONDER?
Para se obter um valor verdadeiro na conjunção ∧ , quais devem ser os valores de
duas proposições?
UNIASSELVI
5
1
TEMA DE APRENDIZAGEM 2
CONDICIONAL ( → )
Vimos que quando duas proposições são conectadas com a palavra se antes da
primeira inserção e da palavra então antes da segunda inserção, a proposição
formada é condicional.
A proposição P → Q pode ser interpretada de duas maneiras:
(i) P é condição suficiente para Q.
(ii) Q é a condição necessária para P.
A condicional de duas proposições P e Q possui valor de verdade falso quando
o antecedente é verdadeiro e a concedente é falsa, nos demais casos é sempre
verdadeiro. Veja o Quadro 11.
P Q P → Q
1 V V V
2 V F F
3 F V V
4 F F V
Quadro 11 – Tabela-verdade para condicional / Fonte: o autor.
BICONDICIONAL (↔)
Estudamos o bicondicional, proposição esta representada por P se, e somente
se, Q, cujo valor lógico é verdade (V) quando P e Q são ambos verdadeiros ou
ambos falsos e o valor lógico é falso (F) quando P e Q têm valores lógicos dife-
rentes. Veja a Quadro 12.
A proposição P Q↔ pode ser interpretada de duas maneiras:
5
8
(i) P é condição necessária e suficiente para Q.
(ii) Q é a condição necessária e suficiente para P.
P Q P ↔ Q
1 V V V
2 V F F
3 F V F
4 F F V
Quadro 12 – Tabela-verdade para bicondicional / Fonte: o autor.
Para verificar a validade de argumentos utilizando a tabela-verdade, você irá
sempre consultar os valores-verdade de cada operador lógico. Para facilitar esta
consulta, as reunimos em uma tabela única:
P Q P ∧ Q P V Q P OU OU Q P → Q P ↔ Q
1 V V V V F V V
2 V F F V V F F
3 F V F V V V F
4 F F F F F V V
Quadro 10 – Tabela-verdade resumo / Fonte: o autor.
UNIASSELVI
5
9
TEMA DE APRENDIZAGEM 2
CONSTRUINDO TABELAS-VERDADE
Para construir uma tabela-verdade para uma fbf complexa, determinamos os
valores-verdade para suas fbfs e então utilizamos as tabelas-verdade para os ope-
radores lógicos, a fim de calcular os valores para as subfbfs cada vez maiores, até
obtermos os valores para a fórmula toda.
Por exemplo, na proposição ( ) ( )~ �P Q P Q� �� , no Quadro 11, faça as com-
binações da esquerda para a direita, seguindo o Quadro 10.
P Q P Q∨ ( )�P Q∧ ~ �( )P Q∧ ( ) ( )�~ �P Q P Q � � �
1 V V V V F F
2 V F V F V V
3 F V V F V V
4 F F F F V F
Quadro 11 – Tabela-verdade resolvida de ( ) ( )�~ �P Q P Q � � � / Fonte: o autor.
TAUTOLOGIAS, INCONSISTÊNCIAS E CONTIGÊNCIAS
Qualquer fórmula cuja tabela-verdade contém somente F sob seu operador prin-
cipal é denominada inconsistente. Fórmulas que apresentam ao menos um va-
lor V e ao menos um valor F, são chamadas de contingentes. Se uma fórmula
A ordem de resolução dos conectivos é: ~, , , ,� � � não havendo ne-
nhum parêntese; quando houver parênteses, segue-se a mesma ordem dentro
dos parênteses.
APROFUNDANDO
1
1
apresenta em sua tabela-verdade somente V sob seu operador principal, ela é
chamada de tautologia. Veja o Quadro 12 para um exemplo de tautologia em
~ ~( )P P∧ .
P ~P P P∧ ~ ~ ~( )P P∧
1 V F F V
2 F V F V
Quadro 12 – Tabela-verdade resolvida de ~ ~( )P P∧ . / Fonte: o autor.
EQUIVALÊNCIAS
As equivalências podem também ser provadas utilizando tabelas-verdade. Veja
como o processo é simples. Vamos construir a tabela-verdade da equivalência
no Quadro 13:
( ( )) (( ) ( ))� � � .P Q R P Q P R� � � � ��
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
P
Q
R
Q
R
∨
(
)
P
Q
R
�
�
�
�
(
)
P
Q
∧
(
)
P
R
∧
(
(
)
(
))
�
�
P
Q
P
R
�
�
�
(
(
))
((
)
(
))
�
�
P
Q
R
P
Q
P
R
�
�
�
�
�
�
1
V
V
V
V
V
V
V
V
V
2
V
V
F
V
V
V
F
V
V
3
V
F
V
V
V
F
V
V
V
4
V
F
F
F
F
F
F
F
V
5
F
V
V
V
F
F
F
F
V
6
F
V
F
V
F
F
F
F
V
7
F
F
V
V
F
F
F
F
V
8
F
F
F
F
F
F
F
F
V
Q
ua
dr
o
1
3
–
Ta
be
la
-v
er
da
de
re
so
lv
id
a
de
(
(
))
((
)
(
))
P
Q
R
P
Q
P
R
/
F
on
te
: o
a
ut
or
.
1
1
Observe que a coluna do (P ∧ (Q ∨ R)) e ((P ∧ Q) ∨ (P ∧ R) deram iguais, ou seja,
ambas V ou ambas F, por isso são equivalentes.
ÁRVORES DE REFUTAÇÃO
Vimos que o uso de tabela-verdade nos fornece um teste rigoroso e completo para
a validade ou invalidade de formas de um argumento da lógica proposicional,
mas que são ineficazes em problemas que envolvem muitas letras proposicionais,
pois o número de linhas cresce na ordem 2n.
Desta forma, as árvores de refutação fornecem um algoritmo mais eficaz
para verificar a validade ou a invalidade de argumentos comparados às tabelas-
-verdade. Elas constituem uma forma gráfica da forma normal disjuntiva de um
argumento refutado.
Neste tema, estudaremos como se constituem as árvores de refutação, suas regras
e como analisar a validade ou invalidade de argumentos através deste algoritmo.
Introdução a Lógica Matemática
Esta obra foi escrita por docentes da Academia da Força Aérea
(AFA), responsáveis pela disciplina Lógica Matemática e tem por
objetivo dar ao leitor o fundamento introdutório necessário para
o estudo aprofundado da Lógica e suas aplicações, além de
suprir uma deficiência bibliográfica de textos mais acessíveis e
didáticos. Para tanto, este livro é composto de uma parte inicial,
em que o Cálculo Proposicional é apresentado com conectivos,
tabelas-verdade, tautologias mais relevantes, formalização de
argumentos e prova de sua validade ou invalidade. Na segun-
da parte, é apresentado o Cálculo de Predicados com a prova
de validade de argumentos usando o quantificador universal
e o existencial. Em cada capítulo, o conteúdo é ilustrado com
exemplos esclarecedores, seguidos por exercícios resolvidos.
INDICAÇÃO DE LIVRO
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
CONSTRUINDO ÁRVORES DE REFUTAÇÃO
Em uma definição mais formal, uma árvore é um conjunto de nós ou vértices liga-
dos por arestas ou ramos, conforme podemos verificar na Figura 3 a seguir. Os nós
estão rotulados por números inteiros e os nós finais são denominados de folhas.
Folhas
Raiz
Nós2
1
3
4 5
9
876
Figura 3 – Composição de uma Árvore / Fonte: Jenske (2015, p. 91).
Descrição da Imagem: a figura apresenta o número 1 como nó ou vértice raiz, os números 3, 4 e 5 como nós e
os números 2, 6, 7, 8 e 9 como nós finais ou folhas. Os nós são ligados entre si por segmentos de reta ou arestas
ou ramos.Fim da descrição.
Já uma árvore de refutação é uma árvore na qual os vértices internos representam
proposições, as arestas representam os valores lógicos de uma proposição e as
folhas representam os resultados finais e que servem para determinar a validade
de uma fórmula (ou proposição) a partir da estrutura de dados do tipo árvore.
Para testar a validade de uma forma de argumento utilizando uma árvore de
refutação, constrói-se uma lista consistindo em suas premissas e na negação de
sua conclusão.
Depois, desmembramos as fbfs da lista em letras proposicionais ou sua negação.
Se encontrarmos atribuições de verdade e falsidade para as letras proposicionais
1
4
Para compreender melhor, acompanhe o processo do algoritmo para a se-
guinte forma de argumento:
P Q P� ~~∧
que tornem verdadeiras todas as fbfs da lista, então, as premissassão verdadeiras,
enquanto sua conclusão é falsa. Nesse caso, refutamos a forma de argumento, pois
ela é inválida.
Se na busca não surgir atribuição de verdade e falsidade para as letras proposicionais
que tornem verdadeiras todas as fbfs da lista, então, a refutação é falha, ou seja, a
forma de argumento é válida.
Na formalização da Lógica Matemática, a vírgula separa as premissas e o símbolo
⊢ significa “implica”, isto é, indica a conclusão do argumento.
APROFUNDANDO
Passo 1: liste a(s) premissa(s).
P ∧ Q
Passo 2: abaixo da(s) premissa(s), liste a negação da conclusão.
P ∧ Q
~~~P
Passo 3: a desmembração da raiz consiste em escolher uma das fórmulas e subs-
tituir quando possível por sua razão lógica. Neste exemplo, começaremos pela
premissa, mas poderíamos começar pela conclusão. A premissa é verdadeira se,
e somente se, P e Q forem verdadeiras. Então, podemos substituir P ∧ Q por
essas duas letras proposicionais. Mostraremos isso empilhando (uma em cima
da outra) P e Q no final da lista e ticamos a fórmula P ∧ Q para indicar que a
eliminamos. Uma fórmula ticada está eliminada da lista.
Figura 4 – Primeiro Empilhamento e Substituição em uma Árvore / Fonte: Jenske (2015, p. 92).
UNIASSELVI
1
5
TEMA DE APRENDIZAGEM 2
Passo 4: ~~~P é verdadeira se, e somente se, ~P é verdadeira (dupla negação).
Portanto, podemos ticar ~~~P e substituí-la por ~P, conforme a Figura 5.
Descrição da Imagem: a figura apresenta o terceiro passo na construção de árvores de refutação. Substitui a
forma P ∧ Q pelo empilhamento P e Q. Fim da descrição.
Figura 5 – Segundo Empilhamento e Substituição em uma Árvore / Fonte: Jenske (2015, p. 93).
Descrição da Imagem: a figura apresenta o quarto passo na construção de árvores de refutação. Substitui a
forma ~~~P pelo empilhamento ~P. Fim da descrição.
Passo 5: “A árvore terminou de crescer”, pois todas as fórmulas foram desmem-
bradas em uma lista de letras proposicionais ou de suas negações, as quais devem
ser verdadeiras se todos os membros da lista original são verdadeiros.
Um galho para de desmembrar quando encontramos acima dele sua propo-
sição contrária, ou quando não temos mais fórmulas para ticar. Neste exemplo,
entre as letras proposicionais e suas negações, temos ~P e, acima dele, P, as quais
não podem ser ambas verdadeiras. Logo, é impossível que todas as fórmulas desta
última lista sejam verdadeiras. Expressamos isso escrevendo um X no final da
lista, indicando que o galho não crescerá mais, Figura 6.
X
proposição contrário
fechamento do galho
Figura 6 – Fechamento do galho da Ár-
vore / Fonte: Jenske (2015, p. 93).
Descrição da Imagem: a figura
apresenta o quinto passo na cons-
trução de árvores de refutação. O X
representa o fechamento do galho
da árvore. Fim da descrição.
1
1
Assim, a árvore de refutação está completa e nossa busca por uma refutação da
forma de argumento falhou. Portanto, essa forma é válida.
Perceba que, quando negamos a conclusão, estamos refutando o argumento. As-
sim, quando entre as letras proposicionais e suas negações temos apenas verda-
de, isso indica que nossa refutação está correta, ou seja, a negação da conclusão
é verdadeira e, portanto, o argumento é inválido. Agora, se tivermos entre as letras
proposicionais e suas negações verdades e falsidade, então nosso esforço em re-
futar a conclusão falhou e o argumento é válido.
PENSANDO JUNTOS
A seguir, vamos sistematizar a ação que devemos ter em cada um dos conectivos
proposicionais.
CONECTIVOS PROPOSICIONAIS NAS ÁRVORES DE REFUTAÇÃO
Vimos que uma árvore de refutação é uma análise na qual uma lista de enun-
ciados é desmembrada em letras proposicionais ou em suas negações, que
mostram as condições nas quais os membros da lista inicial podem ser verda-
deiros. As condições para que um enunciado possa ser verdadeiro dependem
dos operadores lógicos que ele contém, ou seja, dos conectivos proposicionais.
Cada operador lógico possui uma forma diferente de ser desmembrado e são
essas formas que veremos agora.
Para explicar como se comporta cada um dos dez operadores lógicos (ne-
gação, conjunção, disjunção, condicional, bicondicional, bem como a negação
de cada um deles), inicialmente, precisamos definir o conceito de ramo aberto
e fechado. Um ramo aberto é aquele que não termina com um X. Já os ramos
que terminam com um X são denominados de ramos fechados.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
NEGAÇÃO (~)
Se um ramo aberto contém uma fórmula e sua negação, colocamos um X no final do
ramo.
A ideia é que qualquer ramo que contém uma fórmula e sua negação não é um ramo
em que todas as fórmulas podem ser verdadeiras, que é o objetivo ao se construir
uma árvore de refutação. Desta forma, podemos fechar esse ramo como uma tentativa
falha de refutação.
j
j~
X
NEGAÇÃO NEGADA OU DUPLA NEGAÇÃO (~~)
Se um ramo aberto contém uma fbf não ticada da forma ~~ j , ticamos ~~ j e
escrevemos j no final de cada ramo aberto que contém ~~ j ticada.
~~ j
j
CONJUNÇÃO (⋀, &)
Se um ramo aberto contém uma fbf não ticada da forma j ∧ �Y , ticamos ⊢ ∧ ⊢ e
escrevemos j e Y no final de cada ramo aberto que contém j ∧ �Y ticada.
ϕ ψ
ϕ
ψ
∧
1
8
CONJUNÇÃO NEGADA (~ ∧ , ~&)
Se um ramo aberto contém uma fbf não ticada da forma ~ ( �)j ∧Y , ticamos
~ ( �)j ∧Y e bifurcamos o final de cada ramo aberto que contém ~ ( �)j ∧Y
ticada, onde no final do primeiro ramo escrevemos ~ j e no final do segundo ramo
escrevemos ~ Y .
~ ( �)j ∧Y
~ j ~ Y
DISJUNÇÃO (V)
Se um ramo aberto contém uma fbf não ticada da forma j�� �Y , ticamos
j�� �Y e bifurcamos o final de cada ramo aberto que contém j�� �Y ticada,
onde no final do primeiro ramo escrevemos j e no final do segundo ramo
escrevemos Y .
j∨ �Y
j Y
DISJUNÇÃO NEGADA (~V)
Se um ramo aberto contém uma fbf não ticada da forma ~ j�� �Y , ticamos
~ j�� �Y e escrevemos ~ j e ~ Y no final de cada ramo aberto que contém
~ j�� �Y
.
~
~
~
j
j
�� �Y
Y
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 2
CONDICIONAL (→)
Se um ramo aberto contém uma fbf não ticada da forma j�� �Y , ticamos
j�� �Y e bifurcamos o final de cada ramo aberto que contém j�� �Y ticada,
onde no final do primeiro ramo escrevemos ~ j e no final do segundo ramo escreve-
mos Y .
j�� �Y
~ j Y
CONDICIONAL NEGADA (~ →)
Se um ramo aberto contém uma fbf não ticada da forma ~ j�� �Y , ticamos
~ j�� �Y e escrevemos j e ~ Y no final de cada ramo aberto que contém
~ j�� �Y ticada. ~
~
j
j
�� �Y
Y
BICONDICIONAL (↔)
Se um ramo aberto contém uma fbf não ticada da forma j�� �Y , ticamos
j�� �Y e bifurcamos o final de cada ramo aberto que contém j�� �Y ticada,
onde no final do primeiro ramo escrevemos j e Y e, no final do segundo ramo
escrevemos ~ j e ~ Y .
j�� �Y
j ~ j
Y ~ Y
1
1
BICONDICIONAL NEGADA (~ ↔)
Se um ramo aberto contém uma fbf não ticada da forma ~ j�� �Y , ticamos
~ j�� �Y e bifurcamos o final de cada ramo aberto que contém ~ j�� �Y
ticada, onde no final do primeiro ramo escrevemos j e ~ Y e, no final do segundo
ramo escrevemos ~ j e Y .
~ j�� �Y
j ~ j
~ Y ~ Y
- Um ramo termina se ele se fecha ou se as fbfs não ticadas que ele contém se-
jamo letras proposicionais ou suas negações, tal que nenhuma regra se aplica às
suas fórmulas.
- Assim, uma árvore está completa se todos os seus ramos terminam.
- Quando uma árvore termina, podemos avaliar a validade ou invalidade da forma
de argumento.
- Um argumento é válido quando todos os ramos de uma árvore completa estão
fechados; e a forma de argumento é inválida quando algum ramo de uma árvore
completa estiver aberto.
APROFUNDANDO
Observe o exemplo ( )� .P Q R� � A Figura 7 apresenta três etapas.
Figura 7 – Resolução de ( )�P Q R� � por meio da árvore de refutação / Fonte: Jenske (2015, p. 100).
Descrição da Imagem: a figura apresenta três etapas de resolução, da esquerda para a direita, até o término dos
galhos da árvore. Fim da descrição.UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
Neste caso, não houve fechamento e a forma é inválida.
Para finalizarmos este tópico, colocamos um resumo, no Quadro 14, que repre-
senta os operadores lógicos estudados nos itens anteriores.
OPERADOR LÓGICO FÓRMULA REGRA EXEMPLO
NEGAÇÃO NEGADA OU
DUPLA NEGAÇÃO ~~ j EMPILHA
~~ j
j
CONJUNÇÃO
j �∧Y
ou
j&Y
EMPILHA
j
j
�
�
∧Y
Y
CONJUNÇÃO NEGADA
~ �( )j∧Y
ou
~ &( )j Y
BIFURCA
~ �( )
~ ~
j
j
∧Y
Y
DISJUNÇÃO j �∨Y BIFURCA j �∨Y j Y
DISJUNÇÃO NEGADA ~ ( )j∨ Y EMPILHA
~ ( )
~
~
j
j
j
∨ Y
CONDICIONAL j → Y BIFURCA
j → Y
~ j Y
1
1
CONDICIONAL NEGADA ~ ( )j → Y EMPILHA
~
~
( )j j∨ Y
Y
BICONDICIONAL j ↔ Y EMPILHA
BIFURCA
j ↔ Y j
~ j
Y ~ Y
BICONDICIONAL NEGADO ~ ( )j ↔ Y EMPILHA
BIFURCA
~ ( )j ↔ Y
~ j j
Y ~ Y
Quadro 14 – Resumo dos operadores lógicos / Fonte: Jenske (2015, p. 103-104).
Você pode confirmar o resultado dos exemplos anteriores construindo tabelas-
-verdade para as respectivas formas de argumento.
PENSANDO JUNTOS
Quebrando a Banca
Quebrando a Banca conta a história de Ben, um garoto inteli-
gente que ganha uma bolsa de estudos na aclamada Univer-
sidade de Harvard.
Com uma facilidade imensa para contas e um raciocínio lógico
apurado, Ben é convidado por seu professor Micky para parti-
cipar de um grupo de estudantes brilhantes que vai para Las
Vegas jogar 21.
Aplicando conceitos de estatística e probabilidades, os jovens
e o professor começam a fazer um dinheiro nos cassinos, dan-
do início a uma trama emocionante.
INDICAÇÃO DE FILME
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
NOVOS DESAFIOS
No decorrer deste tema, no primeiro momento, você teve a oportunidade de
aprender sobre a lógica matemática, com destaque em conceitos, simbologias,
classificação dos conectivos e formalização.
No segundo momento, você aprendeu cálculo proposicional, dando ênfase
a tabelas-verdade e árvores de refutação.
Na área de computação, principalmente em linguagens de programação,
como linguagem C e Python, as tabelas-verdade são de suma importância.
As tabelas-verdade fornecem um teste rigoroso e completo para a validade ou
invalidade de formas de um argumento da lógica proposicional. Elas constituem
um algoritmo que sempre dá uma resposta após um número finito de operações.
Um exemplo comum a todas as linguagens de programação, aplicando a teo-
ria deste tema, assimilado na prática de programação e os valores lógicos envol-
vidos em uma expressão lógica, seria (FORBELLONE; EBERSPACHER, 2005):
F ou 20 div (18/3) <> (21/3) div 2
F ou 20 div 6 <> 7 div 2 (nesta divisão temos apenas a parte inteira)
F ou 3 <> 3 (<> significa diferente de)
F ou F
F
Neste contexto, podemos ver uma aplicação real e simples para os iniciantes em
programação.
Acesse e confira a aula referente a este tema. Recursos de mídia disponíveis no
conteúdo digital no ambiente virtual de aprendizagem
EM FOCO
1
4
1. Uma das aplicações das tabelas-verdade é na linguagem de programação, nas expres-
sões lógicas. As operações de negação, de conjunção e disjunção são muito utilizadas. No
exemplo a seguir, foi utilizado o operador de conjunção.
2 < 5 e 15/3 = 5
V e 5 = 5
V = V
V
Nesta aplicação, basta lembrar a tabela-verdade da conjunção:
P Q P ⋀ Q
1 V V V
2 V F F
3 F V F
4 F F F
Desenvolva a expressão lógica a seguir e verifique se é V ou F.
-3 > 0 e 50/5 = 11
2. Uma das aplicações das tabelas-verdade é na linguagem de programação, nas expres-
sões lógicas. As operações de negação, de conjunção e disjunção são muito utilizadas.
No exemplo a seguir, foi utilizado o operador de disjunção inclusiva. Considere div como
“divisão”, como resultado a parte inteira. Também considere <> como sendo “diferente de”.
AUTOATIVIDADE
1
5
Não V ou 15/5 <> 15 – 0/1
Não V ou 3 <> 15 – 0
Não V ou V
F ou V
V
Nesta aplicação, basta lembrar a tabela-verdade da disjunção inclusiva
P Q P V Q
1 V V V
2 V F V
3 F V V
4 F F F
Na linguagem de programação, utilizamos as tabelas-verdade. Desenvolva a expressão
lógica a seguir e verifique se é V ou F.
Não F ou 35/7 <> 15 – 4/2 - 0
3. Duas proposições formam uma condicional quando forem colocadas no seguinte modelo:
Se (proposição 1), então (proposição 2).
Exemplo:
Se um número é primo, então é divisível por ele mesmo e por um
AUTOATIVIDADE
1
1
As proposições interligadas pelo condicional recebem o nome de antecedente e conse-
quente, na forma “se antecedente, então consequente”, ou simbolicamente: antecedente
→ consequente.
Qual tipo de conectivo foi utilizado no exemplo: se um número é ímpar, então não é divisível
por dois?
a) Negação.
b) Disjunção.
c) Conjunção.
d) Condicional.
e) Bicondicional.
4. Qualquer sequência composta por elementos do vocabulário do cálculo proposicional
constitui uma fórmula. No entanto, nem toda fórmula é aceita pelo cálculo proposicional.
Para ser aceita, ela precisa ser uma fórmula bem formada, conhecida como fbf.
Para se obter fbfs é preciso que a sequência formada siga as seguintes regras de formação:
1. Qualquer letra proposicional isolada é uma fbf.
2. Se φ é uma fbf, então ~ φ também é uma fbf.
3. Se φ e δ são fbfs, então (φ ⋀ δ), (φ ⋁ δ), (φ → δ) e (φ ↔ φ) também são fbfs.
Exemplo: (P ⋀ Q) é uma fbf, pois:
Construção Justificativa
P regra 1
Q regra 1
(P ⋀ Q) regra 3
Considerando a fórmula ~ (A ⋁ B) → C, podemos afirmar:
I - ~(A ⋁ B) obedece à primeira e à segunda regra de formação.
II - (A ⋁ B) obedece à primeira e à terceira regra de formação.
III - ~ (A ⋁ B) → C é uma fórmula bem formada, fbf.
AUTOATIVIDADE
1
1
É correto o que se afirma em:
a) I, apenas.
b) III, apenas.
c) I e II, apenas.
d) II e III, apenas.
e) I, II e III.
5. A tabela-verdade é uma ferramenta de natureza matemática muito utilizada no campo
do raciocínio lógico na computação. Seu objetivo é verificar a validade lógica de uma
proposição composta.
Um resumo dos conectivos principais em duas proposições é apresentado na tabela a
seguir:
P Q P ⋀ Q P V Q P ⋁ Q P → Q P ↔ Q
1 V V V V F V V
2 V F F V V F F
3 F V F V V V F
4 F F F F F V V
Neste exemplo, (P ⋀ (Q ⋁ R)), podemos ter a seguinte construção:
AUTOATIVIDADE
1
8
P Q R
QV⊢R (P⋀(Q⋁R))
1 V V V V V
2 V V F V V
3 V F V V V
4 V F F F F
5 F V V V F
6 F V F V F
7 F F V V F
8 F F F F F
Na expressão lógica ((P ⋀ Q) ⋁ (P ⋀ R)), podemos afirmar:
a) P⋀Q será sempre V.
b) P ⋀ Q será sempre F.
c) P ⊢⋀ R terá duas opções V.
d) ((P⋀Q) V (P⋀R)) será sempre F.
e) ((P ⊢⋀ Q) V ⊢ (P ⋀ R)) terá seis opções F.
AUTOATIVIDADE
1
9
REFERÊNCIAS
FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação: a construção de algorit-
mos e estruturas de dados São Paulo: Prentice Hall, 2005.
JENSKE, G. Lógica Matemática Indaial: Uniasselvi, 2015.
MENEZES, P. B. Matemática Discreta para Computação e Informática 2001. Disponível em:
ftp://ftp.inf.ufrgs.br/pub/blauth/Discretas/Mat_Discreta2.pdf. Acesso em: 8 jun. 2023.
8
1
1. Desenvolvendo a expressão lógica, temos:
-3 > 0 e 50/5 = 11
F e F
F
P Q P ⋀ Q
1 V V V
2 V F F
3 F V F
4 F F F
2. Desenvolvendo a expressão lógica, temos:
Não F ou 35/7 <>15 – 4/2 - 0
Não F ou 5 <> 13
V ou V
P Q P ⋀ Q
1 V V V
2 V F F
3 F V F
4 F F F
V
GABARITO
8
1
3. Opção D. Por definição, o conectivo condicional permite que duas proposições formem o
modelo: Se (proposição 1), então (proposição 2).
4. Opção E.
Considerando ~ (A ⋁ B) → C,
Temos
A, B e C, obedecem a primeira regra;
~ (AVB), obedece a segunda regra;
(AVB), obedece a terceira regra; e
~ (A ⋁ B) → C, obedece a terceira regra.
I ~ (A VB) obedece a primeira e a segunda regras de formação; (Verdadeiro)
II (AVB) obedece a primeira e a terceira regras de formação; e (Verdadeiro)
III ~ (A ⋁ B) → C é uma fórmula bem formada, fbf. (Verdadeiro)
5. Opção C. A tabela-verdade para a expressão lógica ((P ⋀ Q) ⋁ (P ⋀ R)) será:
P Q R
(P⋀Q) (P⋀R) ((P⋀Q)⋁(P⋀R))
1 V V V V V V
2 V V F V F V
3 V F V F V V
4 V F F FF F
5 F V V F F F
6 F V F F F F
7 F F V F F F
8 F F F F F F
Portanto, P ⋀ R terá duas opções V.
GABARITO
8
1
MINHAS ANOTAÇÕES
8
1
MINHAS METAS
LÓGICA DE PREDICADOS
Compreender os conceitos fundamentais da lógica de predicados.
Identificar as aplicações da lógica de predicados na matemática e na ciência da
computação.
Compreender a teoria dos conjuntos, principalmente as operações com conjuntos.
Identificar as verdades lógicas, ressaltando a questão da simbolização da linguagem e
das técnicas dedutivas.
Analisar a legitimidade dos argumentos através das regras de inferências.
Identificar os teoremas e equivalências.
T E M A D E A P R E N D I Z A G E M 3
8
4
INICIE SUA JORNADA
Existem tipos de argumentos que não podem ser adequadamente formalizados
na lógica proposicional.
Por exemplo:
Computador é uma máquina eletrônica.
Toda máquina eletrônica é eficaz.
Logo, o computador é eficaz.
Veja mais um exemplo:
Todos os gatos não são brancos.
Alguns felinos são gatos.
Logo, alguns os felinos não são brancos.
De forma geral, esses argumentos são válidos. No entanto, na lógica proposi-
cional, a formalização desses argumentos resulta em r e s acarreta k e não há
como mostrar que a conclusão k é uma consequência lógica das premissas r e s.
Isso acontece porque a validade desses argumentos depende do significado das
palavras todo(a) e alguns, que não podem ser expressos na lógica proposicional.
Para resolver argumentos desse tipo, precisamos da lógica de predicados.
Desta forma, a lógica proposicional é bastante limitada. A razão desta limi-
tação é devida, primeiro, a determinar como válidos ou inválidos os argumen-
tos cuja validade depende apenas dos conectores proposicionais. Segundo, os
conectores não são o único fator de que depende a validade destes argumentos.
A lógica de predicados é mais ampla. Ela permite determinar as condições de
validade de argumentos, como os silogismos, que além dos conectores, dependem
de expressões como todos e alguns, geralmente designadas por quantificadores.
A lógica de predicados é uma ampliação da lógica proposicional e inclui a
lógica proposicional como um dos seus elementos.
Na área da computação, a lógica proposicional modela sentenças, é de fácil
compreensão e é o primeiro aprendizado na área de representação do conheci-
mento e raciocínio, não consegue modelar de forma simples objetos e suas pro-
priedades, não consegue modelar quantidades e não consegue enumerar objetos
de forma simples (SILVA, 2017).
Também na área da computação, a lógica de predicados modela objetos através
de variáveis, modela relações entre objetos, modela funções, permite composição
UNIASSELVI
8
5
TEMA DE APRENDIZAGEM 3
de atributos, permite derivação de relacionamentos de forma mais simples e con-
segue tratar problemas de quantificação através de quantificadores (SILVA, 2017).
Neste podcast, você aprenderá sobre a lógica de predicados, dando destaque à
teoria de conjuntos e ao cálculo de predicados. Recursos de mídia disponíveis no
conteúdo digital do ambiente virtual de aprendizagem
PLAY NO CONHECIMENTO
Na próxima fase, será desenvolvido o tópico teoria dos conjuntos, sendo as ope-
rações com conjuntos o item relevante na área de computação.
DESENVOLVA SEU POTENCIAL
TEORIA DOS CONJUNTOS
Teoria dos conjuntos é o ramo da matemática dedicada ao estudo da associação
entre objetos com uma mesma propriedade. Sua origem pode ser encontrada nos
trabalhos do matemático russo Georg Cantor (1845-1918).
A teoria dos conjuntos também ficou conhecida como teoria ingênua ou
teoria intuitiva, por causa da descoberta de vários paradoxos associados à ideia
central da própria teoria, influenciando de modo permanente as ciências da ma-
temática e da lógica.
VAMOS RECORDAR?
Para que você tenha uma visão da importância da lógica matemática e a semântica
auxiliando na aprendizagem, retomando conteúdos base, focando principalmente
na lógica matemática, sugiro a leitura do artigo do professor Raul Enrique Cuore.
Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
8
1
Neste tema, iremos rever alguns conceitos básicos da teoria dos conjuntos
e estudaremos de que forma a teoria dos conjuntos e a lógica estão associadas.
Matemática Aplicada a informática
Este livro parte da conhecida demanda dos professores de in-
tegrarem bases científicas e tecnológicas para o desenvolvi-
mento de competências e habilidades previstas no currículo do
ensino técnico.
Com linguagem, conteúdo e projeto gráfico totalmente adapta-
dos às necessidades de seu público-alvo, Matemática Aplicada
à Informática aborda, de forma didática e contextualizada, con-
teúdos como lógica matemática, teoria dos conjuntos, relações,
funções, matrizes, frações, análise combinatória e probabilidade.
INDICAÇÃO DE LIVRO
UNIASSELVI
8
1
TEMA DE APRENDIZAGEM 3
CONJUNTO E ELEMENTO
Um conjunto é uma coleção de elementos distintos que o identificam. Para in-
dicar se um elemento faz parte ou não de um determinado conjunto, usamos os
símbolos ∈ (pertence) e ∉ (não pertence). Veja os exemplos a seguir:
■ Seja A = {1, 3, 5, 7, 9} o conjunto dos números naturais ímpares menores
que 10. O número 9 é um elemento do conjunto A. Indica-se por 9 ∈ A.
Lê-se: nove pertence ao conjunto A.
■ Seja C = {3, {4}, {1, 2}, 5, 7} um conjunto formado por cinco elementos.
Indicamos neste exemplo 3 ∈ C e {3} ∉ C, pois 3 é elemento de C e {3}
não é elemento de C. Assim, de modo análogo, temos: 4 ∉ C e {4} ∈ C.
REPRESENTAÇÃO DOS CONJUNTOS
Um conjunto pode ser representado de várias maneiras. Considerando o conjun-
to D dos números naturais menores que seis, podemos representá-lo:
■ Explicitando ou enumerando os seus elementos.
■ Por exemplo: D = {0, 1, 2, 3, 4, 5}
■ Usando a notação de conjunto, propriedade característica de todos os
seus elementos.
■ Por exemplo: D = {x / x é natural menor que 6}
■ � /{ }D � � � � x x N x 6
■ Usando a linguagem coloquial.
■ Por exemplo: D é o conjunto dos números naturais menores que seis.
■ Diagrama do matemático John Venn.
A utilização do Diagrama de Venn forma um teste rápido e eficaz para validar as
formas de silogismos categóricos.
O Diagrama de Venn é um método que consiste na representação das relações
entre conjuntos numéricos por meio de círculos.
Por exemplo: representar no Diagrama de Venn o conjunto Z = {0, 2, 4, 6, 8, 12}.
8
8
No exemplo seguinte, veja como fica a representação no Diagrama de Venn dos
conjuntos A = {1, 2, 3, 4, 5} e B = {3, 4, 5, 6, 7}, onde existe uma intersecção entre
os conjuntos A e B (a intersecção é a área pintada).
Z
0 2
6
4
812
Figura 1 – Diagrama de Venn / Fonte: Jenske (2015, p. 108).
Descrição da Imagem: a figura apresenta um conjunto contendo seis elementos: 0, 2, 4, 6, 8 e 12. Neste caso,
temos um conjunto finito. Fim da descrição.
A B
1
2
3
4
5
6
7
Figura 2 – Intersecção de Conjuntos / Fonte: Jenske (2015, p. 109).
Descrição da Imagem: a figura apresenta o conjunto A, contendo cinco elementos: 1, 2, 3, 4 e 5. Também, apre-
senta o conjunto B, contendo cinco elementos: 3, 4, 5, 6 e 7. A intersecção representa a parte pintada, ou seja,
elementos 3, 4 e 5, que estão em ambos os conjuntos. Fim da descrição.
UNIASSELVI
8
9
TEMA DE APRENDIZAGEM 3
TIPOLOGIA
Um conjunto pode ser definido em:
■ Finito: quando possui um número finito de elementos.
Por exemplo: A = {dias da semana}
A = {segunda, terça, quarta, quinta, sexta, sábado, domingo}
■ Infinito: quando possui um número infinito de elementos.
Por exemplo: B = {números naturais maiores que onze}
B = {12, 13, 14, ...}
■ Unitário: quando possui apenas um elemento.
Por exemplo: C = {satélite natural da Terra}
C = {Lua}
■ Vazio: quando não possui elemento algum.
Por exemplo: D = {mês do ano que possui 32 dias}
D = { } ou D = Ø
Os diagramas de Venn foram criados pelo matemático inglês John Venn.
PENSANDO JUNTOS
Para iniciar o entendimentosobre conjuntos em programação, indico a leitura dos
capítulos 2, 7 e 8 (Fundamentos, vetores e registros) do fragmento da obra Algorit-
mos e Programação, Teoria e Prática, de Marco Medina e Cristina Fertig, disponível
no Google Acadêmico. Recursos de mídia disponíveis no conteúdo digital do
ambiente virtual de aprendizagem.
EU INDICO
9
1
RELAÇÕES DE INCLUSÃO
Dado o conjunto Universo U = (conjunto dos números naturais) e os con-
juntos A = {1, 2, 3} e B = {1, 2, 3, 4, 5}, podemos observar que todo elemento de
A é também elemento de B. Pode-se, então, dizer que A é um subconjunto de B.
Perceba que os dois conjuntos, tanto A quanto B, são subconjuntos de ℕ.
Esta relação de inclusão é indicada por: A ⊂ B (lê-se: A está contido em B) ou B ⊃
A (lê-se: B contém A).
Numa linguagem simbólica, podemos definir a relação de inclusão da seguinte
maneira: A B x x A x B� �� � � � ( ) que se lê: A está contido em B, se e
somente se, qualquer que seja x, se x pertence a A, então, x pertence a B.
Simbolicamente, representamos: A B x x A x B� � � � � �( ) . Lê-se: A não
está contido em B, se, e somente se, existe pelo menos um elemento x que per-
tence a A e não pertence a B.
APROFUNDANDO
UNIASSELVI
9
1
TEMA DE APRENDIZAGEM 3
Visualize o seguinte Diagrama de Venn, na Figura 3:
U
U
B
B
A
A
Figura 3 – Subconjuntos do Conjunto U / Fonte: Jenske (2015, p. 110).
Descrição da Imagem: a figura apresenta o conjunto A como subconjunto de B e de U. Também, o conjunto B
como subconjunto de U, valendo a representação A B C⊂ ⊂ . Fim da descrição.
Relação de inclusão e propriedades:
■ Todo conjunto é subconjunto de si mesmo.
� �A A A ( )
■ Todo conjunto é subconjunto do conjunto universo.
� �A A U ( )
■ O conjunto vazio é subconjunto de qualquer conjunto.
� � �A A ( )
Conjunto das partes de um conjunto P(X).
Por exemplo: Dado um conjunto A = {1, 2, 3}, o conjunto das partes de A é:
P(A) = { ∅ , {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}.
Cada parte de A é obrigatoriamente subconjunto de A; note que ∅ sempre é
parte de um conjunto. A quantidade de subconjuntos pode ser obtida por 2n ,
9
1
onde n representa a quantidade de elementos de um conjunto. No exemplo an-
terior temos: 23 = 8 subconjuntos.
VOCÊ SABE RESPONDER?
Você sabe responder quantos elementos temos no conjunto das partes P(A), para
quatro elementos de um conjunto A? Quais são estes elementos? Represente na
forma P(A) = { ∅ , {1}, {2}, ....
IGUALDADE DOS CONJUNTOS
Dois conjuntos A e B são iguais quando todos os elementos de A são os mesmos
elementos de B. A representação matemática será da seguinte forma:
A B A B B A� � � �e
OPERAÇÕES COM CONJUNTOS
As operações com conjuntos são muito comuns no estudo da Lógica Matemática.
Passaremos a descrever a seguir como essas operações podem ser realizadas.
UNIASSELVI
9
1
TEMA DE APRENDIZAGEM 3
UNIÃO
Dado o conjunto universo U de todos os acadêmicos do curso de Matemática
da IES e os subconjuntos de U:
■ A, conjunto dos acadêmicos de lógica.
■ B, conjunto dos acadêmicos de cálculo.
O conjunto A ∪ B (lê-se: A união com B) é formado pelos acadêmicos que estu-
dam só lógica, pelos acadêmicos que estudam lógica e cálculo e pelos acadêmicos
que estudam só cálculo.
Da união de conjuntos, podemos escrever as propriedades:
■ A ∪ B = B ∪ A propriedade comutativa.
■ (A ∪ B) ∪ C = A ∪ (B ∪ C) propriedade associativa.
■ A ∪ A = A propriedade idempotente.
■ A ∪ ∅ = A propriedade do conjunto vazio.
■ A ∪ U = U propriedade do conjunto universo.
A representação do Diagrama de Venn fica da seguinte forma:
U
A B
A B
Figura 4 – União de dois Conjuntos A e B do Conjunto U / Fonte: Jenske (2015, p. 112).
Descrição da Imagem: a figura apresenta o conjunto U com os subconjuntos A e B. Também apresenta a união
dos conjuntos A e B, na parte pintada de verde, valendo a representação A U B. Fim da descrição.
9
4
INTERSECÇÃO
A ∩ B (lê-se: A intersecção com B, ou A inter B) é formado pelos acadêmicos
que estudam lógica, mas também estudam cálculo.
Da intersecção de conjuntos, podemos escrever as propriedades:
■ A ∩ B = B ∩ A propriedade comutativa.
■ (A ∩ B) ∩ C = A ∩ (B ∩ C) propriedade associativa.
■ A ∩ A = A propriedade idempotente.
■ A ∩ ∅ = ∅ propriedade do conjunto vazio.
■ A ∩ U = A propriedade do conjunto universo.
Se tivermos A ∩⊢ B =∅ ⊢, dizemos que A e B são conjuntos disjuntos, isto é, não
possuem nenhum elemento comum.
PENSANDO JUNTOS
A representação do Diagrama de Venn fica da seguinte forma:
U
A B
A B
Figura 5 – Intersecção de dois Conjuntos A e B do Conjunto U / Fonte: Jenske (2015, p. 112).
Descrição da Imagem: a figura apresenta o conjunto U com os subconjuntos A e B. Também apresenta a inter-
secção dos conjuntos A e B, na parte pintada de verde, valendo a representação A∩B. Fim da descrição.
UNIASSELVI
9
5
TEMA DE APRENDIZAGEM 3
PRINCÍPIO DA INCLUSÃO E DA EXCLUSÃO PARA DOIS OU
TRÊS CONJUNTOS
■ n n n n( )A B A B A B-
■ ( )n n n n n n n nA B C A B C A B A C B C A B C-
A, B e C são conjuntos e n(X) indica o número de elementos do conjunto X.
Ainda para as operações com conjuntos, podemos realizar subtração dos
conjuntos e realizar associações dos conceitos apresentados anteriormente. Ini-
cialmente, faremos uma explicação de como realizar a subtração de dois con-
juntos e, depois, daremos exemplos de como poderemos calcular associações
desses conceitos.
■ A – B (lê-se: A menos B): É formado pelos acadêmicos que só estudam
lógica.
A representação do Diagrama de Venn fica da seguinte forma:
Simbolicamente, pode-se representar na forma matemática para a união:
A B A B{ ) x x x
Simbolicamente, pode-se representar na forma matemática para a intersecção:
A B A B� / �{ )� � � � � x x x
APROFUNDANDO
U
B
A B
A
Figura 6 – Diferença dos conjuntos A menos B
do Conjunto U / Fonte: Jenske (2015, p. 113).
Descrição da Imagem: a figura apresenta
o conjunto U com os subconjuntos A e B.
Também apresenta a diferença de A me-
nos B, na parte pintada de verde, valendo
a representação A - B. Fim da descrição.
9
1
■ B – A (lê-se: B menos A): É formado pelos acadêmicos que só estudam
cálculo.
A representação do Diagrama de Venn fica da seguinte forma:
U
A B
A B
Figura 7 – Diferença dos conjuntos B
menos A do Conjunto U / Fonte: Jenske
(2015, p. 114).
Descrição da Imagem: a figura
apresenta o conjunto U com os sub-
conjuntos A e B. Também apresenta
a diferença de B menos A, na parte
pintada de verde, valendo a repre-
sentação B - A. Fim da descrição.
O conjunto de todos os acadêmicos de U que não são alunos de lógica é deno-
minado de Complementar de A ou complemento de A em relação ao U, ou
ainda, o que falta em A para que fique igual ao U.
Podemos representar o complementar da seguinte forma:
C AU ou A ou A ' ou como U – A.
A representação do Diagrama de Venn fica da seguinte forma:
U
CUA
A
Figura 8 – Complementar do Conjunto A do Conjunto U / Fonte: Jenske (2015, p. 114).
Descrição da Imagem: a figura apresenta o conjunto U com o subconjunto A. Também apresenta o complementar
de A, na parte pintada de verde, valendo a representação U - A. Fim da descrição.
UNIASSELVI
9
1
TEMA DE APRENDIZAGEM 3
A representação do Diagrama de Venn fica da seguinte forma:
Simbolicamente, pode-se representar na forma matemática para o complementar
de A:
C A U A U AU { }x x x-
APROFUNDANDO
É importante que você não faça confusão entre A – B e B – A, pois A – B ≠B – A.
Há uma importante representação que une os dois resultados mostrados. Diferença
simétrica entre dois conjuntos A e B é o conjunto formado pelos elementos de A
que não pertencem a B ou (exclusivo) pelos elementos de B que não pertencem a A.
Representação matemática:
A BD (Lê-se: só de A ou só de B; ou A ou B.)
ZOOM NO CONHECIMENTO
U
A∆B
A B
Figura 9 – Diferença Simétrica dos conjuntos A e B, usando a união e a intersecção no Conjunto U
Fonte: Jenske (2015, p. 116).
Descrição da Imagem:a figura apresenta o conjunto U com os subconjuntos A e B. Também apresenta diferença
simétrica dos conjuntos A e B, usando a união e a intersecção, na parte pintada de verde, valendo a representa-
ção A BD . Fim da descrição.
9
8
O DIAGRAMA DE VENN NA LÓGICA MATEMÁTICA E NA
COMPUTAÇÃO
A seguir, demonstraremos alguns exemplos utilizando o Diagrama de Venn na
Lógica Matemática e na computação.
Por exemplo: faça o teste da validade da proposição categórica a seguir uti-
lizando o Diagrama de Venn.
Todo S é M.
Todo M é P.
Logo, todo S é P.
Na lógica matemática, teremos:
Para a primeira premissa, deve-se pintar toda a parte de M que não esteja contida
em P.
M
S P
Figura 10 – Primeira parte da Resolução Todo S é M. Todo M é P, logo, todo S é P / Fonte: Jenske (2015, p. 117).
Descrição da Imagem: a figura apresenta três conjuntos relacionados, S, P e M. A parte pintada representa a
primeira parte da resolução de Todo S é M. Todo M é P. Logo, todo S é P, ou seja, Todo S é M. Fim da descrição
UNIASSELVI
9
9
TEMA DE APRENDIZAGEM 3
Para a segunda premissa, pintamos toda a parte de S não contida em M. A Figura
11 apresenta a conclusão. Neste contexto, a proposição é válida.
M
S P
Figura 11 – Conclusão da Resolução Todo S é M. Todo M é P. Logo, todo S é P / Fonte: Jenske (2015, p. 118).
Descrição da Imagem: a figura apresenta três conjuntos relacionados, S, P e M. A parte pintada representa a
conclusão de Todo S é M. Todo M é P. Logo, todo S é P, ou seja, a proposição é válida. Fim da descrição
Na computação, utilizando a linguagem de programação de alto nível, o Python,
teremos o algoritmo:
‘A intersecção entre os conjuntos é feita por &’
‘ A união entre os conjuntos é feita por |’
S=4
M=3
P=1
Para entender a aplicação da lógica matemática na computação, sugiro que você
faça o download do Python em seu computador.
Você também pode baixar no seu celular, no Play Store, procurando por Pydroid
3 – IDE for Python 3. Recursos de mídia disponíveis no conteúdo digital do am-
biente virtual de aprendizagem
EU INDICO
1
1
1
print(‘Considere os conjuntos onde S possui 4 elementos, M possui 3 ele-
mentos e P possui 1 elemento.’)
I =(S&M&P)
print(‘A intersecção entre S, M e P é:’)
print(I)
J =(M&P)
print(‘A intersecção entre M e P é:’)
print(J)
K =(S&P)
print(‘A intersecção entre S e P é:’)
print(K)
X =(S&M)
print(‘A intersecção entre S e M é:’)
print(X)
U1 = M - I - J
print(‘Todo S é M’)
print(U1)
U2 = P - I - K
print(‘Todo M é P’)
print(U2)
T = S - I + K - X
print(‘Todo S é P’)
print(T)
Resultado após executar o programa:
Considere os conjuntos onde S possui 4 elementos, M possui 3 elementos e
P possui 1 elemento.
A intersecção entre S, M e P é:
0
A intersecção entre M e P é:
1
A intersecção entre S e P é:
0
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 3
A intersecção entre S e M é:
0
Todo S é M
2
Todo M é P
1
Todo S é P
4
Este algoritmo pode ser testado em outras linguagens de programação, como o
C e o Java, bastando apenas fazer adaptações.
Python é uma linguagem de programação de alto nível. As principais caracterís-
ticas do Python são: multiplataforma, apresenta versões para diversos sistemas
operacionais; multiparadigma, é possível programar com base em diferentes esti-
los de programação; e é uma linguagem interpretada, não gera arquivos executá-
veis, como acontece na linguagem C.
PENSANDO JUNTOS
Na próxima fase, será desenvolvido o tópico cálculo de predicados, conside-
rando principalmente variáveis, quantificadores e predicados, itens relevantes
na área de computação.
CÁLCULO DE PREDICADOS
Você já deve ter observado que a forma de estruturar o pensamento matemático é
diferente do que a feita em outras áreas, ou mesmo no dia a dia. A maneira como
escrevemos as afirmações matemáticas (lemas, teoremas, preposições, corolários)
sempre parte de algumas hipóteses e tudo o que está dito depois delas precisa ser
provado. Esta estrutura vem da lógica matemática.
Nos tópicos anteriores, você teve a oportunidade de conhecer essa linguagem,
fazendo o estudo do conceito de argumento, validade e verdade, bem como das
1
1
1
operações lógicas e o cálculo proposicional. Viu que o cálculo de proposições
ou cálculo proposicional é a área que trata da análise de proposições compostas,
isto é, proposições simples ligadas por conectivos: ~, &, v, → , ↔ .
No entanto, você deve ter percebido que este tipo de análise não é suficiente
para expressar todas as sentenças importantes da aritmética elementar. Neste con-
texto, este tópico é uma continuidade dos estudos até aqui realizados. O cálculo de
predicados visa desenvolver uma linguagem formal que possa expressar qualquer
conjunto de fatos sistemáticos, ou seja, sanar insuficiências da lógica proposicional.
Evidenciada a limitação dos recursos do cálculo proposicional, uma nova
linguagem é introduzida para a análise da legitimidade de argumentos. Essa nova
linguagem consiste na combinação entre conceitos de quantificadores com os da
lógica proposicional, o que resulta em um sistema lógico mais amplo.
Veremos, a seguir, de que forma substantivos, adjetivos e predicados (grama-
ticais) se atrelam para formar sentenças. As palavras todo e alguns desempe-
nham papel fundamental, por indicarem quantidade, razão pela qual o cálculo
de predicados também é conhecido como cálculo quantificável.
Para compreender essa nova linguagem, faremos primeiramente um resumo
sobre as regras de inferência e de equivalência do cálculo proposicional.
Pense em Phyton
Se você quer aprender como programar, usar Python é uma
ótima forma de começar. Este guia prático apresenta a lin-
guagem passo a passo, começando com conceitos de pro-
gramação básicos antes de chegar a funções, recursividade,
estruturas de dados e design orientado a objeto.
Comece com o básico, incluindo sintaxe e semântica da lin-
guagem. Tenha uma definição clara de cada conceito de pro-
gramação. Aprenda sobre valores, variáveis, instruções, fun-
ções e estruturas de dados em uma progressão lógica.
O livro irá facilitar a entendimento da linguagem de alto nível
Python.
INDICAÇÃO DE LIVRO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 3
RESUMOS DAS REGRAS DE INFERÊNCIA E DE EQUIVALÊNCIA
DO CÁLCULO PROPOSICIONAL
Regras de inferência são regras de transformação sintáticas que podem ser
usadas para inferir uma conclusão a partir de uma premissa, para criar um
argumento, ou seja, elas permitem gerar todas as formas de argumentos válidas
no Cálculo Proposicional
Existem dez regras básicas de inferência: uma de introdução e uma de elimina-
ção para cada um dos cinco operadores lógicos. Em uma regra de eliminação do
operador, o mesmo ocorre com o operador principal em uma das premissas, mas
não na conclusão. No entanto, em uma regra de introdução, sucede o contrário.
Raciocínio hipotético é um raciocínio baseado em uma hipótese; uma
suposição feita a fim de mostrar que uma conclusão particular segue daquela
suposição. De modo diferente de outras suposições de uma prova, as hipóteses
não são declaradas como verdadeiras. Elas são artifícios lógicos, as quais aco-
lhemos temporariamente, como um tipo especial de estratégia de prova.
A seguir, apresentamos dois os Quadros 1 e 2, contendo as regras básicas
de inferência (não hipotéticas e hipotéticas), que continuarão fazendo parte de
nossos estudos.
Na formalização da Lógica Matemática, a vírgula separa as premissas e o símbolo
⊢ significa implica, isto é, indica a conclusão do argumento.
PENSANDO JUNTOS
1
1
4
INTRODUÇÃO DA REGRA ELIMINAÇÃO DA REGRA
Modus Ponens (MP)
j j→ Y Y,
Eliminação da Negação (~E)
~~ j j
Introdução da Conjunção (&I)
j j, &Y Y
ou
j j, &Y Y
Eliminação da Conjunção (&E)
j j&Y
ou
j&Y Y
Introdução da Disjunção (⊢V)
j j ∨ Y
ou
j j Y ∨
Eliminação da Disjunção (⊢V)
ϕ ϕ χ χ χ� � �Y Y, � ,
Introdução do Bicondicional (↔)
j j j� � �Y Y Y,
Eliminação do Bicondicional (↔)
j j� �Y Y
ou
j j� �Y Y
Quadro 1 – Regras de InferênciasNão Hipotéticas / Fonte: Jenske (2015, p. 132).
A seguir, apresentamos exemplos da primeira linha da Quadro 1. Os demais
modelos seguem a mesma formalística.
■ Laura é estudiosa.
Se Laura é estudiosa, então ela tira boas notas.
Laura tira boas notas.
A: Laura é estudiosa.
B: Laura tira boas notas.
Formalização: A A B B, → .
Prova do argumento:
Linha Proposição Justificativa
1 A P (premissa)
2 A B → P (premissa)
3 B 1, 2 MP (modus ponens)
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 3
■ Não é verdade que a Grace não sabe correr.
Portanto, ela sabe correr.
C: Grace sabe correr.
Formalização: ~~ C C .
Prova do argumento:
Linha Proposição Justificativa
1 ~~C P
2 C ~E
No caso do bicondicional, os enunciados da forma j ↔ Y são equivalentes aos
enunciados da forma φ ϕ� �� � � �Y Y & . Em vista dessa equivalência, as re-
gras de introdução e eliminação para o bicondicional funcionam como &I e &E.
Introdução do Condicional ( → I )
Dada uma derivação de uma fórmula bem formada (fbf) Y a partir de uma hipótese
j , podemos descartar a hipótese e inferir j → Y .
Redução ao Absurdo (RAA)
Dada a derivação de uma contradição a partir de uma hipótese j , podemos descartar
a hipótese e inferir ~ j .
Quadro 2 – Regras de Inferências Hipotéticas / Fonte: Jenske (2015, p. 133).
O segundo modelo segue a mesma formalística.
■ Vamos supor que você deseja convencer um atleta de não continuar cor-
rendo (em treino). Para isso, você lança o seguinte argumento:
Seu tornozelo está inchado (I).
Se o seu tornozelo está inchado e você continuar andando de bicicleta (C),
então seu tornozelo não irá sarar (S).
Se ele não sarar até domingo, então você não estará apto à prova (~P). Portan-
do, se você continuar andando de bicicleta, então não estará apto para a prova.
Se o atleta responde: Prove isso!
1
1
1
Você poderia argumentar discursivamente, da seguinte forma:
Faça de conta que você continua andando de bicicleta. Com seu tornozelo
inchado e você andando de bicicleta, o seu tornozelo não irá sarar até domingo
e, por conseguinte, você não estará apto. Portanto, se você insiste em continuar
andando de bicicleta, você não estará apto no domingo para participar da prova.
Quando você diz ao atleta “faça de conta que você continua andando de
bicicleta”, está sendo lançada uma hipótese. Formalizando o argumento temos:
I I C S S A C A, & ~ ,~ ~ ~ � � � � �
Veja que a conclusão é uma proposição condicional, pois não se encontra em
parte alguma dentro das premissas. Neste caso, devemos utilizar a Prova do Con-
dicional (PC). Vejamos a prova do argumento:
Linha Proposição Justificativa
1 I P
2 (I & C) → ~S P
3 ~S → ~A P
4 C H para PC (hipótese para prova do condicional)
5 I & C 1, 4 & I
6 ~S 2, 5 MP
7 ~A 3, 6 MP
8 C → ~A 4 – 7 PC (prova do condicional)
Note que a abertura da hipótese deve ocorrer com o antecedente da condicional
e o fechamento deve ocorrer quando obtemos seu consequente.
PENSANDO JUNTOS
Das regras básicas de inferência, derivam outras cinco regras que nos auxiliam a
simplificar as provas. O Quadro 3 a seguir apresenta um resumo das regras derivadas.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 3
NOME REGRA
Silogismo Hipotético (SH) ϕ χ ϕ χ→ → →Y Y,
Modus Tollens (MT) j j→ Y Y, ~ ~
Contradição (CONTRAD) j j, ~ Y
Repetição (REP) j j
Silogismo Disjuntivo (SD) j j∨ Y Y, ~
Dilema Construtivo (DC) ϕ ϕ χ θ χ θ� � �Y Y, , � V
Quadro 3 – Regras Derivadas / Fonte: Jenske (2015, p. 133).
Faremos uso dos teoremas de equivalência do cálculo proposicional, que tam-
bém podem ser usados em provas. Desta forma, é fundamental tê-los sempre em
mãos. Veja a seguir o quadro com as equivalências mais importantes.
NOME EQUIVALÊNCIA
Tautologia (TAUT)
⊢ V ⊢ ⇔ φ
φ & φ ⇔ φ
Comutativa (COM)
⊢V Ψ ⇔ Ψ V φ
φ & Ψ ⇔ Ψ & φ
Associativa (ASSOC)
φ V (Ψ V χ) ⇔ (φV Ψ) V χ
φ & (Ψ & χ) ⇔ (φ & Ψ) & χ
1
1
8
Distributiva (DIST)
φ & (Ψ V χ) ⇔ (φ & Ψ) V (φ & χ)
φV (Ψ & χ) ⇔ (φ V Ψ) & (φ V χ)
Lei de Morgam (DM)
~(φ & Ψ) ⇔ ~φV ∼Ψ
~(φ V Ψ) ⇔ ~φ V ~Ψ
Implic. Material (IM)
φ → Ψ ⇔ ~φ V Ψ
~(φ → Ψ) ⇔ φ & ∼Ψ
Dupla Negação (DN) φ ⇔ ~~φ
Transposição (TRAN) φ → Ψ ⇔ ∼Ψ→ ~φ
Exportação (EXP) (φ & Ψ) → χ ⇔ φ → (Ψ→ χ)
Ambivalência (AMB)
φ ↔ Ψ ⇔ ~φ ↔ ∼Ψ
φ ↔ Ψ ⇔ (φ & Ψ) V (~φ & ∼Ψ)
Quadro 4 – Equivalências / Fonte: Jenske (2015, p. 132).
VARIÁVEIS, QUANTIFICADORES E PREDICADOS
Quando combinamos os conceitos de quantificadores com os da lógica proposi-
cional, obtemos um sistema mais amplo, capaz de expressar qualquer conjunto
de fatos sistemáticos, conhecido como o cálculo de predicados.
Considere, por exemplo, a sentença:
“Todo homem é mortal”
Podemos enunciá-la como:
Todo H é M
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 3
Por sua vez, pode ser expresso com o uso da letra x para denotar uma variá-
vel que tem a função de representar objetos individuais e assim expressamos o
enunciado por:
Qualquer que seja x, se x é H, então x é M
Para representar a expressão qualquer que seja, utilizamos o símbolo ∀, que
também é conhecido como para todo, e é um quantificador universal. Logo,
em vez de escrevermos x é H, escrevemos Hx e x é M como Mx. Usando o co-
nectivo → para representar o condicional, o enunciado se torna ∀x(Hx → Mx).
Na computação, utilizando a linguagem de programação de alto nível, o Py-
thon, teremos o algoritmo, apenas como impressão na tela:
1
1
1
‘Exemplo na programação Python’
print(‘Todo homem é mortal’)
print(‘∀x = qualquer que seja x’)
print(‘Hx = x é homem’)
print(‘Mx = x é mortal’)
print(‘Qualquer que seja x, se x é H, então x é M’)
print(‘∀x(Hx → Mx)’)
Resultado após executar o programa:
Todo homem é mortal
∀x = qualquer que seja x
Hx = x é homem
Mx = x é mortal
Qualquer que seja x, se x é H, então x é M
∀x(Hx → Mx)
Este algoritmo pode ser testado em outras linguagens de programação, como o
C e o Java, bastando apenas fazer adaptações.
Para uma introdução a variáveis, a quantificadores e a predicados, indico no goo-
gle acadêmico, o trabalho do professor Alexandre L. M. Levada, Fundamentos de
Lógica Matemática, com vários exemplos práticos. Recursos de mídia disponíveis
no conteúdo digital do ambiente virtual de aprendizagem
EU INDICO
Esta é uma fórmula do cálculo de predicados. Esta nova notação revela uma
estrutura previamente desconhecida nas proposições lógicas. Já o enunciado
“Nenhum homem é imortal” é expresso como ∀x(Hx → ~Ix).
Já os enunciados da forma “Algum homem é bonito” e “Existe homem inteli-
gente” necessitam de um quantificador existencial, denotado pelo símbolo ∃,
que pode significar algum, existe, para algum. Assim, “Algum homem é bonito”
é expresso como ∃x (Hx & Bx). Uma proposição do tipo “Algum homem não é
bonito” fica nesta notação, ∃x (Hx & ~Bx).
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 3
Você deve estar se perguntando: todo enunciado precisa conter quantifica-
dores? Não. Existem, por exemplo, alguns predicados do tipo sujeito-predicado,
os quais atribuem uma propriedade a uma pessoa ou coisa, adotando a nomen-
clatura de prefixar o predicado por uma letra maiúscula, seguida pelo sujeito
representado por uma letra minúscula. A sentença “Bia é feliz” é formalizada
por Fb, onde:
F = feliz (o predicado)
b = Bia (o sujeito)
Quantificador Universal (∀): simboliza qualquer que seja ou para todo
Quantificador Existencial (∃): simboliza algum, existe, para algum
PENSANDO JUNTOS
VOCABULÁRIO E REGRAS DE FORMATAÇÃO
A seguir, apresentaremos a sintaxe da linguagem formal do Cálculo de Predi-
cados. O vocabulário desta linguagem é dividido em duas partes: os símbolos
lógicos (cuja interpretação permanece fixa em todos os contextos) e os símbolos
não lógicos (cuja interpretação varia de problema a problema).
Alguns predicados podem ser combinados com dois ou mais nomes para formar
uma sentença. Isso ocorre para alguns verbos transitivos, os quais exigem um
sujeito e um objeto direto. Eles são usualmente escritos em notação lógicana
sequência predicado-sujeito-objeto. Um exemplo desta situação pode ser enun-
ciado por Jorge ama Grazielle, e é formalizada por Ajg
APROFUNDANDO
1
1
1
SÍMBOLOS LÓGICOS
Operadores Lógicos “~”; “&”; “v”; “→”; “ ↔ ”
Quantificadores “∀”; “∃”
Parênteses “(“; “)”
Quadro 5 – Símbolos Lógicos / Fonte: Jenske (2015, p. 137).
SÍMBOLOS NÃO LÓGICOS
Letras Nominais Letras minúsculas de “a” até “t”
Variáveis Letras minúsculas de “u” a “z”
Letras Predicativas Letras maiúsculas “A”, “B”, “C”, ...
Quadro 6 – Símbolos não lógicos / Fonte: Jenske (2015, p. 137).
Qualquer sequência finita de elementos do vocabulário, que seja composta
por símbolos lógicos ou não lógicos, é definida como fórmula de linguagem.
Quando uma fórmula é composta por uma letra predicativa seguida por nenhu-
ma, uma ou mais letras nominais, recebe o nome de fórmula atômica.
Fórmulas atômicas sem letras nominais são exatamente as letras sentenciais
do cálculo proposicional. Podem também representar verbos intransitivos, como
a fórmula C poderia significar CHOVE.
O conceito de fórmula bem formada (fbf) do cálculo de predicados é definido
pelas seguintes regras de formação:
Toda fórmula atômica é uma fbf.
Se φ é uma fbf, então ~φ também é.
Se φ e Ψ são fbf, então (φ & Ψ), (φ ⋁ Ψ), (φ → Ψ) e (⊢ ↔ ⊢) são fbf.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 3
REGRAS DE INFERÊNCIA
Podemos dizer que o cálculo proposicional é um caso particular do cálculo de
predicados que possui, além disso, regras de introdução e eliminação para os
quantificadores.
A seguir, enunciaremos a primeira das quatro novas regras, a regra de eli-
minação do quantificador universal. Ela estabelece que o que é verdadeiro para
qualquer coisa deve ser verdadeiro, também, para um indivíduo particular.
Se ⊢ é uma fbf contendo uma letra nominal ⊢, então, qualquer fórmula da forma ⊢ β φ β
/ α ou ∃ β φ β / α também é uma fbf, onde φ β / α é o resultado de se substituir uma
ou mais ocorrências de α em φ por uma variável β que não ocorre em φ.
A regra 4 nos permite gerar fórmulas quantificadas a partir de uma fórmula ⊢. Seja,
por exemplo, φ a fórmula “Ajg” (Jorge ama Grazielle).
Consideremos a letra nominal ⊢ como sendo g e ⊢ a variável x.
Podemos, então, produzir a fórmula bem formada ∃xAjx (Jorge ama alguém), ou,
alternativamente, ∀xAjx (Jorge ama todo mundo).
APROFUNDANDO
VOCÊ SABE RESPONDER?
Como ficaria o enunciado formalizado de Jorge ama alguém, onde alguém é
representado pela variável x?
Eliminação Universal (EU): de uma fbf universalmente quantificada ∀ β φ podemos
inferir uma fbf φ β / α, a qual resulta substituindo-se cada ocorrência da variável ⊢ em
φ por uma letra nominal α.
Por exemplo:
1
1
4
■ Vamos formalizar e provar o seguinte argumento:
Todos os homens são mortais.
Sérgio é um homem.
Portanto, Sérgio é mortal.
Usando H para é um homem, M para é mortal e s para Sérgio, formalizamos
este argumento por:
∀x (Hx → Mx), Hs ⊢ Ms.
Provemos a validade:
Linha Proposição Justificativa
1 ∀x (Hx → Mx) P (premissa)
2 Hs P (premissa)
3 Hs → Ms 1 EU (linha 1, eliminação do universal)
4 Ms 2, 3 MP (linhas 2 e 3, modus ponens)
Na linha 3, aplicamos a eliminação do universal (EU).
Como vimos anteriormente, ela estabelece que o que é verdadeiro para qual-
quer coisa deve ser verdadeiro, também, para um indivíduo particular.
Neste caso, é verdadeiro que Todos os homens são mortais.
Assim, podemos derivar que, se Sérgio é um homem, então Sérgio é mortal.
Com relação à regra EU, β é “x”, α é “s”, φ é “(Hx → Mx)” e φβ/α é “Hs → Ms”.
Introdução do Universal (IU): Para uma fbf φ contendo uma letra nominal α que não
ocorre em qualquer premissa ou hipótese vigente na linha em que ⊢ ocorre, podemos
inferir uma fbf da forma ∀ β φ β / α, onde φ β / α é o resultado de se substituir todas
as ocorrências de α em φ por uma variável β que não ocorra em φ.
Introduzir o quantificador universal significa generalizar.
Como não podemos generalizar a partir de casos particulares, existe a exi-
gência de que o indivíduo α não ocorra em qualquer premissa ou em qualquer
hipótese vigente.
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 3
O indivíduo α deve ser anônimo, o que significa que este pode ser qualquer
indivíduo do universo.
Tudo se passa como se o indivíduo α já fosse uma variável.
Por exemplo:
■ Todo indaialense (I) é catarinense (C).
Todo catarinense é brasileiro (B).
Logo, todo indaialense é brasileiro.
∀x(Ix → Cx), ∀x(Cx → Br) ⊢ ∀x(Ix → Bx)
Provemos a validade:
Linha Proposição Justificativa
1 ∀x(Ix → Cx) P
2 ∀x(Cx → Bx) P
3 Ia → Ca 1 EU
4 Ca → Ba 2 EU
5 Ia → Ba 3,4 SH
6 ∀x(Ix → Bx) 5 IU
Observe que este é um exemplo em que a introdução do universal (IU) foi utilizada
corretamente (linha 6), pois nada se conhece, em premissas, a respeito do indiví-
duo a. Na verdade, ele foi obtido a partir da regra EU e funciona como indivíduo
anônimo, podendo ser qualquer um. Assim, é permitido o uso da regra oposta IU.
ZOOM NO CONHECIMENTO
Prosseguindo os estudos, veremos as regras de inferência para o quantificador
existencial (∃). Tal como o quantificador universal, o quantificador existencial
apresenta duas regras: de introdução e de eliminação.
A regra para introdução do existencial (IE) trata-se de uma regra direta que
diz: se um ente, representado por uma letra nominal, tem uma propriedade,
segue-se que existe alguém que tem esta propriedade.
1
1
1
Por exemplo:
■ Todos são felizes (F).
Logo, existe alguém feliz.
∀x Fx ⊢ ∃xFx
Provemos a validade:
Linha Proposição Justificativa
1 ∀x Fx P
2 Fa 1 EU
3 ∃x Fx 2 IE
Uma fbf existencial afirma que pelo menos um indivíduo tem a propriedade,
colocamos como hipótese um indivíduo (representado por uma letra nominal)
que representa uma dessas coisas que tem essa propriedade.
Como não se sabe quem ele é, ele deve ser assumido como um novo indiví-
duo (anônimo), não presente em nenhum outro lugar, como numa premissa ou
numa hipótese em aberto.
Então, derivamos desta hipótese (para EE) alguma fbf que interessa manter.
Se nesta fbf concluída não ocorrer o indivíduo introduzido na hipótese, então
o raciocínio hipotético pode ser finalizado na hipótese.
Eliminação do Existencial (EE): Dada uma fbf quantificada existencialmente ∃ β
φ e uma derivação de alguma conclusão Ψ de uma hipótese da forma φ α / β (o
resultado de se substituir cada ocorrência da variável β em φ por uma letra nominal
α que não ocorra em ⊢), podemos descartar φ α / β e reafirmar Ψ. Restrição: a letra
nominal α não pode ocorrer em Ψ, nem em qualquer premissa, nem em qualquer
hipótese vigente na linha em que EE é aplicada.
Por exemplo:
■ Existem professores (P) e médicos (M).
Portanto, existem professores.
∃x (Px & Mx) ⊢ ∃xPx
Provemos a validade:
Introdução do Existencial (IE): Dada uma fbf φ contendo uma letra nominal
α, podemos inferir uma fbf da forma ∃ β φ β / α, onde φ β / α é o resultado de se
substituir uma ou mais ocorrências de ⊢ em ⊢ por uma variável β, que não ocorra em φ.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 3
Linha Proposição Justificativa
1 ∃x (Px & Mx) P
2 Pa & Ma H (p/ EE)
3 Pa 2 &E
4 ∃xPx 3 IE
5 ∃xPx 1,2 – 4 EE
Na derivação anterior, ∃ β φ é ∃x (Px & Mx), α é a, φ α / β é Pa & Ma e Ψ é ∃xPx.
φ α / β é uma instância representativa de ∃ β φ, pois α representa uma das coisas
que tem a propriedade φ.
TEOREMAS E EQUIVALÊNCIAS
Assim como no cálculo proposicional, o cálculo de predicados possui teoremas
expressáveis em termos de quantificadores e variáveis.
⊢ ∀x(Gx → Gx)
⊢ ∀x(Gx → Ga)
⊢ ~(∀xGx & ∃x~Gx)
Existem quatro importantes equivalências que relacionam de forma próxima
os dois quantificadores do cálculo de predicados com o operador de negação.
Note que teoremas são fbfs sem premissas.
PENSANDO JUNTOS
⊢ ~∀β~φ ↔ ∃βφ
⊢ ~∀βφ ↔ ∃β~φ
⊢ ∀β~φ ↔ ~∃βφ
⊢ ∀βφ ↔ ~∃β~φ
1
1
8
As quatro regras seguem o mesmo princípio, intercambiam os quantificadores
universal e existencial entre si e deslocam a posiçãodo operador ~ do início
para antes de φ, lembrando que quando ocorre ~~ há cancelamento por dupla
negação.
Por exemplo:
■ Todo corintiano (C) é não gremista (G).
Portanto, não existem torcedores que são corintianos e gremistas.
∀x(Cx → ~Gx) ⊢ ~∃x(Cx & Gx)
Provemos a validade:
Linha Proposição Justificativa
1 ∀x(Cx → ~Gx) P
2 Ca → ~Ga 1 EU
3 ~Ca ⋁ ~Ga 2 IM
4 ~(Ca & Ga) 3 DM
5 ∀x~(Cx & Gx) 4 IU
6 ~∃x(Cx & Gx) 5 IQ
IDENTIDADE
Ampliaremos o cálculo de predicados através da introdução de um predicado
especial, = que significa é idêntico a ou é igual a.
Diferentemente dos outros predicados, ele é escrito entre as letras nominais
às quais se aplica, e não antes dela.
Para representar que Xuxa (x) é a mesma pessoa que Maria da Graça Meneghel (m),
escrevemos x = m. Uma expressão como ~a = b é frequentemente escrita como a ≠ b.
Introdução da Identidade (=I): para qualquer letra nominal α, podemos afirmar α = α
numa linha qualquer de prova.
Eliminação da Identidade (= E): se φ é uma fbf contendo uma letra nominal α, então
de φ e de α = β podemos inferir φ β / α, o resultado de se substituir pelo menos uma
ocorrência de α por β.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 3
Por exemplo:
■ Ha, a = b ⊢ Hb
Provemos a validade:
Linha Proposição Justificativa
1 Ha P
2 a = b P
3 Hb 1, 2 = E
VOCÊ SABE RESPONDER?
Como você provaria a validade de Ga, ~Gb ⊢ ~a = b ?
Primer
Primer é um filme de ficção científica sobre uma descoberta
acidental de como viajar no tempo.
Os engenheiros Aaron e Abe suplementam seus dias de em-
pregos com projetos de tecnologia empresarial, trabalhando
fora da garagem de Aaron.
Durante uma pesquisa, envolvendo a redução eletromagnéti-
ca de objetos de peso, os dois descobrem acidentalmente um
efeito colateral que liga o tempo de A para B.
O filme trabalha com um nível básico de lógica matemática.
INDICAÇÃO DE FILME
1
1
1
NOVOS DESAFIOS
No decorrer deste tema, no primeiro tópico, você aprendeu sobre teoria dos
conjuntos, em especial sobre operações com conjuntos. Também teve uma noção
inicial de programação no Python com a teoria dos conjuntos.
No segundo tópico, você aprendeu cálculo de predicados, considerando re-
sumos sobre as regras de inferência e de equivalência do cálculo proposicional.
Nesta fase, a importância esteve nas variáveis, nos quantificadores, nos predica-
dos, nas regras de inferência, nos teoremas, nas equivalências e na identidade.
Na área de computação, como exemplo de identidade, em linguagens de pro-
gramação, como no Python, podemos utilizar as variáveis Ga = nGb (a = ~b) e
nGa = Gb (~a = b).
Você pode criar um algoritmo como o exemplo a seguir e verificar que o pro-
grama, ao ser executado, dirá se for Falso (False) ou Verdadeiro (True), conforme
a lógica não for obedecida ou for obedecida, respectivamente.
Foram atribuídos valores hipotéticos para as variáveis a = nb = Ga = nGb =
100 e na = b = Gb = nGa = 200.
‘Exemplo identidade na lógica de predicados’
print(‘~ é o mesmo que n’)
print(‘-------------------’)
print(‘Ga é nGb’)
print(‘-------------------’)
print(‘nGa é Gb’)
a=Ga=100
nb=nGb=100
b=Gb=200
Acesse e confira a aula referente a este tema. Recursos de mídia disponíveis no
conteúdo digital no ambiente virtual de aprendizagem
EM FOCO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 3
na=nGa=200
print(‘-------------------’)
print(‘Analisando, temos’)
print(‘-------------------’)
print(‘Ga é nGb’,(Ga==nGb))
print(‘-------------------’)
print(‘Ga é Gb’,(Ga==Gb))
print(‘-------------------’)
print(‘nGa é Gb’,(nGa==Gb))
print(‘-------------------’)
print(‘nGa é nGb’,(nGa==nGb))
print(‘-------------------’)
print(‘Ga é a’, (Ga==a))
print(‘-------------------’)
print(‘Gb é b’, (Gb==b))
print(‘-------------------’)
print(‘Analisando, temos’)
print(‘-------------------’)
print(‘na é b’, (na==b))
print(‘-------------------’)
print(‘na é nb’, (na==nb))
print(‘-------------------’)
print(‘a é nb’, (a==nb))
print(‘-------------------’)
print(‘a é b’, (a==b))
print(‘-------------------’)
print(‘FIM’)
O resultado será:
~ é o mesmo que n
-------------------
Ga é nGb
-------------------
nGa é Gb
-------------------
1
1
1
Analisando, temos
-------------------
Ga é nGb True
-------------------
Ga é Gb False
-------------------
nGa é Gb True
-------------------
nGa é nGb False
-------------------
Ga é a True
-------------------
Gb é b True
-------------------
Analisando, temos
-------------------
na é b True
-------------------
na é nb False
-------------------
a é nb True
-------------------
a é b False
-------------------
FIM
Este algoritmo pode ser testado em outras linguagens de programação, como o
C e o Java, bastando apenas fazer adaptações.
Desta forma, você pode criar inúmeras maneiras de resolver problemas de
lógica por meio da computação. Basta treinar os conceitos aprendidos neste tema.
UNIASSELVI
1
1
1
1. O cálculo do número total de elementos de três conjuntos que se relacionam, conforme
figura abaixo, pode ser obtido pela fórmula n(A ∪ B ∪ C) = n(A) + n(B) + n(C) – n(A ∩ B) - n(A ∩
C) - n(B ∩ C) + n(A ∩ B ∩ C). Esta fórmula representa a união de três conjuntos.
Nesta situação, podemos gerar um algoritmo na linguagem de programação de alto nível
Python, com três variáveis que representam o número de elementos de A, B e C, ou seja,
n(A), n(B) e n(C). Também, podemos criar mais quatro variáveis que demonstram as relações
n(A ∩ B), n(A ∩ C), n(B ∩ C) e n(A ∩ B ∩ C).
Na linguagem de programação de alto nível Python, para a união de três conjuntos A, B e C,
foi gerado o seguinte algoritmo, onde A=n(A), B=n(B), C=n(C), D=n(A ∩ B), E=n(A ∩ C), F=n(B ∩
C), G=n(A ∩ B ∩ C) e R= n(A ∪ B ∪ C):
print(‘Cálculo do número de elementos da união dos conjuntos A, B e C’)
print(‘---------------------------------------------’)
print(‘n(A)=12’)
print(‘n(B)=10’)
print(‘n(C)=15’)
print(‘n(A ∩ B)=2’)
print(‘n(A ∩ C)=3’)
print(‘n(B ∩ C)=1’)
print(‘n(A ∩ B ∩ C)=1’)
A=12
AUTOATIVIDADE
1
1
4
B=10
C=15
D=2
E=3
F=1
G=1
R= A+B+C-D-E-F+G
print(‘---------------------------------------------’)
print(‘n(A ∪ B ∪ C)=’)
print(R)
print(‘---------------------------------------------’)
Analisando as informações no algoritmo, qual é o valor de R ou do número de elementos
da união dos conjuntos A, B e C?
2. A introdução do universal (IU), uma das regras de inferência no cálculo de predicados,
pode ser explicado da seguinte forma: como não podemos generalizar a partir de casos
particulares, existe a exigência de que o indivíduo ∩ não ocorra em qualquer premissa ou em
qualquer hipótese vigente. O indivíduo ∩ deve ser anônimo, o que significa que este pode
ser qualquer indivíduo do universo.
Exemplo: Todo cão é preto (P) e amável (A). Logo, todo cão é preto e todo cão é amável.
Cuja representação seria: ∀x(Px & Ax) ⊢ ∀xPx& ∀ xAx
Podemos gerar um algoritmo na programação Python, para imprimir na tela o resultado
anterior.
Na linguagem de programação Python, podemos construir o seguinte texto para ser im-
presso na tela:
AUTOATIVIDADE
1
1
5
print(‘-----------------------------------------------------------------------’)
print(‘Todo cachorro é amigo e fiel’)
print(‘Logo, todo o cachorro é amigo e todo o cachorro é fiel’)
print(‘-----------------------------------------------------------------------’)
print(∀ ‘⊢x = qualquer que seja x’)
print(‘Ax = x é amigo’)
print(‘Fx = x é fiel’)
print(‘-----------------------------------------------------------------------’)
print(‘A representação final pela regra de inferência IU, seria:’)
print(‘R’)
print(‘-----------------------------------------------------------------------’)
Neste algoritmo, o que devemos colocar no lugar de R?
3. Uma das regras de inferência, a introdução do existencial (IE), pode ser enunciado de ma-
neira bem simples: se um ente, representado por uma letra nominal, tem uma propriedade,
segue-se que existe alguém que tem esta propriedade.
Exemplo: Não existe alguém bonito. Logo,todos são não bonitos.
A representação correta seria: ~∃x Bx ⊢ ∀x~Bx.
Considere o exemplo: Não existe alguém bobo. Logo, todos são não bobos.
Bx seria a representação lógica de bobo.
Também considere os valores de nJxBx, QxnBx e QxBx no algoritmo abaixo como hipotéticos.
Desta forma, nas linhas 8 e 10 do algoritmo abaixo, na programação Python, resultará, na
execução do programa:
AUTOATIVIDADE
1
1
1
1 print(‘Exemplo de IE: Não existe alguém bobo. Logo, todos são não bobos.’)
2 print(‘~ é o mesmo que n’)
3 print(‘∃ é o mesmo que J’)
4 print(‘∀ é o mesmo que Q’)
5 nJxBx=100
6 QxnBx=100
7 QxBx=200
8 print(‘nJxBx é QxnBx’,(nJxBx==QxnBx))
9 print(‘-------------------’)
10 print(‘nJxBx é QxBx’,(nJxBx==QxBx))
11 print(‘-------------------’)
a) Verdadeiro (True) e Verdadeiro (True).
b) Verdadeiro (True) e Falso (False).
c) Falso (False) e Falso (False) .
d) Falso (False) e Verdadeiro (True).
e) O algoritmo irá apresentar erro na execução.
4. O cálculo do número total de elementos de dois conjuntos que se relacionam, conforme
figura abaixo, pode ser obtido pela fórmula n(A ∪ B) = n(A) + n(B) – n(A ∩ B). Esta fórmula
representa a união de dois conjuntos.
AUTOATIVIDADE
1
1
1
Nesta situação, podemos gerar um algoritmo na linguagem de programação Python, com
duas variáveis que representam o número de elementos de A e B, ou seja, n(A) e n(B). Tam-
bém, podemos criar mais uma variável que demonstra a relação n(A ∩ B).
Na linguagem de programação Python, para a união de dois conjuntos A e B, foi gerado o
seguinte algoritmo, onde A=n(A), B=n(B), C=n(A ∩ B) e R= n(A ∪ B):
print(‘Cálculo do número de elementos da união dos conjuntos A e B’)
print(‘---------------------------------------------’)
print(‘n(A)=5’)
print(‘n(B)=4’)
print(‘n(A ∩ B)=1’)
A=5
B=4
C=1
R= A+B-C
print(‘---------------------------------------------’)
print(‘n(A ∪ B)=’)
print(R)
print(‘---------------------------------------------’)
Analisando as informações no algoritmo, analise as afirmativas a seguir:
I - Na execução do programa, R será 8.
II - Se substituirmos print(‘n(A)=5’) por print(‘n(A)=2’) e A=5 por A=2, na execução do programa,
R será 4.
III - Se substituirmos print(‘n(B)=4’) por print(‘n(B)=7’) e B=4 por B=7, na execução do programa,
R será 10.
É correto o que se afirma em:
AUTOATIVIDADE
1
1
8
a) I, apenas.
b) III, apenas.
c) I e II, apenas.
d) II e III, apenas.
e) I, II e III.
5. Interpretada pelas letras G e P os predicados é um gato e é peludo, respectivamente,
podemos formalizar sentenças, utilizando o cálculo de predicados.
Por exemplo: Todos os gatos são peludos.
Teríamos: ∀x(Gx → Px).
Na sentença lógica Nenhum gato é manhoso, considerando G como é um gato e M como
é manhoso, podemos afirmar:
a) ∀x(~Gx → ~Mx).
b) ∀x(Gx → ~Mx).
c) ∀x(Gx → Mx).
d) ∀x(~Gx → Mx).
e) ∀x(Mx → ~Gx).
AUTOATIVIDADE
1
1
9
REFERÊNCIAS
DOWNEY, A.B. Pense em Python pense como um cientista da computação. São Paulo: Novatec,
2016.
FORBELLONE, A. L. V. e EBERSPACHER, H. F. Lógica de Programação: A construção de algorit-
mos e estruturas de dados São Paulo: Prentice Hall, 2005.
JENSKE, G. Lógica Matemática Indaial: Uniasselvi, 2015.
SILVA, F. C. D. Lógica de Predicados 2017. Disponível em: http://wwwp.uniriotec.br. Acesso em:
14 jun. 2023.
SOUZA, J.A.L. de. Lógica Matemática. 1. ed. São Paulo: Pearson, 2016.
1
1
1
1. Analisando as informações no algoritmo, temos os seguintes valores:
n(A)=12
n(B)=10
n(C)=15
n(A ∩ B)=2
n(A ∩ C)=3
n(B ∩ C)=1
n(A ∩ B ∩ C)=1
Aplicando na fórmula n(A ∪ B ∪ C) = n(A) + n(B) + n(C) – n(A ∩ B) - n(A ∩ C) - n(B ∩ C) + n(A
∩ B ∩ C), temos n(A ∪ B ∪ C) = 12+10+15-2-3-1+1 = 32 elementos.
2. Desenvolvendo a expressão lógica no algoritmo no Python, temos:
• print(‘-----------------------------------------------------------------------’)
• print(‘Todo cachorro é amigo e fiel’)
• print(‘Logo, todo o cachorro é amigo e todo o cachorro é fiel’)
• print(‘-----------------------------------------------------------------------’)
• print(‘∀x = qualquer que seja x’)
• print(‘Ax = x é amigo’)
• print(‘Fx = x é fiel’)
• print(‘-----------------------------------------------------------------------’)
• print(‘A representação final pela regra de inferência IU, seria:’)
• print(‘∀x(Ax&Fx) ⊢ ∀xAx & ∀xFx ‘)
• print(‘-----------------------------------------------------------------------’)
• Portanto, o R será ∀x(Ax&Fx) ⊢ ∀xAx & ∀xFx, correspondendo a regra IU da inferência.
3. Opção B. Na execução do algoritmo:
Primeiro: nJxBx = 100 = QxnBx, o que resulta que a linha 8, nJxBx==QxnBx, é verdadeira.
Segundo: nJxBx = 100 ≠ QxBx = 200, o que resulta que a linha 10, nJxBx==QxBx, é falsa.
4. Opção A. Os cálculos corretos seriam:
I. Na execução do programa, R será 8;
n(A ∪ B) = n(A) + n(B) – n(A ∩ B).
n(A ∪ B) = 5 + 4 – 1 = 8. Verdadeiro.
II. Se substituirmos print(‘n(A)=5’) por print(‘n(A)=2’) e A=5 por A=2, na execução do pro-
grama, R será 4; e
n(A ∪ B) = n(A) + n(B) – n(A ∩ B).
GABARITO
1
1
1
n(A ∪ B) = 2 + 4 – 1 = 5. Falso.
III. Se substituirmos print(‘n(B)=4’) por print(‘n(B)=7’) e B=4 por B=7, na execução do pro-
grama, R será 10.
n(A ∪ B) = n(A) + n(B) – n(A ∩ B).
n(A ∪ B) = 5 + 7 – 1 = 11. Falso.
5. Opção B. A resposta correta pelo cálculo de predicados para Nenhum gato é manhoso, seria
∀x(Gx → ~Mx). Para qualquer gato, nenhum é manhoso.
GABARITO
1
1
1
MINHAS ANOTAÇÕES
1
1
1
UNIDADE 2
MINHAS METAS
INDUÇÃO MATEMÁTICA
Identificar a teoria e as técnicas de indução matemática.
Aplicar a indução matemática em problemas e em exemplos.
Compreender o princípio da indução matemática.
Entender a definição por recorrência.
Identificar as aplicações da indução matemática na ciência da computação.
T E M A D E A P R E N D I Z A G E M 4
1
1
1
INICIE SUA JORNADA
Para entendermos indução matemática, podemos dar dois exemplos do dia a dia.
O primeiro seria o efeito dominó ou efeito cascata. O problema inicial é en-
tender por que os dominós alinhados em uma fila um após o outro caem de
forma sequencial.
O segundo seria como provar a sequência de Fibonacci, que tem aplicação
na ciência da computação.
No primeiro caso, a ideia está relacionada com um efeito ser a causa de ou-
tro efeito. De maneira objetiva, significa que um dominó induz o próximo até o
último dominó da fila.
No segundo caso, para provar a validade da sequência de Fibonacci, precisa-
mos utilizar o método da indução.
A sequência de Fibonacci é uma sequência de números inteiros iniciados por
zero e um, no qual cada termo subsequente corresponde à soma dos dois números
anteriores: 0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ... Ela é encontrada na
natureza. Exemplos: as espirais do girassol, o número de pétalas da margarida e
a concha do caracol Nautilus.
A famosa fórmula de Fibonacci, que pode ser provada por indução, é com o
primeiro termo sendo 1:
F F Fn N N� �� �1 2
Nos dois exemplos anteriores, verifica-se a aplicação real da indução. De for-
ma geral, a indução matemática é um instrumento importante para demonstrar
resultados relativos aos inteiros positivos.
Na área de computação, na programação, pode-se, por exemplo, definir a mul-
tiplicação de dois números inteiros não negativos a e b em termos da operação
de adição por indução.
Neste podcast, você aprenderá sobre a indução matemática, considerando o prin-
cípio da indução matemática e a definição por recorrência. Recursos de mídia dis-
poníveis no conteúdo digital do ambiente virtual de aprendizagem.
PLAY NO CONHECIMENTO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 4
Na próxima fase, será desenvolvido o tema Indução matemática, sendo princípio
da indução matemática o item relevante na área de computação.
DESENVOLVA SEU POTENCIAL
INDUÇÃO MATEMÁTICA
Neste tema, veremos a forma de demonstrar o princípio da indução matemática.
Essa expressão designa o princípio que serve para o estabelecer a verdade de um
teorema matemático em um número indefinido de casos(ABBAGNANO, 2012).
Além de aprender a formalidade da demonstração, traremos várias aplicações
para situações acadêmicas do estudo da matemática.
VAMOS RECORDAR?
Para que você comece entendendo a indução matemática, é necessária uma
revisão geral sobre números inteiros, dentro do contexto dos números reais, bem
como a questão da ordenação. Sugiro a leitura do artigo do Matheus Pereira Lobo,
disponível no Google Acadêmico. Recursos de mídia disponíveis no conteúdo
digital do ambiente virtual de aprendizagem
Livro: Matemática discreta para computação e informática
Organizador: Paulo Blauth Menezes
Editora: Bookman
Ano: 2013
Sobre o livro: este livro traz os principais conceitos de matemá-
tica discreta em uma linguagem simples e acessível.
Essa disciplina discreta é considerada, pelos alunos, especial-
mente difícil, mais do que a de cálculo, muitas vezes.
Com isso em mente, o autor procurou dar ênfase aos aspectos
didáticos, buscando texto simples e acessível, sem abrir mão
dos aspectos matemáticos formais.
Há um capítulo dedicado à indução matemática, com mode-
los computacionais.
INDICAÇÃO DE LIVRO
1
1
8
PRINCÍPIO DA INDUÇÃO MATEMÁTICA
Para entender o funcionamento do teorema antes de apresentá-lo, vamos supor
algo bem intuitivo, acredito que você já tenha se divertido com este tipo de brin-
cadeira que envolve dominós.
Imagine uma quantidade de dominós colocados em sequência, de modo que,
ao derrubar um deles, o procedimento se estenderá até o último deles. Na prática,
o método da brincadeira com dominós possui um funcionamento bem simples.
Garanta que todos estejam alinhados, que o primeiro funcione e que este influen-
cie no próximo e assim por diante. Assim, mesmo que a fila seja indefinidamente
extensa, podemos garantir que todos os dominós cairão.
Teorema 1: (Princípio da indução matemática) sejam S um subconjunto de Z e
a Z∈ tais que:
a S∈ ; e
S é fechado em relação à operação de somar 1 a seus elementos, ou seja, ∀n ,
n S n S� � � �1 .
Então, { ; }x Z x a S� � � .
Parece simples o teorema, porém, apesar da simplicidade de imaginar que o su-
cessor de um número pertence a um subconjunto dos inteiros, este serve como
base para um importante método de demonstração, que chamaremos de Prova
por indução matemática.
Antes de definirmos o termo indução, iremos enunciar os axiomas de Peano:
■ O 0 é um número natural.
■ A igualdade é reflexiva: a=a para todo natural a.
■ A igualdade é simétrica: se a=b, então b=a, para quais quer a e b naturais.
■ A igualdade é associativa: se a=b e b=c, então, a=c, para quaisquer a, b e
c naturais.
■ Os naturais são fechados na igualdade. Se a=b e a é natural, então b é
natural.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 4
■ Para todo n ∈ N, o sucessor de n, denotado por S(n), também é natural.
■ Não existe n ∈ N tal que S(n) = 0.
■ S(n) pode ser entendido como uma função, se S(n)=S(m), então m=n, ou
seja, S(n) é uma função injetora.
■ Se C é um conjunto, tal que: 0 ∈ C. Para todo n ∈ N, se n ∈ C, então S(n)
∈ C.; Esse conjunto contém todos os números naturais.
Segue uma definição de indução:
“ As ciências naturais utilizam o método chamado indução empíri-
ca para formular leis que devem reger determinados fenômenos a
partir de um grande número de observações particulares, selecio-
nadas adequadamente. Esse tipo de procedimento, embora não seja
uma demonstração de que um dado fato é logicamente verdadeiro,
é frequentemente satisfatório (FONSECA, 2011, p. 30).
Apesar do comentário de Fonseca (2011) ser satisfatório, pode não ser relevante
para várias situações da matemática, em que o intuito é que uma proposição seja
válida para um certo conjunto de números.
Para você se aprofundar no entendimento da indução matemática, indico a leitura
do artigo A indução matemática como método de demonstração, de Vera Lúcia
Fazoli da Cunha Freitas Viana, disponível no Google Acadêmico. Recursos de mí-
dia disponíveis no conteúdo digital do ambiente virtual de aprendizagem
EU INDICO
Bertrand Russel (1872-1970), matemático inglês, batizou a indução empírica de for-
ma irônica, chamando de indução galinácea, que apresentava a seguinte história:
“ Havia uma galinha nova no quintal de uma velha senhora. Diaria-
mente, ao entardecer, a boa senhora levava milho às galinhas. No
primeiro dia, a galinha, desconfiada, esperou que a senhora se reti-
rasse para se alimentar. No segundo dia, a galinha, prudentemente,
foi se alimentando enquanto a senhora se retirava. No nonagésimo
1
4
1
dia, a galinha, cheia de intimidade, já não fazia caso da velha se-
nhora. No centésimo dia, ao se aproximar a senhora, a galinha, por
indução, foi ao encontro dela para reclamar o seu milho. Qual não
foi a sua surpresa quando a senhora a pegou pelo pescoço com a
intenção de pô-la na panela (HEFEZ, 2009, p. 10).
Admitir que algo funcione para uma certa quantidade de valores não significa
que funcione para qualquer uma delas. Esse foi o caso da galinha da história do
matemático Russel. Achou que funcionaria novamente no caso 100, porém, a
prova não foi muito bem o esperado, pelo menos para a galinha.
VOCÊ SABE RESPONDER?
Qual o principal objetivo da indução matemática?
Veremos um exemplo extremamente curioso sobre a raciocínio indutivo que
dará ênfase ao motivo de demonstrar para validar.
Exemplo:
Encontramos um polinômio P n n n( ) � � �2 41 que fornece apenas números
primos. Veja na tabela a seguir os 40 primeiros números obtidos por meio dele:
n P n( ) n P n( ) n P n( ) n P n( )
1 41 11 151 21 461 31 971
2 43 12 173 22 503 32 1033
3 47 13 197 23 547 33 1097
4 53 14 223 24 593 34 1163
5 61 15 251 25 641 35 1231
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 4
n P n( ) n P n( ) n P n( ) n P n( )
6 71 16 281 26 691 36 1301
7 83 17 313 27 743 37 1373
8 97 18 347 28 797 38 1447
9 113 19 383 29 853 39 1523
10 131 20 421 30 911 40 1601
Tabela 1 – Valores aplicados em P(n) / Fonte: adaptada de Pitzer e Santos (2020).
Será que conhecemos um polinômio que fornece apenas números primos?
Apesar de todos os números obtidos até o momento serem realmente primos,
o polinômio não funciona para P( )41 1681 41 41� � � .
Notem como é importante na matemática a demonstração. Apesar de refu-
tarmos a ideia do polinômio com um contraexemplo, é fundamental trabalhar
com verdades.
Um número primo tem apenas dois divisores, o número 1 e ele mesmo No caso
do número 1681, não é um número primo, pois tem três divisores: 1, 41 e 1681.
PENSANDO JUNTOS
Para a continuação dos valores da tabela, podemos utilizar o algoritmo a seguir,
na linguagem de programação Python. Este algoritmo pode ser testado em outras
linguagens de programação, como o C e o Java, bastando apenas fazer adaptações.
Você pode entrar com qualquer valor inteiro (n = int(input()). Se entrar com
n = 300, teremos 89741. Teste outros valores e verifique se são números primos.
print(‘--------------------------------------------------------------------------’)
print(‘Exemplos de valores aplicados em P(n) = n**2 - n + 41.’)
print(‘n é um número natural positivo.’)
print(‘P(n) é o número obtido que pode ser ou não primo.’)
1
4
1
print(‘--------------------------------------------------------------------------’)
n = int(input(‘Entre com o valor de n:’))
k = (n**2 -n +41)
print(‘O valor de P(n) será:’, k)
print(‘--------------------------------------------------------------------------’)
Ao executar o programa, teremos:
-------------------------------------------------------------------------
Exemplos de valores aplicados em P n n n( ) **� � �2 41 .
n é um número natural positivo.
P n( ) é o número obtido que pode ser ou não primo.
-------------------------------------------------------------------------
Entre com o valor de n : 300
O valor de P n( ) será: 89741
-------------------------------------------------------------------------
Teorema 2: (Prova por indução matemática) sejam a Z∈ e seja p n( ) uma
sentença aberta emn . Suponha que:
p a( ) é verdadeiro, e que
� � � �n a p n p n, ( ) ( )1 é verdadeiro.
Então, p n( ) é verdadeiro para todo n a≥ .
O teorema nos diz que se um certo valor a goza da sentença definida nos núme-
ros inteiros e que o sucessor de a também goza dessa sentença, então todos os
números deste conjunto gozam desta sentença.
Diferente da indução empírica já comentada, a indução matemática não
deixa pontos abertos quanto à validade de uma proposição. Mesmo que uma
sentença seja verdade para uma finidade de valores, isso não significa que fun-
cionará para todos.
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 4
Segundo Hefez (2016), o primeiro registro da utilização do princípio da indu-
ção matemática foi feito por Francesco Maurolycus, em 1575, na tentativa de en-
contrar uma fórmula exata, para a soma dos n primeiros números naturais ímpares:
S nn � � � � �1 3 2 1... ( )
Acompanhe o resultado obtido quando realizamos a soma dos quatro primei-
ros casos:
S
S
S
S
1
2
3
4
1
1 3 4
1 3 5 9
1 3 5 7 16
�
� � �
� � � �
� � � � �
É intuitivo perceber que a fórmula Sn n� � � � �1 3 2 1... ( ) é o resultado da
soma dos n números naturais ímpares. Ela nos fornece uma conjectura para
um raciocínio indutivo em que S nn = 2 .
Já vimos anteriormente que nada está provado ainda. Vamos, então, utilizar do
princípio da indução matemática para realizar a demonstração. Os passos para
realizar tal demonstração são simples:
• Queremos provar que a propriedade P n S nn( ) : = 2
vale para
todo n N∈ . Verificaremos, inicialmente, que P( )1 é válida. De fato:
P S( ) :1 1 11
2= = o que é verdade.
• Agora, vamos supor que P n( ) é verdadeira para certo valor de n, soma-
mos ambos os membros da igualdade por ( )2 1n + , obtemos:
1 3 2 1 2 1 2 1
1 3 2 1 2 1 1
2� � � � � � � � �
� � � � � � � �
... ( ) ( ) ( )
... ( ) ( ) ( )
n n n n
n n n 22
Logo P n P n( ) ( )� �1 . Assim, pelo princípio da indução, a proposição P n( )
vale para todo n N∈ .
APROFUNDANDO
1
4
4
Veremos agora um exemplo.
Mostre que, para n N∈ , vale:
1
1 2
1
2 3
1
1 1. .
...
( )
� � �
�
�
�n n
n
n
Demonstraremos, por meio da programação Python, com as duas principais de-
monstrações, ou seja, P( )1 e P n( )+1 . Este algoritmo pode ser testado em outras
linguagens de programação, como o C e o Java, bastando apenas fazer adaptações.
print(‘*********************************************************’)
print(‘Mostre que para n pertencente N, vale:’)
print(‘1/1*2 + 1/2*3 + ... + 1/n*(n + 1) = n/(n + 1).’)
print(‘*********************************************************’)
print(‘Para P(1) teremos no lado esquerdo:’)
k = 1/(1*(1 + 1))
print(k)
print(‘Para P(1) teremos no lado direito:’)
w = 1/(1 + 1)
print(w)
print(‘Logo, 1/2 = 1/2’)
print(‘*********************************************************’)
print(‘Para P(n + 1) teremos que somar em ambos os lados 1/(n + 1)(n + 2).’)
print(‘No segundo lado, teremos no final (n + 1)/(n + 2).’)
print(‘Que é o sucessor da expressão mostrada como hipótese de indução.’)
print(‘Logo, P(n) = P(n + 1) e P(n) vale para todo n pertencente a N.’)
print(‘*********************************************************’)
Ao executar o programa, teremos:
*********************************************************
Mostre que, para n pertencente N , vale:
1 1 2 1 2 3 1 1 1/ * / * ... / *( ) / ( )� � � � � �n n n n
*********************************************************
Para P( )1 , teremos no lado esquerdo:
0.5
UNIASSELVI
1
4
5
TEMA DE APRENDIZAGEM 4
Para P( )1 , teremos no lado direito:
0.5
Logo, 1 2 1 2/ /=
*********************************************************
Para P n( )+1 , teremos que somar em ambos os lados 1 1 2/ ( )( )n n+ + .
No segundo lado, teremos no final ( )( )n n+ +1 2 .
Que é o sucessor da expressão mostrada como hipótese de indução.
Logo, P n P n( ) ( )� �1 e P n( ) vale para todo n pertencente a N .
*********************************************************
Teorema 3: (Prova por indução completa) seja p n( ) uma sentença aberta tal que:
p a( ) é verdadeiro, e que
∀n p a, ( ) e p a( )+1 e ⋅ ⋅ ⋅ e p n p n( ) ( )� �1 é verdadeiro
Então, p n( ) é verdadeiro para todo n a≥ .
A diferença entre o Princípio de Indução Matemática com este, é que enquanto
no primeiro tínhamos um número natural n qualquer, tentamos provar que
P n( )+1 é verdadeira baseado apenas na hipótese de que P n( ) é verdadeira.
Na indução completa, prova-se que P n( )+1 é verdadeira fundamentado
no fato de que as proposições P P P P n( ), ( ), ( ),..., ( )1 2 3 são todas verdadeiras,
ou seja, em vez de admitir que apenas P n( ) é verdadeira, pode-se admitir que
P P P n( ), ( ),..., ( )1 2 são verdadeiros, dessa forma, temos mais base e consistência
na demonstração.
VOCÊ SABE RESPONDER?
Você sabe demostrar por indução matemática a expressão:
2 4 8 2 2 2 1� � � � � �... ( )n n
?
1
4
1
Na próxima fase, será desenvolvido o tema Definição por recorrência, comple-
mentando o assunto sobre princípio da indução matemática.
DEFINIÇÃO POR RECORRÊNCIA
Para dar continuidade ao desenvolvimento das aplicações do método da indução,
veremos o conceito de recorrência, que trará mais rigor no tratamento de algumas
situações matemáticas.
Muitas sequências, como as aritméticas e geométricas podem ser definidas
recursivamente, ou seja, mediado de uma regra que possibilita calcular qualquer
termo, em função do antecessor imediato.
Por exemplo: seja a sequência 1 5 9 4 3� � � � �... ( )n com n N∈ .
Essa é uma sequência bem conhecida, uma progressão aritmética de razão
4. Logo, uma forma de definir o próximo termo da sequência an +1 , por recor-
rência, resumir-se-ia na expressão:
a an n� � �1 4
Ou, ainda, a soma de todos Sn os termos, seria definida por:
S S an n n� � � �1 1
Perceba que neste exemplo elementar conseguimos notar a aplicação do conceito
de recorrência por duas vezes, uma definindo o próximo termo da sequência e
no outro caso a soma até determinado ponto.
Podemos citar dois exemplos de sequências aritmética e geométrica, respec-
tivamente:
A = { 1 + 8 + 15 + 21 + ...}, razão 7; e
B = { 1 + 3 + 9 + 27 + ...}, razão 3.
É importante ressaltar que podemos denotar somas como a dos exemplos
anteriores, pela notação de somatório:
S an ii
n� �� ( )1
Podemos explicar a fórmula anterior conforme a figura a seguir.
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 4
Limite superior
Limite inferior
Letra grega Sigma Argumento
onde parar
onde começar
Símbolo de somatório Expressão a ser somada
Figura 1 – Explicação da notação de somatório / Fonte: adaptada de Pitzer e Santos (2020).
Descrição da Imagem: a figura apresenta a letra grega sigma, representando a soma de argumentos xi. Também
temos definidos os limites superior e inferior da letra sigma. Fim da descrição.
Existem algumas propriedades que apenas apresentaremos sobre o somatório. Se-
jam ai e bi duas sequências de elementos de um conjunto A munida de duas
operações sujeitas às leis da aritmética e seja c A∈ . Vale as seguintes propriedades:
( ) ( ) ( ) ( )i a b a bi i
i
n
i
i
n
i
i
n
� � �
� � �
� � �
1 1 1
( ) . ( ) ( . )ii c a c ai
i
n
i
i
n
� �
� ��
1 1
( ) ( )iii a aa ai
i
n
ni�
�
�� ��� 1
1
1 1
( ) ( )iv c nc
i
n
�
� �
1
1
4
8
Por exemplo:
Encontre uma expressão fechada para a soma:
1 2 2 3 3 4 1� � � � � � � � �... ( )n n .
Teremos, pela propriedade i :
i i i i i i i i
i
n
i
n
i
n
i
n
.( ) ( . ) .� � � � �
� � � �
� � � �1
1 1 1 1
Usando os resultados das sequências a seguir:
1 2 1
2
� � ���� �
�n n n( )
1 2 1 2 1
6
2 2 2� � ���� �
� �n n n n( )( )
Desenvolvendo, teremos:
i i i
i
n
i
n
. � �
� �
� �
1 1
n n n n n( )( ) ( )� �
�
�
�
1 2 1
6
1
2
n n n n n( )( ) ( )� � � �
�
1 2 1 3 1
6
n n n( )( )� � �
�
1 2 1 3
6
n n n( )( )� �
�
1 2 4
6
n n n( )( )� �
�
1 2
3
UNIASSELVI
1
4
9
TEMA DE APRENDIZAGEM 4
Por recorrência, é possível definir o fatorial de um número natural, denotado por
n! , comosendo 0 1 1! != = e ( )! ! ( )n n n� � � �1 1 , se n ≥ 1 .
Outra importante aplicação da recorrência está na definição da operação de po-
tenciação. Seja a um elemento de um conjunto A munido de duas operações
sujeitas às leis básicas da aritmética. As potências an com n inteiro, n ≥ 0 , são
definidas por recorrência, como:
a a1 = e a0 1= , se a ≠ 0 , então a a an n� � �1
.
Vale as seguintes propriedades:
( ) .i a a am n m n� �
( ) ( ) .ii a am n m n=
( ) ( . ) .iii a b a bm m m=
APROFUNDANDO
Podemos criar, por meio da programação Python, um algoritmo para calcular o
fatorial de qualquer número natural.
No algoritmo, colocamos import math, módulo que fornece acesso às funções
matemáticas definidas pelo padrão C. Também a função math factorial, que per-
mite o cálculo do fatorial. Este algoritmo pode ser testado em outras linguagens
de programação, como o C e o Java, bastando apenas fazer adaptações.
print(‘*********************************************************’)
import math
x=int(input(‘Entre com o valor para o cálculo do fatorial:’))
print(math.factorial(x))
print(‘*********************************************************’)
Ao executar o programa para o valor 7, teremos:
*********************************************************
Entre com o valor para o cálculo do fatorial:7
5040
*********************************************************
Outrossim, demonstraremos, por meio da programação Python, com as duas
principais demonstrações, ou seja, P(1) e P(n+1), mais um exemplo, utilizando
1
5
1
as propriedades da potenciação. Este algoritmo pode ser testado em outras lin-
guagens de programação, como o C e o Java, bastando apenas fazer adaptações.
print(‘*********************************************************’)
print(‘Mostre que para n pertencente N, vale:’)
print(‘2 + 4 + 8 + ... + 2**n = 2(2**n - 1).’)
print(‘*********************************************************’)
print(‘Para P(1) teremos no lado esquerdo:’)
k = 2**1
print(k)
print(‘Para P(1) teremos no lado direito:’)
w = 2*(2**1 - 1)
print(w)
print(‘Logo, 2 = 2’)
print(‘*********************************************************’)
print(‘Para P(n + 1) teremos que somar em ambos os lados 2**(n + 1).’)
print(‘No segundo lado, teremos no final 2*(2**(n + 1) - 1.’)
print(‘Que é o sucessor da expressão mostrada como hipótese de indução.’)
print(‘Logo, P(n) = P(n + 1) e P(n) vale para todo n pertencente a N.’)
print(‘*********************************************************’)
Ao executar o programa, teremos:
*********************************************************
Mostre que para n pertencente N, vale:
2 + 4 + 8 + ... + 2**n = 2(2**n - 1).
*********************************************************
Para P(1), teremos no lado esquerdo:
2
Para P(1), teremos no lado direito:
2
Logo, 2 = 2
*********************************************************
Para P(n + 1), teremos que somar em ambos os lados 2**(n + 1).
No segundo lado, teremos no final 2*(2**(n + 1) - 1.
Que é o sucessor da expressão mostrada como hipótese de indução.
Logo, P(n) = P(n + 1) e P(n) vale para todo n pertencente a N.
*********************************************************
UNIASSELVI
1
5
1
TEMA DE APRENDIZAGEM 4
Para você encerrar este tema sobre a indução matemática, indico a leitura do
artigo Indução matemática, de Abramo Hefez, disponível no Google Acadêmi-
co. Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
EU INDICO
Acesse seu ambiente virtual de aprendizagem e confira a aula referente a este
tema.
EM FOCO
NOVOS DESAFIOS
No decorrer deste tema, você aprendeu sobre indução matemática, tendo dois
temas de destaque: Princípio da indução matemática e Definição por recorrência.
Após o conhecimento adquirido ao longo deste tema, você deve lembrar
que, no início deste estudo, na seção, inicie sua jornada, falamos sobre a se-
quência de Fibonacci.
É possível provar ela pela indução matemática. Já vimos em dois algoritmos
no decorrer do tema como fazer a prova, ou seja, P(n) = P(n + 1).
Na área de computação, você pode utilizar na sua vida profissional o algorit-
mo a seguir, na programação Python, para obter qualquer termo da sequência de
Fibonacci. Você pode gerar este algoritmo em outras linguagens de programação,
como o C e o Java, bastando apenas fazer adaptações.
Lembrando da sequência de Fibonacci e considerando a sequência a partir
do 1, temos: 1,1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ... Observamos que o
terceiro termo é 2 e o décimo termo é 55. Se você quiser saber o centésimo termo?
Seria complicado calcular manualmente. Então, você pode utilizar o algoritmo a
seguir, obtendo rapidez e precisão.
1
5
1
print(‘Sequência de Fibonacci – Sequência de Fibonacci.’)
print(‘Considere a sequência de Fibonacci a partir do 1.’)
n = int(input(“Qual termo desejas? “))
ult=1
pen=1
print(‘Sequência de Fibonacci – Sequência de Fibonacci.’)
if (n==1) or (n==2):
print(“1”)
else:
for count in range(2,n):
ter = ult + pen
pen = ult
ult = ter
count += 1
print(ter)
print(‘Sequência de Fibonacci – Sequência de Fibonacci.’)
Nesse algoritmo, foi utilizado importantes elementos do dia a dia da programa-
ção, como o if, else, for e o in. O n define a posição do número; ult, último; pen,
penúltimo; e ter, termo.
Ao executar o programa, teremos:
Sequência de Fibonacci – Sequência de Fibonacci.
Considere a sequência de Fibonacci a partir do 1.
Qual termo desejas? 100
Sequência de Fibonacci – Sequência de Fibonacci.
354224848179261915075
Sequência de Fibonacci – Sequência de Fibonacci.
O número 354224848179261915075 é muito grande para ser calculado ma-
nualmente.
Podemos gerar algoritmos simples, mas extremamente funcionais com mui-
tas variáveis relacionadas em poucas fórmulas. As grandes vantagens dos algo-
ritmos é tornar a resolução matemática rápida e precisa.
UNIASSELVI
1
5
1
1. Uma das aplicações da recorrência, na indução matemática, é o fatorial.
Temos (n + 1)! = n!⋅(n + 1), se n ≥ 1.
Podemos criar, por meio da linguagem Python, um algoritmo para calcular o fatorial de
qualquer número.
O algoritmo a seguir é um exemplo.
print(‘*********************************************************’)
import math
n=int(input(‘Entre com o valor para o cálculo do fatorial:’))
print(math.factorial(n))
print(‘*********************************************************
Para o fatorial n!, temos n.(n – 1)!. Para o fatorial (n – 1)!, temos (n - 1). (n - 2)!. Como iríamos
gerar um algoritmo na linguagem Python para (n – 1)!? O n deve ser número natural positivo
maior que 1.
2. Considerando a sequência de números ímpares positivos (2n – 1), podemos criar, por meio
da linguagem Python, um algoritmo para calcular a posição de um número na sequência
de números. Por exemplo, para n = 3, teremos 5.
1, 3, 5, ... a partir de (2n – 1). Para n = 3, (2.3 – 1) = 5.
O algoritmo a seguir é um exemplo.
print(‘--------------------------------------------------------------------------’)
print(‘Exemplos de valores aplicados em P(n) = 2*n - 1.’)
print(‘n é um número natural positivo maior que 0.’)
print(‘P(n) é o número ímpar positivo.’)
print(‘--------------------------------------------------------------------------’)
AUTOATIVIDADE
1
5
4
n = int(input(‘Entre com o valor de n:’))
k = (2*n - 1)
print(‘O valor de P(n) será:’, k)
print(‘--------------------------------------------------------------------------’)
Considerando a sequência de números pares positivos divisíveis por 4, crie, por meio da
linguagem Python, um algoritmo para calcular a posição de um número na sequência de
números. O n deve ser número natural par positivo maior que 1.
3. A sequência de Fibonacci é uma sequência de números inteiros iniciados por zero e um, no
qual cada termo subsequente corresponde à soma dos dois números anteriores: 0,1, 1, 2,
3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ... Ela é encontrada na natureza. Exemplos: as espiraisdo girassol, o número de pétalas da margarida e a concha do caracol Nautilus.
Você pode utilizar o algoritmo a seguir, na linguagem Python, para obter qualquer termo da
sequência de Fibonacci.
print(‘Sequência de Fibonacci - Sequência de Fibonacci.’)
print(‘Considere a sequência de Fibonacci a partir do 1.’)
n = int(input(“Qual termo desejas? “))
ult=1
pen=1
print(‘Sequência de Fibonacci - Sequência de Fibonacci.’)
if (n==1) or (n==2):
print(“1”)
else:
for count in range(2,n):
ter = ult + pen
AUTOATIVIDADE
1
5
5
pen = ult
ult = ter
count += 1
print(ter)
print(‘Sequência de Fibonacci - Sequência de Fibonacci.’)
Considerando a sequência de Fibonacci, qual seria o termo 45?
a) 1134903170.
b) 12586269025.
c) 1548008755920.
d) 23416728348467685.
e) 354224848179261915075.
4. Os passos para realizar a demonstração pelo princípio da indução matemática seriam dois.
Considere o exemplo 2 + 4 + 6 + ··· + 2n = n(n + 1).
Verificaremos inicialmente que P(1) é válida.
Agora, vamos supor que P(n) é verdadeira para certo valor de n, somamos ambos os mem-
bros da igualdade por 2n + 2.
Logo P(n) ⇒ P(n + 1). Assim, pelo Princípio da Indução, a proposição P(n) vale para todo n ∈ Ν.
Podemos também testar vários valores no lugar de n e verificar as igualdades.
Considere a sequência 0 + 1 + 2 + ··· + n = n(n + 2)/2 . A aplicando a indução matemática, po-
demos afirmar:
I - Verificaremos inicialmente que P(0) é válida;
II - Verificaremos inicialmente que P(1) é válida; e
III - Verificaremos inicialmente que P(2) é válida.
É correto o que se afirma em:
AUTOATIVIDADE
1
5
1
a) I, apenas.
b) III, apenas.
c) I e II, apenas.
d) II e III, apenas.
e) I, II e III.
5. Um número primo tem apenas dois divisores, o número 1 e ele mesmo. No caso do número
20 não é um número primo, pois tem os divisores: 1, 2, 4, 5, 10 e 20.
O polinômio P(n) = n2 – n + 41 permite calcular números primos numa faixa de n = 1 até n = 40.
Na linguagem Python, podemos utilizar o seguinte algoritmo para P(n) = n2 – n + 41 e encon-
trar um número:
print(‘--------------------------------------------------------------------------’)
print(‘Exemplos de valores aplicados em P(n) = n**2 - n + 41.’)
print(‘n é um número natural positivo.’)
print(‘P(n) é o número obtido que pode ser ou não primo.’)
print(‘--------------------------------------------------------------------------’)
n = int(input(‘Entre com o valor de n:’))
k = (n**2 -n +41)
print(‘O valor de P(n) será:’, k)
print(‘--------------------------------------------------------------------------’)
No polinômio P(n) = n2 – n + 41, com n = 35, obtemos um número que pode ser primo ou não.
Podemos utilizar um algoritmo na linguagem Python para P(n) = n2 – n + 41 e encontrar um
número para n = 35. Este é:
a) 1164 e é primo.
b) 1231 e é primo.
c) 1231 e não é primo.
d) 1373 e não é primo.
e) 1601 e não é primo.
AUTOATIVIDADE
1
5
1
REFERÊNCIAS
ABBAGNANO, N. Dicionário de filosofia. São Paulo: Martins Fontes, 2003.
FONSECA, R. V. Teoria dos números. Belém: UEPA, 2011.
HEFEZ, A. Iniciação à aritmética. Rio de Janeiro: Sociedade Brasileira de Matemática, 2009.
HEFEZ, A. Aritmética. Rio de Janeiro: Sociedade Brasileira de Matemática, 2016.
PITZER, L. C.; SANTOS, L. G. dos. Aritmética e teoria dos números. Indaial: Uniasselvi, 2020.
1
5
8
1. Analisando as informações no algoritmo a seguir, bastava substitui n por n – 1.
print(‘*********************************************************’)
import math
n=int(input(‘Entre com o valor para o cálculo do fatorial:’))
print(math.factorial(n - 1))
print(‘*********************************************************’)
Se utilizarmos como entrada o valor 4, teremos 3! na resolução. O valor será 6.
(n + 1)! = n!⋅(n + 1), se n ≥ 1.
2. Analisando as informações no algoritmo a seguir, bastava utilizar (2n) como fórmula base e
realizar os ajustes nas linhas.
print(‘--------------------------------------------------------------------------’)
print(‘Exemplos de valores aplicados em P(n) = (2*n).’)
print(‘n é um número natural par positivo maior que 1.’)
print(‘P(n) é o número par positivo divisível por 4.’)
print(‘--------------------------------------------------------------------------’)
n = int(input(‘Entre com o valor de n:’))
k = (2*n)
print(‘O valor de P(n) será:’, k)
print(‘--------------------------------------------------------------------------’)
Se utilizarmos como entrada o valor 4, teremos 2.4 = 8.
(2n).
3 Opção A.
Aplicando no algoritmo, fazendo-o executar, teríamos:
print(‘Sequência de Fibonacci – Sequência de Fibonacci.’)
print(‘Considere a sequência de Fibonacci a partir do 1.’)
n = int(input(“Qual termo desejas? “))
ult=1
pen=1
print(‘Sequência de Fibonacci – Sequência de Fibonacci.’)
if (n==1) or (n==2):
print(“1”)
else:
for count in range(2,n):
ter = ult + pen
GABARITO
1
5
9
pen = ult
ult = ter
count += 1
print(ter)
print(‘Sequência de Fibonacci – Sequência de Fibonacci.’)
Sequência de Fibonacci – Sequência de Fibonacci.
Considere a sequência de Fibonacci a partir do 1.
Qual termo desejas? 45
Sequência de Fibonacci – Sequência de Fibonacci.
1134903170
Sequência de Fibonacci – Sequência de Fibonacci.
4 Opção A.
Os cálculos corretos seriam:
I. Verificaremos inicialmente que P(0) é válida; verdadeira.
0 = 0(0 + 2)/2 = 0
II. Verificaremos inicialmente que P(1) é válida; e Falso.
0 + 1 = 1(1 + 2)/2
1 ≠ 3/2
III. Verificaremos inicialmente que P(2) é válida. Falso.
0 + 1 + 2 = 2(2 + 2)/2
3 ≠ 4
0 + 1 + 2 + ··· + n = n(n + 2)/2.
5 Opção B.
Executando o algoritmo a seguir:
print(‘--------------------------------------------------------------------------’)
print(‘Exemplos de valores aplicados em P(n) = n**2 - n + 41.’)
print(‘n é um número natural positivo.’)
print(‘P(n) é o número obtido que pode ser ou não primo.’)
print(‘--------------------------------------------------------------------------’)
n = int(input(‘Entre com o valor de n:’))
k = (n**2 -n +41)
print(‘O valor de P(n) será:’, k)
print(‘--------------------------------------------------------------------------’)
Teremos para n = 35, P(35) =1231.
P(n) = n2 – n + 41.
GABARITO
1
1
1
MINHAS ANOTAÇÕES
1
1
1
MINHAS METAS
RELAÇÕES E FUNÇÕES
Identificar relações entre grandezas variáveis dadas por gráficos, tabelas e representação
algébrica na computação.
Compreender o conceito de função.
Analisar o domínio, o contradomínio e a imagem de uma função.
Identificar quando uma função é sobrejetiva, injetiva e bijetiva.
Analisar gráficos de função crescente e decrescente.
Compreender as funções inversa, composta, do primeiro e do segundo grau e modular.
Compreender as funções exponencial e logarítmica.
T E M A D E A P R E N D I Z A G E M 5
1
1
1
INICIE SUA JORNADA
Há situações do dia a dia em que necessitamos relacionar grandezas.
Como iríamos relacionar e representar graficamente uma compra em uma
feira de hortifruti envolvendo duas grandezas: o peso de maçãs com o valor das
frutas? Se o valor de 1 kg de maças vale 18,23 reais, quanto valeria 3 kg de maças?
Nesse caso simples, a relação entre as grandezas peso e valor pode ser feita
por uma regra de três simples ou uma função do primeiro grau. Neste exemplo,
poderíamos utilizar a função v p � � �18 23, , em que podemos dizer que v , o
valor, é função de p , peso.
Observe na Tabela 1 a seguir que podemos construir a partir da função
v p � � �18 23, .
Peso das
maças
1 2 3 4 5
Valor das
maças
18,23 36,46 54,69 72,92 91,15
Tabela 1 – Tabela relacionado peso das maças com o valor / Fonte: o autor.
Mesmo estando na feira, poderíamos fazer esses cálculos da Tabela 1 na calcula-
dora do celular. Também, por meio do celular, baixar um app chamado GeoGebra
e realizar a representação gráfica desta função v p � � �18 23, , permitindo uma
visão espacial dessa relação. Nográfico a seguir, o v é o y e o p é o x .
Observe o gráfico desta função desenvolvido no GeoGebra, Figura 1.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
3 4 5 6 7 81-1
-2
-4
-6
-8
2
2
4
6
8
10
12
14
16
18
Figura 1 – Valores de maças em função do peso das maças / Fonte: o autor.
Descrição da Imagem: a figura apresenta um gráfico da função afim. No eixo vertical, foi representado valores
das maças e, no eixo horizontal, peso das maças. Gerado no aplicativo GeoGebra com base na função (18,23)p.
Fim da descrição.
1
1
4
Em situações reais, podemos criar inúmeras funções práticas, como:
■ na meteorologia, relação de dia com a temperatura média;
■ na construção civil, relação de medida do lado de uma sala de apartamen-
to com o perímetro desta sala;
■ na física mecânica, relação da distância percorrida por um móvel com o
tempo gasto para percorrer esta distância;
■ nas aplicações financeiras, relação do montante obtido com o tempo de
aplicação, mediante uma taxa anual.
Neste podcast, você aprenderá sobre relações e funções, considerando funções
polinomiais, modulares, exponenciais e logarítmicas. Recursos de mídia disponí-
veis no conteúdo digital do ambiente virtual de aprendizagem.
PLAY NO CONHECIMENTO
VAMOS RECORDAR?
Para que você comece entendendo relações e funções, é importante uma revisão
geral sobre o plano cartesiano, dentro da relação entre dois conjuntos numéricos.
Sugiro a realização da atividade de localização de pontos no plano cartesiano no
algoritmo do GeoGebra (aplicativo de acesso livre), na seção material didático,
tema Plano cartesiano. Selecione a opção ponto e marque no papel quadriculado,
obtendo x y, � � . Recursos de mídia disponíveis no conteúdo digital do
ambiente virtual de aprendizagem.
Na próxima fase, será desenvolvido o tema Relações e funções, sendo que, inicial-
mente, falaremos sobre conceito de função, conceito de domínio, contradomínio
e imagem, tipos de função sobrejetiva, injetiva e bijetiva, e tipos de função cres-
cente e decrescente, complementando com funções pares e ímpares.
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 5
DESENVOLVA SEU POTENCIAL
RELAÇÕES E FUNÇÕES
A definição de função como uma relação entre duas variáveis, uma variável é
função da outra, y f x � � � , em que y é função de x , pois facilitará a com-
preensão das diversas representações de uma função. A capacidade de representar
e identificar o mesmo conceito em diferentes representações permite perceber
relações importantes e desenvolver uma compreensão profunda do conceito.
No estudo das funções, é necessário promover a distinção entre o conceito de
função e os seus diferentes tipos de representação (numérica, algébrica, gráfica).
O uso da representação gráfica tem um papel fundamental na compreen-
são de tal distinção. As conexões entre as representações gráficas e as expressões
algébricas trazem benefícios para a sua compreensão. Entende-se por gráfico
de uma função f o conjunto de todos os pares ordenados x y; � � , em que x
pertence ao domínio da função e y é a imagem correspondente, tal que a cada
x só corresponde um e um só y , podendo este ser ou não o mesmo que um
outro anterior. Os diferentes tipos de função possibilitam modelar diversas si-
tuações reais, servindo de aporte e ferramental matemático para compreensão
de fenômenos científicos.
Livro: Fundamentos de matemática elementar: conjuntos e
funções
Organizador: Carlos Murakami e Gelson Iezzi
Editora: Atual
Ano: 2019
Sobre o livro: a obra aborda a introdução ao conceito e os estu-
dos das funções polinomiais de 1º e 2º graus.
O capítulo final é muito importante para a continuação do es-
tudo de função inversa. Pode-se aproveitar o desenvolvimento
de cada capítulo para revisar cálculo algébrico, principalmente
em equações e inequações.
Este livro apresenta um aprofundamento no estudo de funções.
Os exemplos dados podem ser utilizados na área de programa-
ção, gerando algoritmos.
INDICAÇÃO DE LIVRO
1
1
1
NOÇÃO INTUITIVA DE FUNÇÃO
O conceito de função é um dos mais importantes da matemática, está presente
sempre que relacionamos duas grandezas variáveis.
Um dos exemplos é a numeração do sapato com o tamanho do seu pé. No
Brasil, os fabricantes utilizam a fórmula N C
�
�5 28
4
, em que c é o tamanho
do pé em centímetros e N é o número do calçado. N e C representam as variá-
veis, em que C é a variável independente e N é a variável dependente.
Observe a tabela na Figura 2 a seguir com algumas medidas de pés de 24 cm a 34 cm.
Tamanho do pé (cm)
N
ú
m
er
o
d
o
ca
lç
ad
o
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
24 26 28 30 32 34
Figura 2 – Tamanho do calçado em relação ao tamanho do pé
Fonte: Bonatti, Jenske e Pellizzaro (2015, p. 172).
Descrição da Imagem: a figura apresenta um gráfico no plano cartesiano relacionando o número do calçado, no
eixo vertical, com o tamanho do pé, no eixo horizontal. A função geradora deste gráfico é definida por
N C
�
�5 28
4
. Fim da descrição.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Para a obtenção dos valores do eixo vertical, y N = , utilizamos a fórmula
N C
�
�5 28
4
em função dos valores do eixo horizontal, x c = . Podemos ge-
rar um algoritmo na linguagem de programação Python para fazer os cálculos de
maneira rápida e precisa. Este algoritmo pode ser testado em outras linguagens
de programação, como o C e o Java, bastando apenas fazer adaptações.
Você pode entrar com qualquer valor inteiro ( x = int(input()). Se entrar com x =
26 cm, teremos 39,5. Teste outros valores de 24 a 34 cm e verifique no eixo vertical.
print(‘%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%’)
print(‘Função definida pela fórmula y = (5x + 28)/4, Tamanho do calçado em relação
ao tamanho do pé.’)
x=int(input(‘Entre com o tamanho do pé em cm:’))
print(‘%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%’)
y = (5*x + 28)/4
print(‘O tamanho do calçado será:’, y)
print(‘%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%’)
Ao executar o algoritmo, teremos para 26 cm:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Função definida pela fórmula y = (5x + 28)/4, Tamanho do calçado em relação ao
tamanho do pé.
Entre com o tamanho do pé em cm: 26
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
O tamanho do calçado será: 39.5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
APROFUNDANDO
DOMÍNIO, CONTRADOMÍNIO E CONJUNTO IMAGEM
Dada uma função f de A em B , o conjunto A chama-se domínio da função
e o conjunto B contradomínio da função. Para cada x A∈ , o elemento y B∈
chama-se imagem de x pela função.
Domínio: é o conjunto de valores de x para os quais a função é possível.
Contradomínio: é o conjunto dos valores possíveis de y .
Imagem: são valores contidos no contradomínio.
Em uma função f de A em B , usamos a indicação: f A B: → ou
x y f x� � ( ) .
1
1
8
Por exemplo:
Dados os conjuntos:
A � � �0 1 2 3, , , e B � � �0 1 2 3 4 5 6, , , , , , , considerando que x A∈
e 2x B∈ .
Solução:
Para compreendermos, vamos classificar domínio, contradomínio e imagem.
Domínio: conjunto A .
Contradomínio: conjunto B .
Imagem: a lei de correspondência por f x x� � � 2 , assim, a
Im f� � � �� 0 2 4 6, , , .
Dessa forma, após analisarmos o domínio, o contradomínio e a imagem de
uma função, podemos dar o conceito matemático de uma função:
Se x A∈ e y B∈ são duas variáveis, dizemos que ( ) f x é uma função de A
em y ou uma função y , se:
Todos os elementos A de A estão envolvidos na relação; e
Para cada elemento y B∈ existe um único elemento y B∈ que lhe corresponde.
Observe pelo exemplo anterior que a primeira condição seria o conjunto
A � � �0 1 2 3, , , ou domínio. A segunda condição, para f x x� � � 2 , seria
todos os elementos de A gerando Im f� � � �� 0 2 4 6, , , .
Para melhor entender o exemplo anterior, sugiro a realização da atividade no al-
goritmodo GeoGebra (aplicativo de acesso livre), na seção material didático, tema
Cópia de diagrama Venn: domínio – imagem. Basta deslocar o ponto no eixo do
domínio que o algoritmo em função de y = 2x gera o ponto no eixo da imagem. Re-
cursos de mídia disponíveis no conteúdo digital do ambiente virtual de apren-
dizagem.
EU INDICO
A representação gráfica das funções pode ser feita de maneira eficiente por meio
do aplicativo GeoGebra. Abra o GeoGebra no seu computador. Escolha a op-
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 5
ção iniciar calculadora. Abrirá um plano cartesiano com papel quadriculado ao
fundo. No canto superior esquerdo, na opção +, ao lado, coloque para o exemplo
y x � 3 1- , somente 3 1x − .
Teremos o gráfico a seguir, Figura 3:
Figura 3 – Gráfico da função y x � 3 1- no aplicativo GeoGebra / Fonte: o autor.
Descrição da Imagem: a figura apresenta um gráfico no plano cartesiano relacionando o número do eixo
y , eixo vertical, com o número no eixo x , eixo horizontal. A função geradora deste gráfico é definida por
y x � 3 1- . Fim da descrição.
Também é possível usar no seu celular o App calculadora gráfica GeoGebra.
Para complementar o entendimento do gráfico, você pode usar o algoritmo
anterior, eu indico. Substituindo por 3 1x - , no canto superior esquerdo, tere-
mos, Figura 4:
1
1
1
Figura 4 – Cópia do diagrama de Venn função y = 3x – 1 no aplicativo GeoGebra / Fonte: o autor.
Descrição da Imagem: a figura apresenta a cópia do diagrama de Venn relacionando o número do eixo x, domínio,
com o número no eixo y, imagem. A função geradora neste diagrama é definida por y = 3x – 1. Fim da descrição.
Analisando o gráfico e o diagrama das Figuras 3 e 4, teremos, por exemplo:
f x
f x
f
1 3 1 3 1 1 4
0 3 1 3 0 1 1
1
3 1 3 1 1 2
2 3 1 3 2 1 5
x
f x
-
-
-
-
-
-
-
-
Domínio: { -1, 0, 1, 2}
Imagem: {-4, -1, 2, 5}
Há a possibilidade de construirmos os gráficos de forma digital em outros apli-
cativos, como o Winplot. Recursos de mídia disponíveis no conteúdo digital do
ambiente virtual de aprendizagem
EU INDICO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
FUNÇÃO INJETIVA, SOBREJETIVA E BIJETIVA
Uma função é injetiva quando elementos diferentes de A são transformados por
uma função em elementos diferentes de B , ou seja, não há elemento em B que
seja imagem de mais de um elemento em A .
( ) ( )1 2 1 2 x x em A f x f x em B≠ → ≠
No último exemplo, temos um caso de função injetiva.
f f f f1 4 0 1 1 2 2 55
Uma função é sobrejetiva quando, para qualquer elemento y B∈ , pode-se en-
contrar um elemento x A∈ tal que f x y� � � . Quando todo elemento de B
é imagem de pelo menos um elemento de A .
Im f B� � �
No último exemplo, temos também um exemplo de função sobrejetiva, conside-
rando f : � → . O conjunto dos números reais é representado por .
Uma função é bijetiva se ela for, simultaneamente, injetiva e sobrejetiva.
Quando isso ocorre dizemos que há uma bijeção entre A e B .
A função dada por f x x 3 11- é bijetiva, pois ela é simultaneamente
injetiva e sobrejetiva.
x x em A f x f x em B e Im f B1 2 1 2� � � �� � � � � � �
VOCÊ SABE RESPONDER?
A função y x � 2 1- é uma função injetiva ou sobrejetiva para f : � →
(domínio → imagem)?
1
1
1
FUNÇÃO CRESCENTE E FUNÇÃO DECRESCENTE
Consideremos a função do 1º grau y x � 2 22- . Vamos atribuir valores cada
vez maiores a x e observar o que ocorre com y .
Para a obtenção dos valores de y , utilizamos a fórmula y x � 2 2- em
função dos valores de x . Podemos gerar um algoritmo na linguagem de pro-
gramação Python para fazer os cálculos de cinco valores: -2, -1, 0, 1 e 2. Este
algoritmo pode ser testado em outras linguagens de programação, como o C e o
Java, bastando apenas fazer adaptações.
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Função definida pela fórmula y = 2*X - 2’)
y1 = 2*(-2) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = 2*X - 2 para x = -2:’, y1)
y2 = 2*(-1) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = 2*X - 2 para x = -1:’, y2)
y3 = 2*(0) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = 2*X - 2 para x = 0:’, y3)
y4 = 2*(1) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = 2*X - 2 para x = 1:’, y4)
y5 = 2*(2) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = 2*X - 2 para x = 2:’, y5)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
Ao executar o algoritmo, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Função definida pela fórmula y = 2*X - 2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = 2*X - 2 para x = -2: -6
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = 2*X - 2 para x = -1: -4
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = 2*X - 2 para x = 0: -2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = 2*X - 2 para x = 1: 0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = 2*X - 2 para x = 2: 2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Notem que, quando aumentamos o valor de x , os correspondentes valores de
y também aumentam. Dizemos, então, que a função y x � �2 2 é crescente.
Consideremos a função do 1º grau y x 2 2- 2 . Vamos atribuir valores
cada vez maiores a x e observar o que ocorre com y .
Para a obtenção dos valores de y , utilizamos a fórmula y x 2 2- 2
em função dos valores de x . Podemos gerar um algoritmo na linguagem de
programação Python para fazer os cálculos de cinco valores: -2, -1, 0, 1 e 2. Este
algoritmo pode ser testado em outras linguagens de programação, como o C e o
Java, bastando apenas fazer adaptações.
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Função definida pela fórmula y = -2*X - 2’)
y1 = -2*(-2) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = -2*X - 2 para x = -2:’, y1)
y2 = -2*(-1) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = -2*X - 2 para x = -1:’, y2)
y3 = -2*(0) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = -2*X - 2 para x = 0:’, y3)
y4 = -2*(1) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = -2*X - 2 para x = 1:’, y4)
y5 = -2*(2) - 2
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Valor de y obtido em y = -2*X - 2 para x = 2:’, y5)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
1
1
4
Ao executar o algoritmo, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Função definida pela fórmula y = -2*X - 2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = -2*X - 2 para x = -2: 2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = -2*X - 2 para x = -1: 0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = -2*X - 2 para x = 0: -2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = -2*X - 2 para x = 1: -4
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valor de y obtido em y = -2*X - 2 para x = 2: -6
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Notem que, quando aumentamos o valor de x , os correspondentes valores de y
diminuem. Dizemos, então, que a função y x � � �2 2 é decrescente.
Resumindo, temos:
a função do 1º grau f x ax b� � � � é crescente quando o coeficiente de x é
positivo (a > 0);
a função do 1º grau f x ax b� � � � é decrescente quando o coeficiente de
x é negativo (a < 0).
VOCÊ SABE RESPONDER?
Se você representar as funções y x � 2 2- 2 e y x 2 2- na
calculadora gráfica do GeoGebra, há um ponto comumde cruzamento das duas
retas no eixo y . Qual o valor numérico deste ponto?
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 5
FUNÇÃO PAR E FUNÇÃO ÍMPAR
Uma função f x� � é chamada função par quando � � � �x D f , domínio de
f x� � , temos f x f x� � � �� � .
Portanto, numa função par, elementos simétricos possuem a mesma imagem.
Uma consequência desse fato é que os gráficos cartesianos das funções pares são
curvas simétricas em relação ao eixo y ou eixo das ordenadas.
Dizemos que dois pontos são simétricos em relação a uma reta fixa, quando
um é a imagem espelhada do outro em relação a essa reta. Essa reta fixa é chamada
de eixo de simetria.
Por exemplo:
A função y x � �2 2 é uma função par, pois ��R , temos f x f x� � � �� �
Para f � � � � � � �� � � �2 2 2 4 2 62
Para f 2 2 2 4 2 62� � � �� � � � �
Logo, f f� �� � � �2 2 , função par.
Abra o GeoGebra no seu computador. Escolha a opção iniciar calculadora.
No canto superior esquerdo, na opção +, ao lado, coloque para o exemplo
y x � �2 2 , somente x2 2+ . Teremos o gráfico a seguir, Figura 5:
Figura 5 – Gráfico da função y = x2 + 2, no aplicativo GeoGebra / Fonte: o autor.
Descrição da Imagem: a figura apresenta um gráfico no plano cartesiano relacionando o número do eixo y, eixo
vertical, com o número no eixo x, eixo horizontal. A função geradora deste gráfico é definida por y = x2 + 2. Fim
da descrição.
1
1
1
Nesse gráfico, gerado pelo aplicativo GeoGebra, temos o eixo y sendo o eixo de
simetria da função.
Uma função f x� � é chamada função ímpar quando � � � �x D f , domínio
de f x� � , temos f x f x - .
Assim, numa função ímpar, elementos simétricos possuem imagens simétri-
cas. Uma consequência desse fato é que os gráficos cartesianos das funções ím-
pares são curvas simétricas em relação à origem do sistema de eixos cartesianos,
ou seja, em relação ao ponto de coordenadas (0, 0).
O exemplo y x � 3 1- , visto na Figura 3, é um exemplo de função ímpar.
Analise também os dados do domínio e da imagem da Figura 4.
Quando uma função não assume as características de uma função par ou de uma
função ímpar, dizemos que ela não possui paridade. Uma função cuja represen-
tação gráfica não é simétrica em relação ao eixo y ou em relação à origem do
sistema cartesiano não é nem par, nem ímpar.
PENSANDO JUNTOS
Na próxima fase, será desenvolvido o tema Tipos de funções, nele haveremos
de estudar funções inversa, composta, do primeiro e do segundo grau, modular,
exponencial e logarítmica.
Resumo de relações e funções.
Uma função é definida matematicamente da seguinte forma: Se x A∈ e y B∈
são duas variáveis, dizemos que f x� � é uma função de A em B ou uma função
y, se:
Todos os elementos x de A estão envolvidos na relação.
Para cada elemento x A∈ , existe um único elemento y ∈ B que lhe corresponde.
Dada uma função f de A em B , o conjunto A chama-se domínio da função
e o conjunto B contradomínio da função. Para cada x A∈ , o elemento y B∈
chama-se imagem de x pela função.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Uma função é injetiva quando elementos diferentes de A são transformados por
uma função em elementos diferentes de B .
Uma função é sobrejetiva quando, para qualquer elemento y B∈ , pode-se
encontrar um elemento x A∈ tal que f x y� � � .
Uma função é bijetiva se ela for, simultaneamente, injetiva e sobrejetiva.
a função do 1º grau f x ax b� � � � é crescente quando o coeficiente de x é
positivo (a > 0).
a função do 1º grau f x ax b� � � � é decrescente quando o coeficiente de
x é negativo (a < 0).
Uma função f x� � é chamada função par quando � � � �x D f , domínio de
f x� � , temos f x f x - .
Uma função f(x) é chamada função ímpar quando ∀ x ∈� D(f), domínio de f(x), temos
f(x) = - f(–x).
TIPOS DE FUNÇÕES
Nesse tema, propomos um estudo sobre os tipos de funções mais utilizadas no
dia a dia. Sugiro que, a cada tipo de função explicada, você faça sempre uso da
calculadora gráfica do GeoGebra, para melhor visualizar a função estudada.
1
1
8
FUNÇÃO INVERSA
Dada uma função bijetiva, denomina-se função inversa de f a função g ou
� :f x B1 � � tal que, se f a b� � � , então g b a� � � , com a A∈ e b B∈ .
Por exemplo:
Dada a função f x x� � � � � 3 5 . Vamos determinar a função inversa
f x� � �1 .
y x � � �3 5
Vamos trocar o y pelo x e x por y.
x y y x y x � � � � � � � � �
� �3 5 3 5 5
3
� �
Vamos testar alguns valores.
Para x = 1 em y x � � �3 5 , temos y � � � � � � �3 1 5 3 5 2. .
Para x = 2 em
� y x
�
� � 5
3
, temos
� y � � �
�
2 5
3
1
Logo, f 1 2� � � , então f � � � �1 2 1 .
Livro: Cálculo
Organizador: Howard Anton, Irl C. Bivens, Stephen L. Davis e
Claus Ivo
Editora: Bookman
Ano: 2014
Sobre o livro: a obra aborda tipos de funções de maneira obje-
tiva, com muitos exemplos resolvidos.
Com pedagogia eficaz, representações visuais e o estabele-
cimento da relação com o mundo real e com a própria expe-
riência do aluno (nos exemplos e exercícios), buscando a com-
preensão sem sacrificar a precisão matemática.
Nesta edição, foram introduzidos novos conjuntos de exercí-
cios, que ajudarão os alunos a melhorarem a sua resolução de
problemas pela prática.
INDICAÇÃO DE LIVRO
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 5
FUNÇÃO COMPOSTA
Dadas as funções f A B: → e g B C: → , denominamos função composta
de g e f a função g f A C : → , que é definida por ( )� g f x g f x � � � �� ��
, x A∈ .
( )� g f x � � lê-se g composta em f.
Por exemplo: sejam f x x� � � � 2 1 e g x x� � � � 2 . Determinar
f g x º� � � � e g f x º� �� � .
f g x f x x x x x x º �� � � � � � � �� � � � � � � � � �2 2 1 4 4 1 42 2 2 �� 3
g f x g x x x x º� �� � � � � �� � � � � � � � � �2 2 2 21 1 2 1 2 1 .
Para melhor entender o exemplo anterior, sugiro a realização da atividade no al-
goritmo do GeoGebra (aplicativo de acesso livre), na seção material didático, tema
Cópia de função inversa. Analise no gráfico a função y ax b � � com sua
inversa. Recursos de mídia disponíveis no conteúdo digital do ambiente virtual
de aprendizagem
EU INDICO
Para melhor entender o exemplo anterior, sugiro a realização da atividade no al-
goritmo do GeoGebra (aplicativo de acesso livre), na seção material didático, tema
Função composta. Digite as funções do exemplo anterior na parte superior direita
e veja os resultados graficamente. Recursos de mídia disponíveis no conteúdo
digital do ambiente virtual de aprendizagem
EU INDICO
FUNÇÃO AFIM
Uma função chama-se função afim ou do primeiro grau quando existem dois
números reais a e b tal que f x ax b� � � � , para todo x ∈� , com a ≠ 0 e
b ≠ 0 .
1
8
1
Observações sobre a função afim:
■ se a = 0, teremos uma função constante, ou seja, f x b� � � ;
■ se b = 0, teremos uma função linear, ou seja, f x ax� � � ;
■ a é chamado de coeficiente angular ou declive da reta representada no
plano cartesiano. O coeficiente angular a pode ser interpretado como a
variação de y, correspondente à variação de uma unidade para x a partir
de qualquer ponto da reta;
■ b é chamado de coeficiente linear da função. O coeficiente linear b cor-
responde à ordenada, ponto no qual a reta corta o eixo y (intercepto y),
isto é, (0, b);
■ o ponto dado por ( / , )− b a 0 , cuja reta corta o eixo das abscissas, é cha-
mado de intercepto x;
■ a função é crescente se a > 0 e decrescente se a < 0;
■ a função é identificada por uma reta no plano cartesiano.
Há funções do primeiro grau que aparentemente são iguais, porém se diferenciam
pelo sinal do coeficiente angular e linear. Utilizaremos o GeoGebra e geraremos
quatro funções parecidas, mas distintas algébrica e graficamente, Figura 6.
Funções:
f x x� � � � 2 2 � g x x� � � 2 2� h x x� � � � � 2 2 �
p x x� � � � � 2 2
Podemos observar que:
■ As funções f x� � e g x� � sãofunções crescentes, as retas passam pelo
primeiro e terceiro quadrantes, pois o a > 0.
■ As funções h x� � e p x� � são funções decrescentes, as retas passam pelo
segundo e quarto quadrantes, pois o a < 0.
■ As funções f x� � e h x� � se cruzam no mesmo ponto (0,2), pois apresen-
tam o mesmo coeficiente linear.
■ As funções g x� � e p x� � se cruzam no mesmo ponto (0,-2), pois apre-
sentam o mesmo coeficiente linear.
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 5
Figura 6 – Gráficos das funções f(x), g(x), h(x) e p(x) no aplicativo GeoGebra / Fonte: o autor.
Descrição da Imagem: a figura apresenta quatro funções do primeiro grau, f(x), g(x), h(x) e p(x). As retas se
diferenciam pelos valores e sinais dos coeficientes angulares e lineares. Fim da descrição.
Um dos importantes postulados da geometria plana diz: dois pontos distintos
determinam uma reta. De acordo com esse postulado, a construção do gráfico
de uma função do 1º grau é feita obtendo-se dois de seus pontos distintos e tra-
çando-se a reta determinada por eles.
Primeiramente, observamos o seu coeficiente linear e marcamos este valor
no eixo y, ou seja, (0,b). Depois, calculamos a raiz da função ou zero da função,
ou seja, (-b/a, 0).
Por exemplo:
Para função f x x� � � � 2 2 , temos para o eixo y o ponto (0,2). Para o
eixo x, fazemos 2 2 0 2 2 1x x x � � � � � � � �� � e, para o eixo x, temos
o ponto (-1,0). Traçamos a reta entre esses dois pontos. Observe a função f x� �
na Figura 6.
1
8
1
É possível determinar, também, a lei de formação de uma função afim se
conhecidos dois pontos distintos dessa função. Para determinar a lei de formação
de uma função afim y ax b � � , faz-se necessário encontrar os coeficientes
que definem esse tipo de função, ou seja, a e b.
Podemos gerar um algoritmo na linguagem de programação Python para calcular
os valores de a e de b, a partir de dois pontos definidos. Este algoritmo pode ser
testado em outras linguagens de programação, como o C e o Java, bastando ape-
nas fazer adaptações.
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Obter os coeficientes a e b de uma Função y = a*x + b’)
print(‘Por meio de dois pontos (x1, y1) e (x2, y2)’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
x1=int(input(‘Entre com o valor de x do primeiro ponto: ‘))
x2=int(input(‘Entre com o valor de x do segundo ponto: ‘))
y1=int(input(‘Entre com o valor de y do primeiro ponto: ‘))
y2=int(input(‘Entre com o valor de y do segundo ponto: ‘))
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
a = (y2-y1)/(x2-x1)
b = - a*x1 + y1
print(‘O valor de a da Função será:’, a)
print(‘O valor de b da Função será:’, b)
print(f’{a}x + {b}’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
Vamos entrar com os pontos (2,3) e (4,5) pela função input() do Python.
O algoritmo irá gerar os valores de a e de b pelas fórmulas a = (y2-y1)/(x2-x1) e b
= - a*x1 + y1.
O comando print(f’{a}x + {b}’) irá imprimir a lei de formação da função afim.
Ao executar o algoritmo, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Obter os coeficientes a e b de uma Função y = a*x + b
Por meio de dois pontos (x1, y1) e (x2, y2)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Entre com o valor de x do primeiro ponto: 2
Entre com o valor de x do segundo ponto: 4
Entre com o valor de y do primeiro ponto: 3
Entre com o valor de y do segundo ponto: 5
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
O valor de a da Função será: 1.0
O valor de b da Função será: 1.0
1.0x + 1.0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APROFUNDANDO
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 5
FUNÇÃO QUADRÁTICA
Uma função quadrática ou função do segundo grau é qualquer função f de
em dada por uma lei da forma f x x x� � � � � a b c2 , em que, a, b e c são
números reais e a ≠ 0 .
Observações sobre a função do segundo grau:
■ a é o coeficiente de x2 ;
■ b é o coeficiente de x. Se b = 0 e c for negativo, teremos raízes reais simé-
tricas;
■ c é o termo independente e define o ponto de corte da curva da função
com o eixo y, ou seja, (0, c);
■ se c = 0, termos uma raiz nula;
■ a função é identificada por uma curva, parábola, no plano cartesiano;
■ as raízes da função definem os pontos de corte da curva com o eixo x, ou
seja, (x,0);
■ se a>0 a concavidade da parábola será para cima. Se a<0 a concavidade
da parábola será para baixo;
■ D é discriminante, em que D � �b ac2 4 . D > 0 significa que temos
duas raízes reais distintas. D = 0 significa que temos duas raízes reais
iguais. D < 0 significa que não temos raízes reais;
■ fórmula de Bhásskara ou fórmula resolvida permite calcular as raízes da
função x e x� � �� � , em que
x b b ac
a
�
� � �2 4
2
;
■ as coordenadas do vértice da parábola são definidas por
( ; )
� ��b
a a2 4 . Se
a>0, o y do vértice é o valor mínimo da função. Se a<0, o y do vértice é o
valor máximo da função.
VOCÊ SABE RESPONDER?
Para a função f x x 3 -6 , você sabe dizer qual o ponto de corte da
reta com o eixo x e o ponto de corte da reta com o eixo y?
1
8
4
Para melhor entender inicialmente a função do segundo grau, sugiro que teste
vários valores nos controles deslizantes de a, b e c da atividade no algoritmo do
GeoGebra (aplicativo de acesso livre), na seção material didático, tema Função do
segundo grau. Ao manipular os controles deslizantes, crie vários tipos de funções
do segundo grau graficamente.
EU INDICO
Podemos criar um algoritmo na linguagem de programação Python para calcular
os valores das raízes reais de uma função do segundo grau. Este algoritmo pode
ser testado em outras linguagens de programação, como o C e o Java, bastando
apenas fazer adaptações.
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Obter as raízes de uma Função y = a*x**2 + b*x + c.’)
print(‘Por meio dos coeficientes a,b e c.’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
a=int(input(‘Entre com o valor de a: ‘))
b=int(input(‘Entre com o valor de b: ‘))
c=int(input(‘Entre com o valor de c: ‘))
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
d = (b**2 - 4*a*c)
x1 = (-b+d**(0.5))/(2*a)
x2 = (-b-d**(0.5))/(2*a)
print(‘Se o discriminante for maior que zero, teremos raízes reais distintas.’)
print(‘Se o discriminante for igual a zero, teremos raízes reais iguais.’)
print(‘Se o discriminante for menor que zero, não teremos raízes reais.’)
print(‘A função será:’)
print(f’{a}x**2 + {b}x + {c}’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘As raízes serão:’, x1,’e’, x2)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’)
A função do Python input() permite entrar com os valores dos coeficientes a, b e c.
O discriminante é definido pela fórmula d = (b**2 - 4*a*c).
Não use vírgula, mas ponto, ou seja, não use 0,5, mas 0.5. Não temos como utilizar
em programação raiz quadrada de forma direta. Usamos **(0.5).
As fórmulas de Bhaskara serão: x1 = (-b+d**(0.5))/(2*a) e x2 = (-b-d**(0.5))/(2*a).
O comando print(f’{a}x**2 + {b}x + {c}’) irá imprimir a lei de formação da função do
segundo grau.
APROFUNDANDO
UNIASSELVI
1
8
5
TEMA DE APRENDIZAGEM 5
Observe que o algoritmo gera valores muito precisos das raízes reais.
Teste vários valores de a, b e c para obter raízes da função do segundo grau.
Por exemplo, teste a=1, b=-5 e c=6.
Ao executar o algoritmo, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Obter as raízes de uma Função y = a*x**2 + b*x + c.
Por meio dos coeficientes a,b e c.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Entre com o valor de a: 1
Entre com o valor de b: -5
Entre com o valor de c: 6
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Se o discriminante for maior que zero, teremos raízes reais distintas.
Se o discriminante for igual a zero, teremos raízes reais iguais.
Se o discriminante formenor que zero, não teremos raízes reais.
A função será:
1x**2 + -5x + 6
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
As raízes serão: 3.0 e 2.0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APROFUNDANDO
Para uma aplicação das funções do segundo grau no dia a dia, sugiro que você
leia o artigo Uso da função quadrática em criptografia, disponível no Google Aca-
dêmico. Recursos de mídia disponíveis no conteúdo digital do ambiente virtual
de aprendizagem.
EU INDICO
Para finalizarmos este tema, observe o quadro-resumo para o sinal de a e os
valores de D nos gráficos das funções quadráticas, Figura 7.
1
8
1
FUNÇÃO MODULAR
O que caracteriza uma função modular é que seu conjunto imagem é sempre
constituído por valores positivos, gerando um gráfico com pontos pertencentes
exclusivamente ao 1º e 2º quadrante.
O módulo ou valor absoluto de um número real x, que se indica por | x |, é
definido da seguinte maneira:
x se x, � ≥ 0
|x| =
� �x se x, 0
Por exemplo:
Se x é positivo ou zero, | x | é igual ao próprio x.
| 2 | = 2
Se x é negativo, | x | é igual a - x.
| - 2 | = 2
Figura 7 – Resumo gráficos das funções quadráticas em função de a e de D / Fonte: Bonatti, Jenske e
Pellizzaro (2015, p. 212).
Descrição da Imagem: a figura apresenta seis gráficos de funções do segundo grau. Cada gráfico se comporta
de acordo com o sinal de a e com o sinal ou valor de D . Fim da descrição.
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 5
Chamamos de função modular a função f(x) = |x| definida por:
x se x, � ≥ 0
f(x) =
� �x se x, 0
Abra o GeoGebra no seu computador. Escolha a opção iniciar calculadora. No
canto superior esquerdo, na opção +, ao lado, coloque para o exemplo y = | x |,
somente | x |. Teremos o gráfico a seguir, Figura 8:
Figura 8 – Gráfico da função no aplicativo GeoGebra / Fonte: o autor.
Descrição da Imagem: a figura apresenta um gráfico no plano cartesiano relacionando o número do eixo y, eixo
vertical, com o número no eixo x, eixo horizontal. A função geradora deste gráfico é definida por y = | x |. Fim
da descrição.
Nesse gráfico, observa-se que, para qualquer valor de x, seja positivo ou negativo,
teremos sempre valores positivos no eixo y.
1
8
8
FUNÇÃO EXPONENCIAL
A função exponencial expressa um crescimento ou um decrescimento caracte-
rístico de alguns fenômenos da natureza, bem como o funcionamento dos juros
compostos, importante na matemática financeira.
O crescimento exponencial, em alguns casos, pode ser vertiginoso. Em outros
momentos, pode tender lentamente a zero, sem nunca o atingir. A função expo-
nencial é fundamental para explicar numericamente desde fenômenos biológicos
até fenômenos físicos complexos, como a transmutação radioativa.
É qualquer função f : → (domínio → imagem) da forma f x ax� � �
, com a > 0 e a ≠ 1 .
VOCÊ SABE RESPONDER?
Gere no GeoGebra a função y x � �2 4 e diga qual o conjunto imagem para
� � x2 4 desta função.
Para você conhecer os dois tipos básicos de funções exponenciais, sugiro que
teste dois gráficos, as funções f x x� � � 2 e
f x x� � � ( )
1
2
, alterando os
valores nas tabelas à direta dos gráficos e observando o comportamento dos cur-
vas. Essa atividade é encontrada no algoritmo do GeoGebra (aplicativo de acesso
livre), na seção material didático, tema Função exponencial.
EU INDICO
Com base na atividade anterior no GeoGebra, podemos resumir a função expo-
nencial da seguinte forma:
Se a > 1, a função é crescente e se 0 < a < 1, a função será decrescente.
Os gráficos não intersectam o eixo x, pois as funções não se anulam, seja qual for o
valor de x.
UNIASSELVI
1
8
9
TEMA DE APRENDIZAGEM 5
Para uma aplicação real da função exponencial na matemática financeira, pode-
mos criar um algoritmo na linguagem de programação Python para calcular o
montante de juros compostos, fornecendo o valor do capital, a taxa de juros e o
tempo de aplicação.
Considere a fórmula do montante dos juros compostos como sendo
M c i t � �� �. 1 .
O M é uma função exponencial. O M é o montante, o c é o capital, o i é taxa de
juros e o t é o tempo de aplicação. O i se for dado em porcentagem, deve ser di-
vidido por 100 antes de ser colocado na fórmula. Este algoritmo pode ser testado
em outras linguagens de programação, como o C e o Java, bastando apenas fazer
adaptações.
print(‘$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$’)
print(‘Cálculo do montante de juros compostos.’)
print(‘$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$’)
c=int(input(‘Entre com o valor do capital: ‘))
i=float(input(‘Entre com o valor da taxa de juros mensal: ‘))
t=int(input(‘Entre com o valor do tempo em meses: ‘))
print(‘$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$’)
m = c*(1+(i/100))**t
print(‘O montante será de: ‘, m, ‘reais’)
print(‘$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$’)
A função float do Python irá permitir trabalhar com valores com parte decimal, ou
seja, números reais. Float representa números de ponto flutuante.
Se entrarmos com capital de 100 reais, a taxa de juros de 1% ao mês, durante 12
meses, ao executar o algoritmo, teremos:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Cálculo do montante de juros compostos.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Entre com o valor do capital: 100
Entre com o valor da taxa de juros mensal: 1
Entre com o valor do tempo em meses: 12
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
O montante será de: 112.68250301319698 reais
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
APROFUNDANDO
Os valores da função exponencial são todos positivos, qualquer que seja x.
A função exponencial de para *+ .
1
9
1
Para finalizarmos este tema, você pode relembrar algumas operações básicas da
potenciação.
a0 1= � ax > 0
a
a
x� �
1 a a ax y x y. � �
a a ax y x y: � = a ax y xy� � �
a b a bx x x . .� � �
FUNÇÃO LOGARÍTMICA
A função logarítmica é a função definida por f x log xa� � � , em que, a �∈
(reais), a > 0 e a ≠ 1 . A função logarítmica de base a é a inversa da função
exponencial de base a.
Para você conhecer os dois tipos básicos de funções logarítmicas, sugiro que ana-
lise dois gráficos, as funções f x log x� � � 2 e f x log x� � � 1 2/ , obser-
vando o comportamento das curvas. Essa atividade é encontrada no algoritmo do
GeoGebra (aplicativo de acesso livre), na seção material didático, tema Gráfico da
função logarítmica. Recursos de mídia disponíveis no conteúdo digital do am-
biente virtual de aprendizagem
EU INDICO
Com base na atividade anterior no GeoGebra, podemos resumir a função loga-
rítmica da seguinte forma:
Se a > 1, a função é crescente e se 0 < a < 1, a função será decrescente.
Os gráficos das funções logarítmicas sempre cortam o eixo x no ponto (1,0).
UNIASSELVI
1
9
1
TEMA DE APRENDIZAGEM 5
Quando a base é maior que 1, os números maiores que 1 têm logaritmos positivos e
os números entre 0 e 1 têm logaritmos negativos.
Quando a base é menor que 1, os números maiores que 1 têm logaritmos negativos
e os números entre 0 e 1 têm logaritmos positivos.
Você pode relembrar algumas operações básicas da potenciação.
loga 1 0= loga a = 1
log log loga a aAB A B� � log / log loga a aA B A B� �
log .loga
m
aA m A=
Se a = e (Número de Euler), a função logaritmo é chamada função logarítmica na-
tural e é notada por f x ln x� � � ou f x L x� � � �� .
PENSANDO JUNTOS
1
9
1
Na linguagem de programação Python, podemos utilizar a função do Python math.
log() para realizar cálculos com logaritmos.
Podemos gerar um algoritmo simples para obter os valores de log2x.
import math
print(‘-----’*10)
print(‘Cálculo do log de x na base 2’)
x=float(input(‘Entre com o valor de x: ‘))
print(‘O log será:’)
print(math.log2(x))
print(‘-----’*10)
O comando print(‘-----’*10) multiplicapor 10 na linha -----.
Se entrarmos com o valor de x = 100, teremos:
--------------------------------------------------
Cálculo do log de x na base 2
Entre com o valor de x: 100
O log será:
6.643856189774724
--------------------------------------------------
Mude no algoritmo a função math.log2(x) para math.log(x,2) e verifique que o re-
sultado é o mesmo.
Você pode trabalhar com qualquer base usando a função no Python math.log(x,
base).
Substitua no algoritmo a função math.log2(x) para math.log(x,10) e teste vários va-
lores.
APROFUNDANDO
VOCÊ SABE RESPONDER?
Você sabe calcular o valor de log1 168/ utilizando o algoritmo ensinado
anteriormente?
UNIASSELVI
1
9
1
TEMA DE APRENDIZAGEM 5
Resumo de tipos de funções.
Dada uma função bijetiva, denomina-se função inversa de f a função g ou
� :f x B� � �1 tal que, se f a b� � � , então g b a� � � , com a A∈ e
b B∈ .
Dadas as funções f A B: → e g B C: → , denominamos
função composta de g e f a função g f A C� : → , que é definida por
( )� , � g f x g f x x A � � � �� �� � .
Uma função chama-se função afim ou do primeiro grau quando existem dois
números reais a e b tal que f x ax b� � � � , para todo x ∈ com a ≠ 0
e b ≠ 0 .
Uma função quadrática ou função do segundo grau é qualquer função f de em
dada por uma lei da forma f x ax bx c� � � � � 2
, em que a, b e c são
números reais e a ≠ 0 .
Chamamos de função modular a função f x x� � � definida por: x, se x �≥ 0
e -x, se x < 0 .
Função exponencial é qualquer função f : → da forma f x ax� � � ,
com a > 0 e a ≠ 1 .
A função logarítmica é a função definida por f(x) = loga x , onde a ∈ ℝ, a > 0 e a ≠ 1.
Acesse seu ambiente virtual de aprendizagem e confira a aula referente a este
tema.
EM FOCO
1
9
4
NOVOS DESAFIOS
No decorrer deste tema, você aprendeu, no primeiro momento, sobre relações e fun-
ções. No segundo momento, teve a oportunidade de conhecer os tipos de funções.
Imagine que você queira abrir sua própria empresa de informática, porém
necessita de um empréstimo. As instituições financeiras vão dar duas opções:
juros simples, que tem comportamento de uma função afim, para curtos prazos,
de um a dois anos, e juros compostos, que tem comportamento de uma função
exponencial, para longos prazos, acima de dois anos.
A função afim para juros simples seria o montante em função do tempo, ou
seja, M1 = g(t). Considerando um capital de empréstimo de 10000,00, taxa de 7%
ao ano, teríamos M1 = 700.t + 10000. Considerando o tempo em anos.
A função exponencial para juros compostos seria também o montante em
função do tempo, ou seja, M2 = h(t). Considerando um capital de empréstimo
de 10000,00, taxa de 7% ao ano, teríamos M = 10000.(1,07)t. Considerando
o tempo em anos.
Para sua maior segurança, poderias criar um algoritmo no Python e fazer
simulações das duas funções e verificar qual a mais vantajosa.
print(‘&&&&&’*10)
print(‘Cálculo dos juros simples: ‘)
t=int(input(‘Entre com o valor do tempo em anos: ‘))
M1=700*t + 10000
print(‘O montante do juro simples será: ‘, M1)
print(‘&&&&&’*10)
print(‘Cálculo dos juros compostos: ‘)
M2=10000*(1.07)**t
print(‘O montante do juro composto será: ‘, M2)
print(‘&&&&&’*10)
Observe que a curto prazo, como um ano, os valores são idênticos:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Cálculo dos juros simples:
UNIASSELVI
1
9
5
TEMA DE APRENDIZAGEM 5
Entre com o valor do tempo em anos: 1
O montante do juro simples será: 10700
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Cálculo dos juros compostos:
O montante do juro composto será: 10700.0
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Entretanto, a longo prazo, como dez anos, os valores são distintos:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Cálculo dos juros simples:
Entre com o valor do tempo em anos: 10
O montante do juro simples será: 17000
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Cálculo dos juros compostos:
O montante do juro composto será: 19671.513572895663
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Nesses exemplos, podemos verificar que, nos empréstimos longos, as ins-
tituições financeiras irão utilizar os juros compostos, o que não seria uma boa
vantagem para o novo empresário.
Nesse contexto, verifica-se que, nos períodos muito longos, a função expo-
nencial faz aumentar a dívida de forma exponencial. A função afim, para perío-
dos curtos, torna a dívida menor.
Provavelmente, para você, seria interessante realizar um financiamento de
prazos intermediários, por exemplo, cinco anos.
As funções em conexão com a computação podem trazer muitos benefícios para
o usuário, principalmente em tomadas de decisões que envolve créditos financeiros.
1
9
1
1. Podemos criar funções do primeiro grau no nosso dia a dia, por exemplo: cálculo do valor
do combustível gasto por um veículo em função da distância percorrida.
A função seria definida por y = 0,53 . x, em que y representa o gasto em reais e o x a distância
em quilômetros.
O coeficiente angular seria 0,53, valor de combustível para um quilometro percorrido e o
coeficiente linear seria zero.
A linguagem de programação Python permite realizar este tipo de cálculo de maneira sim-
ples, bastando gerar a fórmula ou função e permitir a entrada do valor da distância.
Considerando a função y = 0,53 . x, em que y representa o gasto em reais e o x a distância
em quilômetros, para o cálculo do valor do combustível gasto por um veículo em função da
distância percorrida, elabore um algoritmo simples na linguagem Python utilizando a função
e entrada de valores de distância.
2. Um terremoto de 9 graus de magnitude na escala Richter atingiu o Japão em 2011. Os
terremotos originam-se do movimento de placas tectônicas. Os sismógrafos medem a am-
plitude e a frequência das vibrações de um terremoto. Utilizando uma função logarítmica,
pode-se calcular a intensidade de um terremoto. O gráfico de uma função logarítmica de
um terremoto pode ser gerado no aplicativo livre GeoGebra.
A intensidade I de um terremoto pode ser calculada pela seguinte fórmula: I = (2/3)log10(E/
E0), onde I varia de 0 a 9, E é a energia liberada em kW/h e E0 é 7 x 10-3 kW/h. Considerando
E/E0 = x, cujo valor de x são potencias de 10, podemos reduzir a função para I = (2/3) log10x.
Analisando esta função logarítmica, diga se ela é crescente ou decrescente. Justifique sua
resposta. Use o GeoGebra para representar esta função.
3. A função do segundo grau tem aplicações na área da economia, principalmente no cálculo
do lucro de uma empresa. Considerando a função L(x) = - x2 + 8x -7, no qual L(x) é o lucro
e o x é quantidade vendida de um certo produto, podemos representar esta função por
meio de um algoritmo na linguagem Python. No algoritmo a seguir, podemos determinar
os valores de x que tornam o lucro igual a zero.
print(‘Obter as raízes de uma Função y = a*x**2 + b*x + c.’)
print(‘Por meio dos coeficientes a,b e c.’)
AUTOATIVIDADE
1
9
1
a=int(input(‘Entre com o valor de a: ‘))
b=int(input(‘Entre com o valor de b: ‘))
c=int(input(‘Entre com o valor de c: ‘))
d = (b**2 - 4*a*c)
x1 = (-b+d**(0.5))/(2*a)
x2 = (-b-d**(0.5))/(2*a)
print(‘As raízes serão:’, x1,’e’, x2)
Analisando a função L(x) = - x2 + 8x -7, no qual L(x) é o lucro e o x é quantidade vendida de
um certo produto, os valores de x que tornam o lucro zero são:
a) 0 e -1.
b) 1 e 7.
c) -1 e -7.
d) 0 e 7.
e) -1 e 2.
4. As funções afim e exponencial podem ser utilizadas nas aplicações financeiras. O montante
dos juros simples é representado por uma função afim: M1 = 0,01.c.i.t + c. O montante dos
juros compostos é representado por uma função exponencial: M2 = c.(1+i/100)t. T é o tempo
em anos, c é o capital e i é a taxa ao ano em porcentagem. No algoritmo na linguagem
Python a seguir, podemos determinar os valores dos montantes.
print(‘ Cálculo dos juros simples e compostos’)
t=int(input(‘Entre com o valor do tempo em anos: ‘))
i=int(input(‘Entre com o valor dataxa em anos: ‘))
c=int(input(‘Entre com o valor do capital em reais: ‘))
M1=(0.01*c*i*t) + c
M2=c*(1+i/100)**t
AUTOATIVIDADE
1
9
8
print(‘O juro simples será: ‘, M1)
print(‘O juro composto será: ‘, M2)
Considerando as funções afim, montante de juros simples, e exponencial, montante de juros
compostos, podemos afirmar, utilizando o algoritmo na linguagem Python que calcula os
montantes:
I - Para uma aplicação de 10000 reais, a 6 % ao ano, em um ano de aplicação, os montantes
serão diferentes.
II - Para uma aplicação de 10000 reais, a 7 % ao ano, em cinco anos de aplicação, o montante
dos juros simples será maior que o montante dos juros compostos.
III - Para uma aplicação de 10000 reais, a 9 % ao ano, em cinco anos de aplicação, o montante
dos juros simples será menor que o montante dos juros compostos.
É correto o que se afirma em:
a) I, apenas.
b) III, apenas.
c) I e II, apenas.
d) II e III, apenas.
e) I, II e III.
5. Considerando uma função f de A em B, as funções injetivas ocorrem quando elementos
diferentes de A são transformados por uma função em elementos diferentes de B. As fun-
ções sobrejetivas ocorrem quando, para qualquer elemento y ∈ B, pode-se encontrar um
elemento x ∈ A tal que f(x) = y. As funções bijetivas ocorrem quando temos, simultanea-
mente, injetiva e sobrejetiva.
Analisando no GeoGebra a função f(x) = 5x + 4, podemos dizer que é uma função:
a) Bijetiva.
b) Somente injetiva.
c) Somente sobrejetiva.
d) Não é injetiva e nem sobrejetiva.
e) Bijetiva, mas não é injetiva e nem sobrejetiva.
AUTOATIVIDADE
1
9
9
REFERÊNCIAS
ÁVILA, G. Cálculo das funções de uma variável. São Paulo: LTC, 2003.
BONATTI, C.; JENSKE, G.; PELLIZARO, M. M. Introdução ao cálculo. Indaial: Uniasselvi, 2015.
DEMANA, F. D. et al. Pré-cálculo. São Paulo: Pearson, 2009.
LEITE, A. E.; CASTANHEIRA, N. P. Teoria dos números e teoria dos conjuntos. Curitiba: Intersa-
beres, 2014.
PETROLI, T. Pré-cálculo. Curitiba: Contentus, 2020.
1
1
1
1. O algoritmo será:
print(‘____’*10)
print(‘Cálculo do valor do combustível gasto por um veículo em função da distância per-
corrida: ‘)
x=int(input(‘Entre com o valor da distância percorrida: ‘))
y=0.53*x
print(‘O valor do combustível gasto será: ‘, y)
print(‘____’*10)
O print(‘____’*10) não tem relevância. É apenas estético. Caso queira usar valores reais, utilize
float em vez de int.
y = 0,53 . x.
2. Analisando o gráfico no GeoGebra, teremos:
Justificativa: conforme x aumenta, y também aumenta.
Logo é uma função crescente.
Analisando a função, I = (2/3) log10x, temos que:
Se a > 1, temos função crescente. Neste caso o a = 10.
Logo é uma função crescente.
3 Opção B.
Aplicando no algoritmo, fazendo-o executar, teríamos:
print(‘Obter as raízes de uma Função y = a*x**2 + b*x + c.’)
print(‘Por meio dos coeficientes a,b e c.’)
GABARITO
1
1
1
a=int(input(‘Entre com o valor de a: ‘))
b=int(input(‘Entre com o valor de b: ‘))
c=int(input(‘Entre com o valor de c: ‘))
d = (b**2 - 4*a*c)
x1 = (-b+d**(0.5))/(2*a)
x2 = (-b-d**(0.5))/(2*a)
print(‘As raízes serão:’, x1,’e’, x2)
Obter as raízes de uma Função y = a*x**2 + b*x + c.
Por meio dos coeficientes a, b e c.
Entre com o valor de a: -1
Entre com o valor de b: 8
Entre com o valor de c: -7
As raízes serão: 1.0 e 7.0
Δ = b2 - 4ac e
�
� � �b b ac
a
2 4
2
.
4 Opção B.
Executante o algoritmo a seguir, teremos:
print(‘ Cálculo dos juros simples e compostos’)
t=int(input(‘Entre com o valor do tempo em anos: ‘))
i=int(input(‘Entre com o valor da taxa em anos: ‘))
c=int(input(‘Entre com o valor do capital em reais: ‘))
M1=(0.01*c*i*t) + c
M2=c*(1+i/100)**t
print(‘O juro simples será: ‘, M1)
print(‘O juro composto será: ‘, M2)
I. Para uma aplicação de 10000 reais, a 6 % ao ano, em um ano de aplicação, os montantes
serão diferentes; FALSO.
Cálculo dos juros simples e compostos
Entre com o valor do tempo em anos: 1
Entre com o valor da taxa em anos: 6
Entre com o valor do capital em reais: 10000
O juro simples será: 10600.0
O juro composto será: 10600.0
II. Para uma aplicação de 10000 reais, a 7 % ao ano, em cinco anos de aplicação, o montante
dos juros simples será maior que o montante dos juros compostos; FALSO.
Cálculo dos juros simples e compostos
Entre com o valor do tempo em anos: 5
GABARITO
1
1
1
Entre com o valor da taxa em anos: 7
Entre com o valor do capital em reais: 10000
O juro simples será: 13500.0
O juro composto será: 14025.517307000004
III. Para uma aplicação de 10000 reais, a 9 % ao ano, em cinco anos de aplicação, o montante
dos juros simples será menor que o montante dos juros compostos. VERDADE.
Cálculo dos juros simples e compostos
Entre com o valor do tempo em anos: 5
Entre com o valor da taxa em anos: 9
Entre com o valor do capital em reais: 10000
O juro simples será: 14500.0
O juro composto será: 15386.239549000005
M1 = 0,01.c.i.t + c
M2 = c.(1+i/100)t
5. Analisando o gráfico no GeoGebra, teremos:
É injetiva, pois x
1 ≠ x2 em A → f(x1) ≠ f(x2) em B.
É sobrejetiva, pois Im(f) = B.
Como temos as duas anteriores de forma simultânea, temos uma função bijetiva.
GABARITO
1
1
1
MINHAS METAS
SEQUÊNCIAS FINITAS E INFINITAS
Compreender a definição de sequências.
Compreender as propriedades das sequências finitas e infinitas.
Aplicar sequências aritméticas e geométricas na computação.
Aplicar sequências limitadas na computação.
Aplicar sequências monótonas na computação.
T E M A D E A P R E N D I Z A G E M 6
1
1
4
INICIE SUA JORNADA
Lidamos no nosso cotidiano com sequências em várias situações. Podemos ci-
tar dois exemplos: em um dicionário, as palavras formam uma sequência que
obedece à ordem alfabética; e, em um livro, as páginas são numeradas por uma
sequência de números que obedece a uma ordem crescente.
Agora, imagine que você é um funcionário público criador de algoritmos em
uma área pública que trabalha com estatísticas. Você precisa criar um algoritmo
em linguagem Python sobre sequências para estimar o crescimento anual de 0,1%
na população de uma cidade. Considere a população atual de 500.000 habitantes.
O relevante é saber uma estimativa para dez anos.
Dessa forma, você poderia gerar um algoritmo de sequência geométrica,
tendo em vista uma razão de crescimento de 1,001.
print(‘______’*9)
print(‘Estimativa de crescimento populacional’)
t=int(input(‘Entre com o valor do tempo em anos: ‘))
a=500000*(1.001)**t
print(‘______’*9)
print(‘Estimativa de crescimento populacional será: ‘, a)
print(‘______’*9)
Ao executar o algoritmo com dez anos, teremos:
Estimativa de crescimento populacional
Entre com o valor do tempo em anos: 10
Estimativa de crescimento populacional será: 505022.5601051256
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 6
Como você pode observar, a resolução dessa situação em uma folha de papel
demandaria tempo e estaria sujeita a erros. Poderíamos calcular em uma calcu-
ladora, mas se colocássemos 50 anos, por exemplo, começaríamos a ter dificul-
dades com precisão devido aos arredondamentos da calculadora. A solução seria
trabalharmos com um algoritmo, obtendo maior rapidez e precisão.
Ao executar o algoritmo com 50 anos, teremos:
Estimativa de crescimento populacional
Entre com o valor do tempo em anos: 50
Estimativa de crescimento populacional será: 525622.4162173728
Neste podcast, você aprenderá sobre sequências numéricas finitas e infinitas,
bem como sobre sequências aritméticas, geométricas, limitadas e monótonas.
Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
PLAY NO CONHECIMENTO
VAMOS RECORDAR?
Para que você comece entendendo sequências numéricas finitas e infinitas, é
necessária uma revisão geral sobre os conjuntos numéricos e intervalos. Sugiro
a realização da atividade de classificar os números naturais, inteiros e racionais
no algoritmo do GeoGebra (aplicativo de acesso livre), na seção material didático,
tema Conjuntos numéricos e intervalos.Desloque os números da direita para os
diagramas a sua esquerda. Monte também os intervalos na atividade seguinte.
Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
1
1
1
Na próxima fase, será desenvolvido o tema Sequências Numéricas, nele você
poderá aprender sobre sequências finitas e infinitas, aritméticas, geométricas,
limitadas e monótonas.
DESENVOLVA SEU POTENCIAL
SEQUÊNCIAS NUMÉRICAS
Vamos, agora, construir subsídios para com-
preender uma importante ferramenta da análise:
as sequências numéricas. Você já teve um breve
contato com assunto no Ensino Médio, quando
deve ter estudado as Progressões Aritméticas
(PA) e as Progressões Geométricas (PG).
A importância desse conceito é que, mui-
tas propriedades que vimos em temas anterio-
res, envolvendo teoria de conjuntos, podem
ser reescritas no contexto de sequência.
Por exemplo: um ponto real x é aderente
a um conjunto real A se existir uma sequên-
cia numérica x Nn x� � � em A que converge
para x. Confuso? Claro, ainda não introduzi-
mos os conceitos de sequência numérica nem
de convergência, mas note que uma definição
envolvendo apenas conjuntos abertos pode ser
trocada por uma, envolvendo sequências. Esse
exemplo deve dar uma noção da importância
do assunto que veremos agora.
No caso das sequências, dizer que uma
sequência converge para um ponto x é o
mesmo que dizer que o limite desta sequên-
cia é o ponto x.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
Fundamentos de matemática elementar: sequências, matri-
zes, determinantes e sistemas
Organizador: Gelson Iezzi e Samuel Hazzan
Editora: Atual
Ano: 2019
Sobre o livro: a obra aborda o estudo de matrizes e sistemas
lineares.
O estudo de sequências e progressões é muito interessante
para desenvolver a compreensão da simbologia algébrica e
recapitular um pouco de cálculo algébrico.
O estudo de determinantes deve ser feito sem exageros, com
ênfase em cálculo numérico e propriedades operatórias.
O livro apresenta muitos exemplos de sequências, com exer-
cícios resolvidos que podem ser aplicados em linguagens de
programação.
INDICAÇÃO DE LIVRO
DEFINIÇÃO DE SEQUÊNCIA, SEQUÊNCIAS FINITAS E INFINITAS
Sequência é um conjunto infinito de números que segue uma determinada or-
dem, ou seja, seus termos não são escritos de forma aleatória.
Nesse sentido, o conjunto infinito {1, 2, 3, 4, ...} é uma sequência, pois cada termo
é o anterior acrescido de 1. A sequência infinita é identificada pelos três pontos (...),
dando a ideia de continuidade sem fim, ou seja, quantidade ilimitada de termos.
Já a sequência finita tem um fim, por exemplo, o conjunto finito {1,2,3,4}
termina em 4, ou seja, quantidade limitada de termos.
Entretanto, o conjunto {1, 2, 5, 3, 8, 5, 4, 1, 8, 9 …} não é uma sequência, pois,
a partir dos números que conhecemos, não temos como descobrir qual número
apareceria depois do 9, depois desse e assim por diante.
Uma sequência de números reais ( ) é uma função x :� �→ que associa a cada
n natural um número real x n xn� � � . Onde N é o conjunto dos números naturais e
R, dos números reais.
O número n é chamado de índice da sequência, e xn é denominado termo geral da
sequência.
1
1
8
Vamos ver alguns exemplos para deixar essa definição mais clara.
O conjunto X = {1, 3, 5, 7, 9, …} é uma sequência numérica, cuja função
matemática que a define é x :� �→ , n n→ 2 1 � .
Você pode utilizar o algoritmo a seguir na linguagem de programação Py-
thon, para descobrir termos da sequência (x) anterior em função da posição (n).
Este algoritmo pode ser testado em outras linguagens de programação, como o
C e o Java, bastando apenas fazer adaptações.
Você pode entrar com qualquer valor inteiro (n = int(input()) ou posição. Se
entrar com n = 100 ou posição 100, teremos x = 199 ou termo 199. Teste outros
valores, por exemplo, n = 1000.
print(‘______’*9)
print(‘Determinar o termo x da sequência X = {1, 3, 5, 7, 9, …} em função da
posição n.’)
print(‘n é a posição e é um número natural positivo.’)
print(‘x é o termo obtido na sequência.’)
print(‘______’*9)
n = int(input(‘Entre com o valor de n:’))
x = (2*n - 1)
print(‘O valor de x será:’, x)
print(‘______’*9)
Ao executar o programa, teremos:
Determinar o termo x da sequência X = {1, 3, 5, 7, 9…} em função da posição n
n é a posição e é um número natural positivo
DEFINIÇÃO DE SEQUÊNCIA, SEQUÊNCIAS FINITAS E INFINITAS
Sequência é um conjunto infinito de números que segue uma determinada or-
dem, ou seja, seus termos não são escritos de forma aleatória.
Nesse sentido, o conjunto infinito {1, 2, 3, 4, ...} é uma sequência, pois cada termo
é o anterior acrescido de 1. A sequência infinita é identificada pelos três pontos (...),
dando a ideia de continuidade sem fim, ou seja, quantidade ilimitada de termos.
Já a sequência finita tem um fim, por exemplo, o conjunto finito {1,2,3,4}
termina em 4, ou seja, quantidade limitada de termos.
Entretanto, o conjunto {1, 2, 5, 3, 8, 5, 4, 1, 8, 9 …} não é uma sequência, pois,
a partir dos números que conhecemos, não temos como descobrir qual número
apareceria depois do 9, depois desse e assim por diante.
Uma sequência de números reais ( ) é uma função x :� �→ que associa a cada
n natural um número real x n xn� � � . Onde N é o conjunto dos números naturais e
R, dos números reais.
O número n é chamado de índice da sequência, e xn é denominado termo geral da
sequência.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 6
x é o termo obtido na sequência
Entre com o valor de n:100
O valor de x será: 199
Outro exemplo seria o conjunto, X ={ , , , ...}
1
2
1
4
1
8 que é uma sequência numé-
rica, cuja função matemática que a define é x :� �→ , n n→ 1 2/ , onde N é o
conjunto dos números naturais e R, dos números reais.
Você pode entrar com qualquer valor inteiro ( n = int(input()). Se entrar com
n = 10, teremos x = 0,0009765625. Teste outros valores, como por exemplo n =
20. Os resultados serão em números decimais e não em frações, ou seja, para 1
4, teremos 0,25.
Observe que no algoritmo anterior foi alterado as linhas segunda e sétima e
gerado um novo algoritmo apresentado abaixo.
print(‘______’*9)
print(‘Determinar o termo x da sequência X = {1/2, 1/4, 1/8, …} em função da
posição n.’)
print(‘n é a posição e é um número natural positivo.’)
print(‘x é o termo obtido na sequência.’)
print(‘______’*9)
n = int(input(‘Entre com o valor de n:’))
x = (1/(2**n))
print(‘O valor de x será:’, x)
print(‘______’*9)
Ao executar o programa, teremos:
Determinar o termo x da sequência X = {1/2, 1/4, 1/8, …} em função da posição n
n é a posição e é um número natural positivo
x é o termo obtido na sequência
1
1
1
Entre com o valor de n:10
O valor de x será: 0.0009765625
SEQUÊNCIAS ARITMÉTICAS
As progressões aritméticas ou simplesmente P.A. são exemplos de sequências
numéricas.
Por exemplo, a P.A: (1, 4, 7, 10, …).
Cada termo pode ser escrito como o anterior mais um número fixo, no caso, 3.
x
x x
x x x
1
2 1
3 2 1
1
4 1 3 3
7 4 3 3 3
�
� � � � �
� � � � � � � �
33 2 3
10 7 3 3 2 3 3 3 3
1
4 3 1 1
� �
� � � � � � � � � �
x
x x x x
.
. .
Então, todos os termos podem ser escritos em função do primeiro. Generalizando:
x x nn � � �� � 1 1 3.
Chamamos 3 de razão da P.A., pois esse é o número que está sendo somado termo
a termo para montar a PA. Vamos denotar este valor por r. Então, o termo geral
de uma PA qualquer pode ser escrito como:
x x n rn � � �� � 1 1 .
Para melhor entender o exemplo anterior, sugiro a realização da atividade no algo-
ritmo do GeoGebra (aplicativo de acesso livre), na seção material didático, tema
Monotonia de progressões aritméticas e de progressões geométricas. Selecione
Progressão aritmética no canto superior esquerdo. Analise o gráfico à direita, subs-
tituindo os valores de u1 e de r.
EU INDICO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
Como nos exemplos anteriores,você pode criar o algoritmo a seguir, na linguagem
de programação Python, para descobrir termos da sequência (x) aritmética em
função da posição (n) e da razão (r). Este algoritmo pode ser testado em outras
linguagens de programação, como o C e o Java, bastando apenas fazer adaptações.
Você pode entrar com qualquer valor inteiro (n = int(input()) e valores reais (r
= float(input()) e (x1 = float(input()). A posição é n, a razão é r e primeiro termo é
x1. Se entrar com n = 100 e r = -1 e x1 = 10, teremos x = -89. Teste outros valores,
como por exemplo n = 300, r = 2 e x1 = 0,1. Lembre-se de usar em programação
0.1 em vez de 0,1.
print(‘****’*9)
print(‘Determinar o termo x da sequência PA em função da posição n e da
razão r.’)
print(‘n é a posição e é um número natural positivo.’)
print(‘r é a razão e é um número real.’)
print(‘x1 é o primeiro termo é um número real.’)
print(‘x é o termo obtido na sequência e é um número real.’)
print(‘****’*9)
n = int(input(‘Entre com o valor de n:’))
r = float(input(‘Entre com o valor de r:’))
x1 = float(input(‘Entre com o valor de x1:’))
x = x1 + (n - 1)*r
print(‘O valor de x será:’, x)
print(‘****’*9)
1
1
1
Ao executar o programa, teremos:
************************************
Determinar o termo x da sequência PA em função da posição n e da razão r
n é a posição e é um número natural positivo
r é a razão e é um número real
x1 é o primeiro termo é um número real
x é o termo obtido na sequência e é um número real
************************************
Entre com o valor de n:100
Entre com o valor de r:-1
Entre com o valor de x1:10
O valor de x será: -89.0
************************************
SEQUÊNCIAS GEOMÉTRICAS
Assim como as progressões aritméticas, as progressões geométricas ou P.G. tam-
bém são sequências numéricas.
Por exemplo a P.G: (1, 4, 16, 64, …).
Cada termo pode ser escrito como o anterior multiplicado por um número
fixo, no caso, 4.
x
x x
x x x
1
2 1
3 2 1
1
4 1 4 4
16 4 4 4 4
=
= = =
= = = =
. .
. . . .
4 4
64 16 4 4 4 4 4
1
2
4 3 1
2
1
3
=
= = = = =
x
x x x x
.
. . . . .
Então, todos os termos podem ser escritos em função do primeiro. Generalizando:
x xn
n
1
14. -
Chamamos 4 de razão da P.G., pois esse é o número que está sendo multiplicado
termo a termo para montar a PG. Vamos denotar este valor por q, razão de uma
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
P.G. (dividir um termo pelo seu antecessor e, portanto, determinar um quocien-
te). Então, o termo geral de uma PG qualquer pode ser escrito como:
x x qn
n�
1
1. ( )-
Para melhor entender o exemplo anterior, sugiro a realização da atividade no al-
goritmo do GeoGebra (aplicativo de acesso livre), na seção material didático, tema
Monotonia de progressões aritméticas e de progressões geométricas. Selecione
progressão geométrica no canto superior esquerdo. Analise o gráfico à direita,
substituindo os valores de u1 e de r. Recursos de mídia disponíveis no conteúdo
digital do ambiente virtual de aprendizagem
EU INDICO
Você pode criar o algoritmo a seguir, similar ao algoritmo da PA, na linguagem
de programação Python, para descobrir termos da sequência (x) geométrica em
função da posição (n) e da razão (q). Este algoritmo pode ser testado em outras
linguagens de programação, como o C e o Java, bastando apenas fazer adaptações.
Você pode entrar com qualquer valor inteiro (n = int(input()) e valores reais
(q = float(input()) e (x1 = float(input()). A posição é n, a razão é q e primeiro
termo é x1. Se entrar com n = 50 e q = 2 e x1 = 3, teremos x = 1688849860263936.
Teste outros valores, como por exemplo n = 100, q = 5 e x1 = 5.
print(‘****’*9)
print(‘Determinar o termo x da sequência PG em função da posição n e da
razão q.’)
print(‘n é a posição e é um número natural positivo.’)
print(‘q é a razão e é um número real.’)
print(‘x1 é o primeiro termo é um número real.’)
print(‘x é o termo obtido na sequência e é um número real.’)
print(‘****’*9)
n = int(input(‘Entre com o valor de n:’))
q = float(input(‘Entre com o valor de q:’))
x1 = float(input(‘Entre com o valor de x1:’))
x = x1*q**(n - 1)
print(‘O valor de x será:’, x)
print(‘****’*9)
1
1
4
Ao executar o programa, teremos:
************************************
Determinar o termo x da sequência PG em função da posição n e da razão q
n é a posição e é um número natural positivo
q é a razão e é um número real
x1 é o primeiro termo é um número real
x é o termo obtido na sequência e é um número real
************************************
Entre com o valor de n:50
Entre com o valor de q:2
Entre com o valor de x1:3
O valor de x será: 1688849860263936.0
************************************
VOCÊ SABE RESPONDER?
O que acontece com a PG que apresenta o primeiro termo e a razão com valor
-3? Teste no algoritmo anterior posições consecutivas, ou seja, terceira posição e
quarta posição etc.
SEQUÊNCIAS LIMITADAS
Uma sequência x Nn x� � � é limitada quando o conjunto de seus termos é limita-
do, ou seja, se existem números reais a e b, com a b < para os quais a x bn≤ ≤
para todo n natural.
Em outras palavras, uma sequência é limitada quando todos os seus termos
pertencem a um intervalo [a, b]. Note que, dados a e b, com a < b, podemos
encontrar um número inteiro c para o qual a b c c, ,[ ]� � � � (basta tomar c como
sendo o maior valor entre |a| e |b|).
Assim, dizer que x a bn� ,�� � para todo n, é o mesmo que dizer que
x c cn� ,[ ]� � , ou ainda, que x cn ≤ . Então, podemos redefinir sequência limita-
da da seguinte forma:
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 6
Uma sequência x Nn x� � � é limitada se, e somente se,
existe um número real c tal que x cn ≤ , para todo n natural.
Exemplos de sequências limitadas:
■ Sequência x Nn x� � � , cujo termo geral é xn
n� �� � 1 .
■ Sequência x Nn x� � � , cujo termo geral é x
nn =
1
.
■ Sequência x Nn x� � � , cujo termo geral é x sen nn = ( .�)p
2
.
Uma sequência x Nn x� � � que não é limitada é dita ser ilimitada. Entretanto,
mesmo ilimitada, pode existir um número real a para o qual x an ≥ , para todo
natural n. Nesse caso, dizemos que a sequência é limitada inferiormente.
Se, por outro lado, existe um número real b para o qual x bn ≤ , para todo n, dize-
mos que a sequência é limitada superiormente.
Por exemplo:
A sequência x Nn x� � � , cujo termo geral é xn n=
1
2
, é limitada inferiormente
por 0 e superiormente por 1
2
.
ZOOM NO CONHECIMENTO
SEQUÊNCIAS MONÓTONAS
Já sabemos que, como o conjunto dos números naturais é infinito, uma sequência
também possui infinitos termos. À medida que n vai ficando maior, os valores
desses termos podem aumentar, tornando-se cada vez menores ou ficarem osci-
lando. Quando esse último caso não acontece, as sequências recebem um nome
especial: sequências monótonas. Assim, as sequências monótonas são tais que
seus termos não oscilam.
1
1
1
Seja x Nn x� � � uma sequência de números reais. Dizemos que
essa sequência é
• monótona crescente se x xn n� �1 , para todo natural n.
• monótona decrescente se x xn n� �1 para todo natural n.
• monótona não crescente se x xn n� �1 , para todo natural n.
• monótona não decrescente se x xn n� �1 , para todo natural n.
Caso a sequência não seja de nenhum dos tipos anteriores, dizemos que a se-
quência não é monótona.
Observe que em uma sequência crescente a função que a origina é injetora, isto é,
se m e n forem dois números naturais tais que m n≠ , então x xm n≠ .
Esse fato é que diferencia uma sequência crescente de uma não decrescente.
Isso vale para as funções decrescente e não crescente.
PENSANDO JUNTOS
Vamos analisar a sequência x Nn x� � � , cujo termo geral é x n nn 2 .
Você pode criar o algoritmo com o termo geral x n nn 2 , na linguagem
de programação Python, para descobrir se é ou não uma sequência monótona e
se for monótona, tipo de sequência é. Este algoritmo pode ser testado em outras
linguagens de programação, comoo C e o Java, bastando apenas fazer adaptações.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
print(‘****’*9)
print(‘Determinar se a sequência é monótona para xn = n*2 - n, com os cinco
primeiros termos.’)
x1= 1**2 - 1
print(‘Para n = 1, termos x1 igual a:’, x1)
print(‘****’*9)
x2= 2**2 - 2
print(‘Para n = 2, termos x2 igual a:’, x2)
print(‘****’*9)
x3= 3**2 - 3
print(‘Para n = 3, termos x3 igual a:’, x3)
print(‘****’*9)
x4= 4**2 - 4
print(‘Para n = 4, termos x4 igual a:’, x4)
print(‘****’*9)
x5= 5**2 - 5
print(‘Para n = 5, termos x5 igual a:’, x5)
print(‘****’*9)
Ao executar o programa, teremos:
************************************
Determinar se a sequência é monótona para xn = n*2 - n, com os cinco pri-
meiros termos
Para n = 1, termos x1 igual a: 0
************************************
Para n = 2, termos x2 igual a: 2
************************************
Para n = 3, termos x3 igual a: 6
************************************
Para n = 4, termos x4 igual a: 12
************************************
Para n = 5, termos x5 igual a: 20
************************************
1
1
8
Portanto, a sequência é monótona e crescente. Além disso, esta sequência é limi-
tada inferiormente por 0.
Para terminarmos este item, vamos analisar a sequência x Nn x� � � , cujo
termo geral é x sen nn = ( . )p
2
.
Entre no GeoGebra, na calculadora gráfica, e digite no canto superior esquer-
do sen n( . ) p
2
. Você terá a Figura 1.
Figura 1 – Função seno com x multiplicando pi dividido por 2 / Fonte: o autor.
Descrição da Imagem: a figura apresenta um gráfico da função seno, nele temos sen n( . ) p
2
. Para qualquer
valor do eixo x, os limites máximos no eixo y serão 1 e -1. Fim da descrição.
Dessa forma, não é uma sequência monótona, pois os valores assumidos pelo
termo geral oscilam entre -1 e 1.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 6
Resumo de sequências numéricas.
• Sequência é um conjunto infinito de números que segue uma determinada ordem,
ou seja, que não são aleatórios.
• Nesse sentido, o conjunto infinito {1, 2, 3, 4, ...} é uma sequência, pois cada termo
é o anterior acrescido de 1. A sequência infinita é identificada pelos três pontos (...),
dando a ideia de continuidade sem fim, ou seja, quantidade ilimitada de termos.
• Já a sequência finita tem um fim, por exemplo, o conjunto finito {1,2,3,4} termina em
4, ou seja, quantidade limitada de termos.
• O termo geral de uma PA qualquer pode ser escrito como: x x n rn � � �� � 1 1 .
O termo geral de uma PG qualquer pode ser escrito como: x x qn
n=
1
1. ( )�
.⊢
Uma sequência x Nn x� � � é limitada se, e somente se, existe um número real c
tal que x cn ≤ , para todo n natural.
Seja x Nn x� � � uma sequência de números reais. Dizemos que essa sequência é:
• monótona crescente se x xn n� �1 , para todo natural n.
• monótona decrescente se x xn n� �1 para todo natural n.
• monótona não crescente se x xn n� �1 , para todo natural n.
• monótona não decrescente se x xn n� �1 , para todo natural n.
1
1
1
NOVOS DESAFIOS
No decorrer deste tema, você aprendeu sobre sequências numéricas, dando des-
taque à definição de sequências, sequências finitas e infinitas, aritméticas, geo-
métricas, limitadas e monótonas.
Considere que você é um professor da rede pública ou privada e precisa
analisar as notas de seus alunos após uma avaliação de sua disciplina. Esta aná-
lise é importante para dimensionar o ensino-aprendizagem de sua disciplina no
contexto da instituição de ensino a qual você participa.
O Código da Vinci
O filme em si se desenvolve em uma série ou sequência de
pistas, símbolos e mensagens.
Robert Langdon é um famoso simbologista, que foi convocado
a comparecer no Museu do Louvre após o assassinato de um
curador.
A morte deixou uma série de pistas e símbolos estranhos, os
quais Langdon precisa decifrar. Em seu trabalho, ele conta com
a ajuda de Sophie Neveu, criptógrafa da polícia.
O que Langdon não esperava era que suas investigações o
levassem a uma série de mensagens ocultas nas obras de
Leonardo da Vinci, que indicam a existência de uma sociedade
secreta que tem por missão guardar um segredo que já dura
mais de 2 mil anos.
INDICAÇÃO DE LIVRO
Acesse seu ambiente virtual de aprendizagem e confira a aula referente a este
tema. Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
EM FOCO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
Na avaliação realizada com 21 alunos, foram obtidas as seguintes notas de
forma não ordenada:
1,0; 1,5; 0,0; 0,5; 10,0; 2,5; 7,0; 3,5; 9,0; 4,5; 5,0; 9,5; 6,0; 6,5; 3,0; 7,5; 8,0; 8,5;
4,0; 5,5; 2,0.
Sua intenção é colocar esta relação de números em uma progressão hipoté-
tica, analisando a nota de cada aluno em uma ordem de 1 a 21, relacionadas ao
nome do aluno. Na verdade, seu objetivo maior é criar um minibanco de dados
para futuras consultas, relacionando e comparando com outras avaliações simi-
lares para a mesma turma de alunos.
A lista dos nomes dos alunos, que pode ser feita em um editor de textos ou
colocada no algoritmo com a função input(), criando 21 variáveis diferentes, não
tem a intenção de ser na ordem alfabética, mas em ordem de notas. Por exemplo,
o aluno Rafael é da posição 1 e sua nota é 0,0.
Com o uso da programação, podemos obter resultados rápidos e precisos em
termos de consulta. Inicialmente, é interessante colocarmos essa relação em ordem:
0,0; 0,5; 1,0; 1,5; 2,0; 2,5; 3,0; 3,5; 4,0; 4,5; 5,0; 5,5; 6,0; 6,5; 7,0; 7,5; 8,0; 8,5;
9,0; 9,5; 10,0.
Curiosamente, você percebe que a relação é uma sequência numérica aritmé-
tica que obedece à razão 0,5. Isto aconteceu devido ao tipo de avaliação objetiva
que foi aplicada, gerando opções de valores distintos com acréscimos de 0,5.
Utilizando a programação Python, teríamos:
print(‘+++++++’*8)
print(‘Determinar a nota de um aluno conforme sua ordem em uma lista
ordenada de razão 0,5.’)
n=int(input(‘Entre com o valor de n ou posição de 1 a 21:’))
print(‘+++++++’*8)
x = 0.0 + (n - 1)*(0.5)
print(‘A nota do aluno na posição’, n,’será: ‘, x)
print(‘+++++++’*8)
Ao executarmos o programa, para a posição 7, teríamos:
++++++++++++++++++++++++++++++++++++++++++++++++++++
1
1
1
Determinar a nota de um aluno conforme sua ordem em uma lista ordenada
de razão 0,5
Entre com o valor de n ou posição de 1 a 21:7
++++++++++++++++++++++++++++++++++++++++++++++++++++
A nota do aluno na posição 7 será: 3.0
++++++++++++++++++++++++++++++++++++++++++++++++++++
Você pode questionar se este controle não poderia ser feito em uma simples
lista manual. Para uma lista pequena de 21 alunos, até seria simples elaborar no
papel e realizar consultas. Entretanto, imagine que você tenha 45 alunos em cada
turma e quatro turmas. Ficaria trabalhoso consultar listas de papéis. A situação
ficaria mais complicada se você tivesse que analisar três avaliações semestrais nas
quatro turmas de 45 alunos.
Esse modelo anterior seria um modelo-base para ser aperfeiçoado a sua ne-
cessidade. Você poderia acrescentar no algoritmo, por exemplo, cálculo de mé-
dias e desvio padrão. Poderias também trabalhar com séries que não obedecem
necessariamente a uma razão, no caso de cálculo de médias aritméticas simples.
UNIASSELVI
1
1
1
1. Uma das dificuldades dos alunos hoje é gravar a tabuada. A tabuada do nove é, para alguns
alunos, de difícil memorização.
Sabe-se que a tabuada do nove obedece a uma sequência aritmética.
Temos os múltiplos de nove nos primeiros dez números: M(9) = {9, 18, 27, 36, 45, 54, 63, 72,
81, 90}. Um conjunto finito.
Pode-se criar um algoritmo com o termo geral de uma sequência aritmética para calcular
a tabuada do nove.
A tabuada do nove pode ser representada por uma sequência aritmética de termo geral x =
9 + (n – 1) . 9. Elabore de maneira simples um algoritmo na linguagem Python para calcular
o produto do nove por um número de um a dez.
2. Na área de computação, um bit assume dois valores: 0 ou 1. Também 8 bits formam1 byte,
16 bits formam 2 bytes, 24 bits formam 3 bytes e assim sucessivamente.
Pode-se criar uma sequência aritmética de bits, tendo como razão o 8.
Isso geraria uma sequência numérica de múltiplos de 8: M(8) = {8, 16, 24, ...}. Um conjunto
infinito.
Pode-se criar um algoritmo com o termo geral de uma sequência aritmética para calcular
quantos bits há em um determinado número de bytes.
A sequência aritmética de termo geral x = 8 + (n – 1) . 8 permite calcular o número de bits
total a partir de um número de bytes.
Elabore de maneira simples um algoritmo na linguagem Python para calcular o número de
bits a partir de um número de bytes.
3. A sequência geométrica é utilizada para estimar crescimentos de determinadas popula-
ções.
Uma população de animais cresce em função do tempo, obedecendo o termo geral de uma
PG: xn = 1 . 3(n-1), sendo n medido em anos.
Pode-se criar um algoritmo na linguagem Python com o termo geral desta PG para calcular
o crescimento desta população:
AUTOATIVIDADE
1
1
4
print(‘//////////’*8)
print(‘Calcular o crescimento de uma população de animais.’)
n=int(input(‘Entre com o valor de n ou tempo em anos:’))
print(‘//////////’*8)
x = 3**(n - 1)
print(‘O número de animais para’, n,’anos será: ‘, x)
print(‘//////////’*8)
O termo geral de uma PG é xn = 1 . 3(n-1). Use um algoritmo para resolver o termo geral. O
número de animais em 10 anos será:
a) A. 1.
b) B. 3.
c) C. 81.
d) D. 19683.
e) E. 177147.
AUTOATIVIDADE
1
1
5
4. A sequência numérica cujo termo geral seja k = 1 . e(n – 1) está representada no gráfico da
figura a seguir. O n é representado por x no gráfico gerado pelo aplicativo livre GeoGebra.
O termo geral k representa o termo de uma sequência geométrica com o primeiro termo
sendo 1 e a razão sendo e, o número de Euler.
O número de Euler prova a teoria de que há certa harmonia entra a matemática e a natureza.
Com base no termo geral se uma sequência geométrica k = 1 . e(n – 1), podemos afirmar:
I - O segundo termo será o número de Euler.
II - O terceiro termo será o dobro do número de Euler.
III - O quarto termo será aproximadamente 20.
É correto o que se afirma em:
a) I, apenas.
b) III, apenas.
c) I e III, apenas.
d) II e III, apenas.
e) I, II e III.
AUTOATIVIDADE
1
1
1
5. O gráfico da figura a seguir foi gerado no aplicativo GeoGebra a partir do termo geral de
uma sequência aritmética. O n é apresentado como sendo x no gráfico.
O gráfico é uma função afim, ou seja, y = ax + b.
O conjunto é infinito e apresenta uma sequência crescente de valores.
Considerando o termo geral de uma PA como sendo xn = 3 + 5x, o primeiro termo será:
a) 3.
b) 5.
c) 8.
d) 10.
e) 23.
AUTOATIVIDADE
1
1
1
REFERÊNCIAS
ÁVILA, G. Análise matemática para licenciatura. 3. ed. São Paulo: Edgard
Blucher, 2011.
BRANDT, C. D. Análise matemática. Indaial: Uniasselvi, 2013.
LIMA, E. L. Curso de análise. 12. ed. São Paulo: IMPA, 2010.
PANOCELI, D. M. Análise matemática. Curitiba: Intersaberes, 2017.
SARRICO, C. Análise matemática: leitura e exercícios. Lisboa: Gradiva, 2002.
1
1
8
1. O algoritmo será:
print(‘//////////’*8)
print(‘Tabuada do 9. Basta informar o número que desejas multiplicar por 9.’)
n=int(input(‘Entre com o valor de n ou posição de 1 a 10:’))
print(‘//////////’*8)
x = 9.0 + (n - 1)*9
print(‘O produto de 9 por’, n,’será: ‘, x)
print(‘//////////’*8)
Por exemplo, para n = 7, teremos:
////////////////////////////////////////////////////////////////////////////////
Tabuada do 9. Basta informar o número que desejas multiplicar por 9.
Entre com o valor de n ou posição de 1 a 10:7
////////////////////////////////////////////////////////////////////////////////
O produto de 9 por 7 será: 63.0
////////////////////////////////////////////////////////////////////////////////
xn = x1 + (n – 1) . r.
2. O algoritmo será:
print(‘//////////’*8)
print(‘Calcular o número de bits total a partir de um número de bytes.’)
n=int(input(‘Entre com o valor de n ou número de bytes:’))
print(‘//////////’*8)
x = 8.0 + (n - 1)*8
print(‘O número de bits para’, n,’bytes será: ‘, x)
print(‘//////////’*8)
Por exemplo, para n = 8, teremos:
////////////////////////////////////////////////////////////////////////////////
Calcular o número de bits total a partir de um número de bytes
Entre com o valor de n ou número de bytes:8
////////////////////////////////////////////////////////////////////////////////
O número de bits para 8 bytes será: 64.0
////////////////////////////////////////////////////////////////////////////////
xn = x1 + (n – 1) . r.
GABARITO
1
1
9
3. Opção D.
Executando o algoritmo para 10 anos:
print(‘//////////’*8)
print(‘Calcular o crescimento de uma população de animais.’)
n=int(input(‘Entre com o valor de n ou tempo em anos:’))
print(‘//////////’*8)
x = 3**(n - 1)
print(‘O número de animais para’, n,’anos será: ‘, x)
print(‘//////////’*8)
Teremos:
////////////////////////////////////////////////////////////////////////////////
Calcular o crescimento de uma população de animais
Entre com o valor de n ou tempo em anos:10
////////////////////////////////////////////////////////////////////////////////
O número de animais para 10 anos será: 19683
////////////////////////////////////////////////////////////////////////////////
xn = x1 . q(n – 1).
4. Opção C.
Aplicando na fórmula do termo geral ou analisando e manipulando o gráfico no aplicativo
GeoGebra temos:
I. O segundo termo será o número de Euler. Verdadeiro.
k = 1 . e(n – 1) = 1 . e(2 – 1) = e1 = e.
II. O terceiro termo será o dobro do número de Euler. Falso
k = 1 . e(n – 1) = 1 . e(3 – 1) = e2 = 7,3890560989306495.
O dobro de e seria 2 . e = 2 . 2,71 = 5,42, aproximadamente.
III. O quarto termo será aproximadamente 20. Verdadeiro.
k = 1 . e(n – 1) = 1 . e(4 – 1) = e3 = 20, aproximadamente.
k = 1 . e(n – 1).
5 Opção C.
Aplicando na fórmula do termo geral ou analisando e manipulando o gráfico no aplicativo
GeoGebra temos:
xn = 3 + 5x = 3 + 5 . 1 = 3 + 5 = 8.
xn = 3 + 5x.
GABARITO
1
1
1
MINHAS ANOTAÇÕES
1
1
1
UNIDADE 3
MINHAS METAS
MATRIZES
Compreender a definição de matrizes.
Identificar a tipologia das matrizes.
Aplicar as operações entre matrizes na computação.
Compreender o cálculo de determinantes.
Aplicar a regra de Sarrus na computação.
Aplicar o cofator na computação.
Aplicar o cálculo da matriz inversa utilizando o determinante na computação.
T E M A D E A P R E N D I Z A G E M 7
1
1
4
INICIE SUA JORNADA
Organizar informações numéricas em tabelas facilita a leitura e a interpretação
dos dados. Veja a Tabela 1 a seguir:
EQUIPAMENTO QUANTIDADE
VALOR
UNITÁRIO
CUSTO
UNITÁRIO
TEMPO DE
VIDA
Computador 15 2500 500 5
Impressora 3 1000 300 4
Scaner 2 1000 200 7
Tabela 1 – Tabela relacionando equipamentos com quantidade, valor e custo unitário e tempo de vida
Fonte: o autor.
Para saber sobre o custo unitário de uma impressora, basta observar o nú-
mero localizado na linha 3 e na coluna 4. Como se trata de uma tabela reduzida,
torna-se fácil a localização visual.
Entretanto, imagine que você trabalhe em uma empresa e necessite realizar
consultas e operações de dados de forma periódica, dispondo de tabelas longas
com muitas linhas e colunas. Seu objetivo maior é analisar dados. Nesse caso,
como seria mais conveniente a manipulação desses dados?
Uma solução para o caso de consultas de muitos dados seria importar tabelas
do aplicativo Excel, por exemplo, para uma linguagem de programação como o
Python, a fim de realizar análises mais rápidas.
No caso de operações de dados dispostos em tabelas menores ou matrizes,
podemos também utilizar as funções da linguagem de programação Python.
Além do Python, pode-se utilizar outras linguagens de programação, como Java,
C++, C#, Swift, Ruby etc.
Logicamente que, para criar matrizes e realizar operações com dados em lin-
guagens de programação, você necessita ter conhecimentos básicos dematrizes
e determinantes, estudos sobre álgebra linear.
No caso do Python, você pode trabalhar com a biblioteca numpy, que
suporta o processamento de grandes matrizes, com uma grande coleção
de funções matemáticas.
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 7
Segue um simples modelo de criação de matriz no Python:
import numpy as np
matriz = np.array(
[
[1, 2, 5, 6],
[3, 4, 8, 9],
[3, 4, 8, 9],
[1, 2, 5, 6]
]
)
print(matriz)
Por meio de funções do Python com a biblioteca numpy, você pode realizar várias
operações com matrizes de modo rápido e preciso. Não esqueça de instalar no
seu computar a biblioteca numpy no terminal ou cmd com o comado pip install
numpy, a fim de que as funções do Python criem matrizes.
Neste podcast você aprenderá sobre matrizes, sua definição, sua tipologia e suas
operações, bem como determinantes e suas resoluções por meio da regra de Sar-
rus e do cofator. Recursos de mídia disponíveis no conteúdo digital do ambiente
virtual de aprendizagem
PLAY NO CONHECIMENTO
1
1
1
Na próxima fase, será desenvolvido o tema Matrizes, sua definição, sua tipologia e
suas operações. Utilizaremos da linguagem de programação Python para realizar
operações básicas com matrizes.
DESENVOLVA SEU POTENCIAL
MATRIZES
Foi somente há pouco mais de 150 anos que as matrizes tiveram sua relevância
reconhecida. Atualmente, consideramos imprescindível estudar essas formas
através da notação e da metodologia matricial e não as encontramos apenas no
estudo da matemática, mas também na engenharia, na informática e nas tabelas
financeiras, por exemplo.
DEFINIÇÃO
Denomina-se matriz do tipo m x n (lê-se m por n) toda tabela de números
dispostos em m linhas e n colunas. Tal tabela deve ser representada entre pa-
rênteses ( ) ou colchetes [ ].
VAMOS RECORDAR?
Para que você comece entendendo matrizes e determinantes, sugiro que reveja o
conteúdo de operações com números inteiros, principalmente com o uso de sinais
negativos.
Entre no algoritmo do GeoGebra (aplicativo de acesso livre), na seção material
didático, tema Operações com números inteiros.
Nos links operação e nível, procure realizar todas as atividades propostas, as
operações de adição, de subtração, de multiplicação e de divisão, bem como
passar por todos os níveis propostos. Recursos de mídia disponíveis no conteúdo
digital do ambiente virtual de aprendizagem
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
A matriz é representada por uma letra maiúscula do alfabeto e cada item da
matriz é denominado de elemento. Os elementos de uma matriz podem ser nú-
meros reais ou complexos ou até mesmo expressões algébricas e são chamados
de entradas da matriz.
Por exemplo:
A � �
�
�
�
�
�
8 3
5 4
B
x tgx senx
x senx gx
x x tgx
�
�
�
�
�
�
�
�
�
�
�
cos
sec cot
cossec cos
A matriz B, por exemplo, será 3 x 3, pois tem três linhas e três colunas. É
importante lembrar que sempre escrevemos primeiro o número de linhas e de-
pois o número de colunas.
VOCÊ SABE RESPONDER?
Você saberia dizer quantas linhas e quantas colunas há na matriz a seguir?
C �
�
�
�
�
�
�
�
�
�
�
0 1 0
1 1 1
0 0 0
0 1 1
1 0 0
1 0 1
Para representar o elemento de uma matriz, usamos uma letra com dois índices: o
primeiro indica em que linha o elemento se encontra e o segundo, em que coluna.
Por exemplo: a23 é o elemento que está na segunda linha e na terceira coluna.
O elemento genérico de uma matriz A será indicado por aij , em que i representa a
1
1
8
linha e j representa a coluna na qual o elemento se encontra; ele é chamado de ij-
ésimo elemento da matriz.
A matriz A, do tipo 3 x 3, será escrita do seguinte modo:
A
a a a
a a a
a a a
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
Os m elementos correspondentes às linhas serão localizados pelo índice i e os n
elementos correspondentes às colunas serão localizados pelo índice j.
PENSANDO JUNTOS
Dadas duas matrizes de mesma ordem ou tipo, ou seja, mesmo número de linhas
e o mesmo número de colunas, A e B, dizemos que os elementos de mesmo índice
(linha e coluna) são correspondentes.
Por exemplo:
A
a a a
a a a
a a a
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
e B
b b b
b b b
b b b
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
a13 e b13 são correspondentes.
Duas matrizes A e B de mesma ordem m x n são iguais quando todos os seus
elementos correspondentes são iguais, isto é, sendo A aij mxn � � � e , temos A
= B quando aij = bij para todo i (i = 1, 2, 3, ..., m) e todo j (j = 1, 2, 3, ..., n).
Por exemplo:
A
a
c
�
�
�
�
�
�
�
3
5
b
b
�
��
�
�
�
�
�
1
5 7
Logo, a = -1, b = 3 e c = 7
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 7
TIPOLOGIA
Nas representações de matrizes, temos nomenclaturas específicas para cada tipo
de matriz, conforme apresentadas a seguir. A partir deste tema, utilizaremos os
parênteses ( ) para representar as matrizes.
■ Matriz coluna → Dizemos que A é uma matriz coluna quando A for de
ordem m x 1, ou seja, quando o n = 1.
Por exemplo:
A �
�
�
�
�
�
�
�
�
�
�
�
5
7
2
■ Matriz linha → Dizemos que A é uma matriz linha quando A for de
ordem 1 x n, ou seja, quando o m = 1.
Álgebra linear com aplicações
Organizador: Howard Anton e Chris Rorres
Editora: Bookman
Ano: 2012
Sobre o livro: Álgebra linear com aplicações apresenta os fun-
damentos da álgebra linear. O texto foi escrito de forma que
não é necessário conhecimento de cálculo para usar e enten-
der o conteúdo.
Também não é exigido o uso de recursos computacionais, mas
para aqueles que gostam de MATLAB, Maple, Mathematica
ou calculadoras com funcionalidade para álgebra linear es-
tão incluídos exercícios no final dos capítulos que permitem
um aprofundamento usando tais ferramentas
O último capítulo cobre 20 aplicações de álgebra linear das
mais diversas áreas: administração, economia, física, ciência
da computação, ecologia, genética e outras. As aplicações são
independentes e cada uma inclui uma lista de pré-requisitos
matemáticos.
INDICAÇÃO DE LIVRO
1
4
1
Por exemplo:
A = ( )5 0 2
A matriz coluna é importante para o estudo da álgebra linear, pois é comumente
utilizada para representar vetores.
PENSANDO JUNTOS
■ Matriz nula → No conjunto das matrizes, a matriz que tem todos os
elementos iguais a zero é denominada de matriz nula.
Por exemplo:
A � �
�
�
�
�
�
0 0
0 0
■ Matriz transposta → Dada uma matriz A aij mxn � � � , denomina-
mos transposta de A (e indicamos At) a matriz A at
ij mxn
� � � � , tal que
a aji ij� = . Em outras palavras, a matriz At é obtida trocando-se as linhas
pelas colunas da matriz A.
Por exemplo:
A �
�
�
�
�
�
�
�
4 5
1 0
e At �
��
�
�
�
�
�
4 1
5 0
Na linguagem de programação Python, vamos iniciar a aplicação de matrizes em
algoritmos de maneira lenta, passo a passo. Observe os exemplos de tipologia
que vimos nos temas anteriores.
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 7
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
print(‘Exemplo de matriz coluna’)
import numpy as np
matriz_coluna = np.array(
[
[1], [3], [8], [5]
]
)
print(matriz_coluna)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
Executando o algoritmo, teremos:
mmmmmmmmmmmmmmmmmmmmmmmmmm
Exemplo de matriz coluna
[[1]
[3]
[8]
[5]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
print(‘Exemplo de matriz linha’)
import numpy as np
matriz_linha = np.array(
[
[1, 3, 8, 5]
]
)
print(matriz_linha)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
1
4
1
Executando o algoritmo, teremos:
mmmmmmmmmmmmmmmmmmmmmmmmmm
Exemplo de matriz linha
[[1 3 8 5]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
print(‘Exemplo de matriz nula’)
import numpy as np
matriz_nula = np.array(
[
[0,0,0],[0,0,0],[0,0,0]
]
)
print(matriz_nula)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
Executando o algoritmo, teremos:
mmmmmmmmmmmmmmmmmmmmmmmmmm
Exemplo de matriz nula
[[0 0 0]
[0 0 0]
[0 0 0]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
UNIASSELVI
1
4
1
TEMA DEAPRENDIZAGEM 7
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
print(‘Exemplo de matriz normal e transposta’)
import numpy as np
matriz_X = np.array(
[
[0,4,-2],[5,7,0],[0,1,-9]
]
)
print(matriz_X)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
matriz_X_transposta = np.array(
[
[0,5,0],[4,7,1],[-2,0,-9]
]
)
print(matriz_X_transposta)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
1
4
4
Executando o algoritmo, teremos:
mmmmmmmmmmmmmmmmmmmmmmmmmm
Exemplo de matriz normal e transposta
[[ 0 4 -2]
[ 5 7 0]
[ 0 1 -9]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
[[ 0 5 0]
[ 4 7 1]
[-2 0 -9]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
■ Matriz oposta → Dada uma matriz A aij mxn � � � , a sua matriz oposta
será definida por � A aij mxn � �� � . Isso significa que a matriz oposta
da matriz A é aquela que possui elementos opostos correspondentes ao
da matriz A.
Por exemplo:
A
= −
4 5
1 0
e A
− −
=
4 5
1 0
■ Matriz quadrada Quando m = n, ou seja, o número de linhas for igual
ao número de colunas, dizemos que a matriz é quadrada de ordem nxn
ou simplesmente de ordem n. Nesse caso, teremos ordem do tipo 1x1,
2x2, 3x3, 4x4, e assim por diante.
Como já sabemos que o número de linhas é igual ao número de colunas, basta
informar a ordem, ou seja, uma matriz 1x1 pode ser simplesmente classificada
como matriz de ordem 1, uma matriz 2x2 de matriz de ordem 2 e assim suces-
sivamente.
Por exemplo, matriz de ordem 3:
A �
�
� �
�
�
�
�
�
�
�
�
�
�
2 7 4
1 0 9
0 1 3
UNIASSELVI
1
4
5
TEMA DE APRENDIZAGEM 7
Muito cuidado para não fazer confusão com dois conceitos parecidos: diagonal
principal e diagonal secundária.
Tomando como exemplo a matriz de ordem 3 anterior, a diagonal principal seria -2,
0 e -3. A diagonal secundária seria 4, 0 e 0.
ZOOM NO CONHECIMENTO
MATRIZ TRIANGULAR
Em uma matriz quadrada, quando os elementos acima ou abaixo da diagonal principal
são todos nulos (iguais a zero), dizemos que a matriz é triangular.
Por exemplo:
A �
� �
�
�
�
�
�
�
�
�
�
�
�
2 8 1
0 9 6
0 0 3
MATRIZ DIAGONAL
Em uma matriz quadrada de ordem n, quando todos os elementos posicionados aci-
ma e abaixo da diagonal principal são nulos, denominamos de matriz diagonal.
Por exemplo:
A �
�
�
�
�
�
�
�
�
�
�
�
�
5 0 0
0 10 0
0 0 6
MATRIZ IDENTIDADE
Em uma matriz quadrada de ordem n, quando todos os elementos da diagonal prin-
cipal são iguais a 1 e os outros elementos são iguais a zero, denominamos de matriz
identidade e seu símbolo é In (onde n representa a ordem da matriz).
Por exemplo:
A �
�
�
�
�
�
�
�
�
�
�
1 0 0
0 1 0
0 0 1
1
4
1
Na linguagem de programação Python, vamos dar continuidade à aplicação de matri-
zes em algoritmos. Observe os exemplos de tipologia que vimos nos temas anteriores.
MATRIZ SIMÉTRICA
Em uma matriz quadrada, quando tiver o elemento aij igual ao elemento aji, a matriz é
denominada de simétrica.
Por exemplo:
A �
�
�
�
�
�
�
�
�
�
�
1 4 5
4 2 6
5 6 3
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
print(‘Exemplo de matriz quadrada oposta’)
import numpy as np
matriz_X = np.array(
[
[0,4,-2],[5,7,0],[0,1,-9]
]
)
print(matriz_X)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
matriz_X_oposta = - matriz_X
print(matriz_X_oposta)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 7
Executando o algoritmo, teremos:
mmmmmmmmmmmmmmmmmmmmmmmmmm
Exemplo de matriz quadrada oposta
[[ 0 4 -2]
[ 5 7 0]
[ 0 1 -9]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
[[ 0 -4 2]
[-5 -7 0]
[ 0 -1 9]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
print(‘Exemplos de matrizes quadradas: triangular, diagonal, identidade e
simétrica.’)
import numpy as np
matriz_triangular = np.array(
[
[1,4,-2],[0,7,0],[0,0,-9]
]
)
print(matriz_triangular)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
matriz_diagonal = np.array(
[
[3,0,0],[0,7,0],[0,0,-9]
]
)
print(matriz_diagonal)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
matriz_identidade = np.array(
[
[1,0,0],[0,1,0],[0,0,1]
]
)
1
4
8
print(matriz_identidade)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
matriz_simétrica = np.array(
[
[1,4,5],[4,2,6],[5,6,3]
]
)
print(matriz_simétrica)
print(‘mmmmmmmmmmmmmmmmmmmmmmmmmm’)
Executando o algoritmo, teremos:
Exemplos de matrizes quadradas: triangular, diagonal, identidade e simétrica.
[[ 1 4 -2]
[ 0 7 0]
[ 0 0 -9]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
[[ 3 0 0]
[ 0 7 0]
[ 0 0 -9]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
[[1 0 0]
[0 1 0]
[0 0 1]]
mmmmmmmmmmmmmmmmmmmmmmmmmm
[[1 4 5]
[4 2 6]
[5 6 3]]
Mmmmmmmmmmmmmmmmmmmmmmmmmm
Para finalizarmos esse assunto sobre tipologia, vamos aprender a escrever uma
matriz em função de regras predefinidas.
Por exemplo:
Dada a seguinte matriz quadrada de ordem 2, escreva a matriz A, com aij
assumindo os seguintes valores:
UNIASSELVI
1
4
9
TEMA DE APRENDIZAGEM 7
a i j para i j
a para i j
ij
ij
� � �
� �
2
0
, �
� � � � � ,
A
a a
a a
�
�
�
�
�
�
�
11 12
21 22
Teremos:
a
a
a
a
11
12
21
22
1 2 1 3
0
2 2 1 4
2 2 2 6
� � �
�
� � �
� � �
.
.
.
Logo, a matriz será:
A � �
�
�
�
�
�
3 0
4 6
Na linguagem de programação Python, podemos realizar este tipo de resolução
colocando em cada posição da matriz a resolução parcial. Em algoritmos mais
avançados, você pode trabalhar com as funções if e else do Python para os índices i e j.
print(‘++++++++++++++++++++++++++’)
print(‘Escrever uma matriz em função de regras pré-estabelecidas.’)
print(‘Se i>=j, então aij = i + 2*j. Se i<j, então aij = 0.’)
print(‘Temos a11 = 1 + 2*1’)
print(‘Temos a12 = 0’)
print(‘Temos a21 = 2 + 2*1’)
print(‘Temos a22 = 2 + 2*2’)
print(‘++++++++++++++++++++++++++’)
import numpy as np
matriz_A = np.array(
[
[1 + 2*1,0],[2 + 2*1,2 + 2*2]
]
)
1
5
1
print(matriz_A)
print(‘++++++++++++++++++++++++++’)
Executando o algoritmo, teremos:
++++++++++++++++++++++++++
Escrever uma matriz em função de regras preestabelecidas.
Se i>=j, então aij = i + 2*j. Se i<j, então aij = 0.
Temos a11 = 1 + 2*1
Temos a12 = 0
Temos a21 = 2 + 2*1
Temos a22 = 2 + 2*2
++++++++++++++++++++++++++
[[3 0]
[4 6]]
++++++++++++++++++++++++++
VOCÊ SABE RESPONDER?
Uma matriz A é simétrica se, e somente se, A = At. Você sabe determinar o valor de
a para que
A
a
a
�
�
�
��
�
�
��
1
22
seja simétrica?
OPERAÇÕES COM MATRIZES
No desenvolvimento do cálculo com matrizes, realizamos operações matemáticas
seguindo regras específicas. Veremos, a seguir, essas regras, que são aplicadas na
adição, subtração e multiplicação.
UNIASSELVI
1
5
1
TEMA DE APRENDIZAGEM 7
ADIÇÃO E SUBTRAÇÃO
Inicialmente, consideremos duas matrizes A e B do tipo 2 x 3.
A �
�
�
�
�
�
�
�
�
3 5
4 7
2
6
B �
� ��
�
�
�
�
�
1 4
6 3
1
2
Agora, vamos determinar uma matriz C, tal que seus elementos sejam resultan-
tes da soma dos elementos de A com os elementos de B, da seguinte forma:
c a bij ij ij� � .
Portanto, os seis elementos de C (2 x 3 = 6) serão calculados a partir da mesma po-
sição dos elementos em A e B. Vejamos como ficará a adição dessas duas matrizes.
Portanto: A + B = C e podemos operacionalizar da seguinte maneira:
C �
�
�
�
�
�
�
�
� �
� ��
�
�
�
�
� �
� �
� �
� �
� �
�
�
�
�
�
�
3 5
4 7
2
6
1 4
6 3
1
2
3 1 5 4
4 6 7 3
2 1
6 2
��
�
�
�
�
�
�
�
�
4 1
10 10
3
4
Você deve observar que somente é possível somar e também subtrair matrizes
que possuem a mesma ordem, isto é, o mesmo número de linhas e colunas.
PENSANDO JUNTOS
Agora, consideremos as mesmas duas matrizes A e B do tipo 2 x 3.
A �
�
�
�
�
�
�
�
�
3 5
4 7
2
6
B �
� ��
�
�
�
�
�
1 4
6 3
1
2
Vamos determinar uma matriz D, tal que seus elementos sejam resultantes da
diferença dos elementos de A com os elementos de B, da seguinte forma:
d a bij ij ij� � .
Portanto, os seis elementos de D (2 x 3 = 6) serão calculados a partir da mesma posi-
ção dos elementos em A e B. Vejamos como ficará a subtração dessas duas matrizes.
Portanto: A - B = D e podemos operacionalizar da seguinte maneira:
1
5
1
D �
�
�
�
�
�
�
�
� �
� ��
�
�
�
�
� �� � �
� �
� � �
� �
3 5
4 7
2
6
1 4
6 3
1
2
3 1 5 4
4 6 7 3
2 1
6 2
( ) ( )��
�
�
�
�
� � �
�
�
�
�
�
�
�
�
2 9
2 4
1
8
Outra forma utilizada para a subtração de matrizes seria utilizar a ideia de soma
com a matriz oposta. Assim, sendo A e B, duas matrizes do tipo mxn, denomina-
mos diferença entre A e B (representada por A - B) a soma da matriz A com a matriz
oposta de B, isto é, A - B = A + (-B).
PENSANDO JUNTOS
Propriedades da adição de matrizes
Estas propriedades poderão auxiliar nas operações entre matrizes, pois nos pos-
sibilitam resolvê-las mais rapidamente.
■ Associativa: (A + B) + C = A + (B + C).
■ Comutativa: A + B = B + A.
■ Elemento neutro: 0 + A = A.
■ Elemento oposto: A + (-A) = 0.
Na linguagem de programação Python, continuamos a avançar em novas funções.
Agora, aplicaremos as operações de adição e de subtração de matrizes. Utilizaremos
das mesmas matrizes anteriores e realizaremos as operações de forma automática.
Lembrando que você poderá utilizar-se de outras linguagens de programação.
UNIASSELVI
1
5
1
TEMA DE APRENDIZAGEM 7
print(‘++++++++++++++++++++++++++’)
print(‘Cálculo da soma e da diferença de matrizes.’)
print(‘++++++++++++++++++++++++++’)
import numpy as np
matriz_A = np.array(
[
[3,5,-2],[4,7,-6]
]
)
print(‘A matriz A é: ‘)
print( matriz_A)
print(‘++++++++++++++++++++++++++’)
matriz_B = np.array(
[
[1,-4,-1],[6,3,2]
]
)
print(‘A matriz B é: ‘)
print( matriz_B)
print(‘++++++++++++++++++++++++++’)
matriz_C = matriz_A + matriz_B
matriz_D = matriz_A - matriz_B
print(‘A matriz C = A + B é: ‘)
print( matriz_C)
print(‘++++++++++++++++++++++++++’)
print(‘A matriz D = A - B é: ‘)
print( matriz_D)
print(‘++++++++++++++++++++++++++’)
1
5
4
Executando o algoritmo, teremos:
++++++++++++++++++++++++++
Cálculo da soma e da diferença de matrizes
++++++++++++++++++++++++++
A matriz A é:
[[ 3 5 -2]
[ 4 7 -6]]
++++++++++++++++++++++++++
A matriz B é:
[[ 1 -4 -1]
[ 6 3 2]]
++++++++++++++++++++++++++
A matriz C = A + B é:
[[ 4 1 -3]
[10 10 -4]]
++++++++++++++++++++++++++
A matriz D = A - B é:
[[ 2 9 -1]
[-2 4 -8]]
++++++++++++++++++++++++++
MULTIPLICAÇÃO
Na multiplicação de uma matriz por um número real, basta multiplicar cada
elemento da matriz por este número real.
Por exemplo, E = 4 . A:
E A� �
�
�
�
�
�
�
�
� �
�
�
�
�
�
�
�
�4 4
3 5
4 7
2
6
12 20
16 28
8
24
. .
Propriedades da multiplicação de uma matriz por um número real
Sendo A e B matrizes de mesma ordem mxn e x e y números reais quaisquer,
valem as seguintes propriedades:
UNIASSELVI
1
5
5
TEMA DE APRENDIZAGEM 7
■ Associativa: x . (yA) = (xy) . A.
■ Distributiva de um número real em relação à adição de matrizes: x
. (A + B) = xA + xB.
■ Distributiva de uma matriz em relação à adição de dois números
reais: (x + y) . A = xA + yA.
■ Elemento neutro: x . A = A, se x = 1.
Veremos agora a definição de multiplicação de uma matriz A por uma B.
Dada uma matriz A = a jj� � do tipo mxn e uma matriz B bjj � � � do tipo nxp, o
produto da matriz A pela matriz B é a matriz C cij � � � do tipo mxp, tal que o
elemento cij é calculado multiplicando-se ordenadamente os elementos da linha
i, da matriz A, pelos elementos da coluna j, da matriz B, e somando-se os produtos
obtidos. Para dizer que a matriz C é o produto de A por B, vamos indicá-la por AB.
Por exemplo:
A �
�
�
�
�
�
�
�
�
�
�
1
2
3
2
3
4
e B �
�
�
�
�
�
�
1 1
2 3
2
3
Pela definição de produto de matrizes, verifica-se que só podemos multiplicar
matrizes quando o número de colunas da primeira matriz for igual ao número de
linhas da segunda matriz.
PENSANDO JUNTOS
Considerando
F AB� �
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� �
� � �1
2
3
2
3
4
1 1
2 3
2
3
1 1 2 2 1 1 2 3 1 2 2 3
2.
. . . . . .
.11 3 2 2 1 3 3 2 2 3 3
3 1 4 2 3 1 4 3 3 2 4 3
5 7 8
8 11� � �
� � �
�
�
�
�
�
�
�
�
�
�
�. . . . .
. . . . . .
113
11 15 18
�
�
�
�
�
�
�
�
�
�
1
5
1
No Python, podemos utilizar uma função específica para calcular de maneira
rápida o produto de duas matrizes. Esta função se chama dot.
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Cálculo da multiplicação de matrizes.’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
import numpy as np
A = [[1, 2],
[2, 3],
[3, 4]]
print(‘Matriz A será :’, A)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
B = [[1, 1, 2],
[2, 3, 3]]
print(‘Matriz B será :’, B)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
result= [[0,0,0,0],
[0,0,0,0],
[0,0,0,0]]
result = np.dot(A,B)
print(‘Resultado AB:’)
for r in result:
print(r)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
Executando o algoritmo, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxx
Cálculo da multiplicação de matrizes.
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz A será : [[1, 2], [2, 3], [3, 4]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz B será : [[1, 1, 2], [2, 3, 3]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Resultado AB:
UNIASSELVI
1
5
1
TEMA DE APRENDIZAGEM 7
[5 7 8]
[ 8 11 13]
[11 15 18]
xxxxxxxxxxxxxxxxxxxxxxxxxx
VOCÊ SABE RESPONDER?
Você sabe dizer se é possível multiplica a matriz A, 3x2, pela matriz B, 1x2?
MATRIZ INVERSA
Veremos agora a definição de matriz inversa de uma matriz A.
Dada uma matriz quadrada A, de ordem n, se X é uma matriz, tal que
AX I e XA In n= = , em que In é a matriz identidade de ordem n, então, X é
denominada matriz inversa de A, sendo simbolizada por A−1.
Por exemplo:
A �
�
�
�
�
�
�
�
1 2
2 1
e
B �
��
�
�
�
�
�
1 5 2 5
2 5 1 5
/ /
/ /
Utilizar o algoritmo anterior para verificar se chegamos à matriz identidade.
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Cálculo da multiplicação de matrizes.’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
import numpy as np
A = [[1, 2],
[-2, 1]]
print(‘Matriz A será :’, A)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
B = [[1/5, -2/5],
1
5
8
[2/5, 1/5]]
print(‘Matriz B será :’, B)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
result= [[0,0,0,0],
[0,0,0,0],
[0,0,0,0]]
result = np.dot(A,B)
print(‘Resultado AB:’)
for r in result:
print(r)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
Executando o algoritmo, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxx
Cálculo da multiplicação de matrizes.
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz A será: [[1, 2], [-2, 1]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz B será : [[0.2, -0.4], [0.4, 0.2]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Resultado AB:
[1. 0.]
[0. 1.]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Observe que B é a matriz inversa de A ou B = A-1.
A . B = In.
Se você deseja verificar se existe a matriz inversa e qual ela é, você pode utilizar ou-
tra função do Python, a linalg.inv. Suponha que você queira saber a inversa de A.
UNIASSELVI
1
5
9
TEMA DE APRENDIZAGEM 7
A �
�
�
�
�
�
�
�
1 2
2 1
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Cálculo da matriz inversa.’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
import numpy as np
arr = np.array([[1, 2], [-2, 1]])
arr_inv = np.linalg.inv(arr)
print(‘Resultado:’)
print(arr_inv)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
Executando o algoritmo, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxx
Cálculo da matriz inversa.
xxxxxxxxxxxxxxxxxxxxxxxxxx
[[ 0.2 -0.4]
[ 0.4 0.2]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Veja que
B �
��
�
�
�
�
� �
��
�
�
�
�
�
1 5 2 5
2 5 1 5
0 2 0 4
0 4 0 2
/ /
/ /
, ,
, ,
Propriedades da multiplicação de matrizes
■ Associativa: (A. B) . C = A . (B . C).
■ Distributiva à direita em relação à adição: (A + B) . C = A . C + B . C.
■ Distributiva à esquerda em relação à adição: A . (B + C) = A . B + A . C
Em geral, A·B ≠ B·A, para A e B duas matrizes quaisquer, isto é, não é válida a
propriedade comutativa da multiplicação para matrizes, porém A·I = I·A = A,
em que I é a matriz identidade de ordem apropriada e A é uma matriz qualquer.
1
1
1
VOCÊ SABE RESPONDER?
Você sabe dizer se é possível A . B = 0 sem termos A = 0 ou B = 0?
Você pode também realizar exercícios no algoritmo do GeoGebra (aplicativo de
acesso livre), na seção material didático, tema Todas as operações com matrizes.
Escolha uma das operações, exceto determinante, que será explicado no próximo
tema. Para iniciar, você deveentrar com os elementos dos conjuntos A e B. Re-
cursos de mídia disponíveis no conteúdo digital do ambiente virtual de apren-
dizagem
EU INDICO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
Resumindo as matrizes, teremos:
• Matriz: tipo m x n é toda tabela de números dispostos em m linhas e n colunas.
• Matriz coluna: for de ordem m x 1, ou seja, quando o n = 1.
• Matriz linha: for de ordem 1 x n, ou seja, quando o m = 1.
• Matriz nula: tem todos os elementos iguais a zero.
• Matriz transposta: Dada uma matriz A = (aij)mxn, denominamos transposta de A (e
indicamos At) a matriz At = (a’ij)mxn, tal que a’ji = aij. Em outras palavras, a matriz At é
obtida trocando-se as linhas pelas colunas da matriz A.
• Matriz oposta: Dada uma matriz A = (aij)mxn, a sua matriz oposta será definida por – A
= (- aij)mxn.
• Matriz quadrada: Quando m = n, ou seja, o número de linhas for igual ao número de
colunas, dizemos que a matriz é quadrada de ordem nxn ou simplesmente de ordem
n.
• Matriz triangular: Em uma matriz quadrada, quando os elementos acima ou abaixo
da diagonal principal são todos nulos.
• Matriz diagonal: Em uma matriz quadrada de ordem n, quando todos os elementos
posicionados acima e abaixo da diagonal principal são nulos.
• Matriz identidade: Em uma matriz quadrada de ordem n, quando todos os elementos
da diagonal principal são iguais a 1 e os outros elementos são iguais a zero.
• Matriz simétrica: Em uma matriz quadrada, quando tiver o elemento aij igual ao
elemento aji.
• Adição de matrizes: uma matriz C tal que seus elementos sejam resultantes da
soma dos elementos de A com os elementos de B, da seguinte forma: cij = aij + bij.
• Subtração de matrizes: uma matriz D tal que seus elementos sejam resultantes
da diferença dos elementos de A com os elementos de B, da seguinte forma: dij =
aij - bij.
• Multiplicação de um número real por uma matriz: basta multiplicar cada elemento
da matriz por este número real.
• Multiplicação de matrizes: Dada uma matriz A = (ajj) do tipo mxn e uma matriz B =
(bjj) do tipo nxp, o produto da matriz A pela matriz B é a matriz C = (cij) do tipo mxp,
tal que o elemento cij é calculado multiplicando-se ordenadamente os elementos
da linha i, da matriz A, pelos elementos da coluna j, da matriz B, e somando-se os
produtos obtidos.
• Matriz inversa: Dada uma matriz quadrada A, de ordem n, se X é uma matriz, tal que
AX = In e XA = In, onde In é a matriz identidade de ordem n, então X é denominada
matriz inversa de A, sendo simbolizada por A−1.
1
1
1
Na próxima fase, será desenvolvido o tema determinantes, sua definição, deter-
minantes de uma matriz de primeira e de segunda ordem, regra de Sarrus, cofator,
determinantes de ordem maior que três e cálculo da matriz inversa utilizando
determinante. Utilizar da linguagem de programação Python para realizar ope-
rações básicas com matrizes.
DETERMINANTES
Na história da matemática, a ideia de determinante aparece em soluções de sis-
temas lineares pelo menos um século antes do matemático inglês Arthur Cayley
criar as teorias das matrizes.
Apesar de hoje estudarmos primeiro matrizes, depois determinantes e, em
seguida, sistemas lineares, a ordem histórica foi: sistemas lineares, determinantes
e, somente mais tarde, as matrizes.
DEFINIÇÃO
Este tema será importante para soluções de sistemas lineares que são muito uti-
lizados na informática, bem como em problemas de geometria analítica.
O determinante é um número real associado a uma matriz quadrada. É im-
portante destacar que cada matriz possui um único determinante.
O determinante de uma matriz A será denotado por det A ou por DA.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
DETERMINANTE DE UMA MATRIZ DE PRIMEIRA E DE
SEGUNDA ORDEM
O determinante de uma matriz de primeira ordem, A = (a11), é definido pelo
valor do seu elemento único a11.
Por exemplo:
Se M = (6), então det M = 6.
A matriz quadrada de segunda ordem
A
a a
a a
�
�
�
�
�
�
�
11 12
21 22 tem como determi-
nante o número real obtido pela expressão det A a a a a � �� � � �11 22 21 12. . .
Por exemplo:
A � �
�
�
�
�
�
2 7
4 8
, a determinante será
det A � � � �� � � �2 8 4 7 16 28 12. � . � .
Álgebra linear
Organizador: Alfredo Steinbruch e Paulo Winterle
Editora: Pearson
Ano: 1987
Sobre o livro: com uma linguagem clara e acessível, o livro bus-
ca ensinar ao leitor essa disciplina fazendo uso de exercícios
com respostas para a fixação da parte teórica apresentada.
Esta edição, totalmente revisada, teve seus conceitos reformu-
lados; supressões e acréscimos e, sobretudo, a inclusão de 519
problemas que o livro anterior não possuía.
O texto se tornou mais prático e mais simples para atender ao
objetivo maior que é o de ser útil ao processo de ensino-apren-
dizagem.Há um capítulo dedicado a determinantes com mui-
tos exercícios práticos aplicáveis na computação.
INDICAÇÃO DE LIVRO
1
1
4
Podemos gerar um algoritmo na linguagem de programação Python simples para
calcular a determinante de uma matriz de segunda ordem. Basta multiplicarmos
os elementos da diagonal principal e subtrairmos o produto pela multiplicação
dos elementos da diagonal secundária.
Nesse algoritmo, avançamos com a utilização da função input(), em que en-
tramos com os valores para formar a matriz.
print(‘++++++++++++++++++++++++++’)
print(‘Cálculo da determinante de uma matriz de segunda ordem.’)
print(‘++++++++++++++++++++++++++’)
import numpy as np
a = int(input(‘Entre com o elemento a11: ‘))
b = int(input(‘Entre com o elemento a12: ‘))
c = int(input(‘Entre com o elemento a21: ‘))
d = int(input(‘Entre com o elemento a22: ‘))
matriz_A = np.array(
[
[a,b],[c,d]
]
)
print(‘A matriz A é: ‘)
print( matriz_A)
print(‘++++++++++++++++++++++++++’)
D = (a*d)-(b*c)
print(‘O valor da determinante é:’, D)
print(‘++++++++++++++++++++++++++’)
Executando o algoritmo, temos:
++++++++++++++++++++++++++
Cálculo da determinante de uma matriz de segunda ordem.
++++++++++++++++++++++++++
Entre com o elemento a11: 2
Entre com o elemento a12: 7
Entre com o elemento a21: 4
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 7
Entre com o elemento a22: 8
A matriz A é:
[[2 7]
[4 8]]
++++++++++++++++++++++++++
O valor da determinante é: -12
++++++++++++++++++++++++++
DETERMINANTE DE UMA MATRIZ DE TERCEIRA ORDEM –
REGRA DE SARRUS
Considere a matriz A
a a a
a a a
a a a
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
Os passos para a resolução são:
1°: repetimos as duas primeiras colunas ao lado da terceira coluna:
A
a a a
a a a
a a a
a
a
a
a
a
a
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
11
21
31
12
22
32
2°: encontramos a soma do produto dos elementos da diagonal principal com
os dois produtos obtidos pela multiplicação dos elementos das paralelas a essa
diagonal:
A
a a a
a a a
a a a
a
a
a
a
a
a
�
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
11
21
31
12
22
32
a a a a a a a a a D11 22 33 12 23 31 13 21 32 1. . . . . .� � �
3°: encontramos a soma do produto dos elementos da diagonal secundária com
os dois produtos obtidos pela multiplicação dos elementos das paralelas a essa
diagonal:
A
a a a
a a a
a a a
a
a
a
a
a
a
�
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
11
21
31
12
22
32
a a a a a a a a a D13 22 31 11 23 32 12 21 33 2. . . . . .� � �
1
1
1
4°: por fim, devemos operar: a soma do produto da diagonal principal com suas
paralelas, menos a soma do produto da diagonal secundária com suas paralelas.
Dessa forma:
Det A D D = 1 2�
Essa regra é válida repetindo-se as duas primeiras linhas abaixo da matriz, porém
utilizaremos a repetição das duas primeiras colunas.
Sempre que tivermos uma matriz dentro de barras simples, trataremos de cálculo
de determinante. Por exemplo, 3 1
5 8
19=
estamos indicando que o determi-
nante da matriz é 19.
PENSANDO JUNTOS
Exemplo de cálculo de determinante pela regra dePierre Sarrus.
A �
�
�
�
�
�
�
�
�
�
�
3 4 2
2 1 5
0 7 4
1°: repetimos as duas primeiras colunas ao lado da terceira coluna:
A �
�
�
�
�
�
�
�
�
�
�
3 4 2
2 1 5
0 7 4
3
2
0
4
1
7
2°: encontramos a soma do produto dos elementos da diagonal principal com
os dois produtos obtidos pela multiplicação dos elementos das paralelas a essa
diagonal:
A �
�
�
�
�
�
�
�
�
�
�
� � � � �
3 4 2
2 1 5
0 7 4
3
2
0
4
1
7
3 1 4 4 5 0 2 2 7 12 . . . . . . 00 28 40 1 � � � D
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
3°: encontramos a soma do produto dos elementos da diagonal secundária com os
dois produtos obtidos pela multiplicação dos elementos das paralelas a essa diagonal:
A �
�
�
�
�
�
�
�
�
�
�
� � � � � � �
3 4 2
2 1 5
0 7 4
3
2
0
4
1
7
1 0 5 7 2 4 052 3 4 0 1 32 137. . . . . . �� D2
4°: por fim, devemos operar: a soma do produto da diagonal principal com suas
paralelas, menos a soma do produto da diagonal secundária com suas paralelas.
Dessa forma:
Det A D D � � � �1 2 40 137 97� �
Para encerrarmos este tema, iremos gerar um algoritmo na linguagem de progra-
mação Python, para calcular a determinante de uma matriz de terceira ordem,
pela regra de Sarrus.
print(‘******’*10)
print(‘Cálculo da determinante de uma matriz de terceira ordem’)
import numpy as np
def main():
m = np.array([(3, 4, 2), (2, 1, 5), (0, 7, 4)])
det = ((m[0][0] * m[1][1] * m[2][2]) + (m[0][1]
* m[1][2] * m[2][0]) + (m[0][2] * m[1][0] * m[2][1])) - ((m[2][0]
* m[1][1] * m[0][2]) + (m[2][1] * m[1][2] * m[0][0]) + (m[2][2]
* m[1][0] * m[0][1]))
print(“O determinante da matriz é: “, det)
if __name__ == “__main__”:
main()
print(‘******’*10)
No contexto deste algoritmo, m[0][0] representa a posição de um elemento na
matriz, ou seja, nesse caso, a11.
1
1
8
Def main() é o nome do ambiente principal no qual o código é executado.
if __name__ == “__main__” para permitir ou evitar que partes do código
sejam executadas ao importar os módulos.
Você poderia utilizar a função input() para entrar com os valores da matriz.
Executando o algoritmo, temos:
************************************************************
Cálculo da determinante de uma matriz de terceira ordem
O determinante da matriz é: -97
************************************************************
Ainda você pode utilizar a função do Python linalg.det(m), em vez de montar
uma complexa sequência de posições dos elementos da matriz.
print(‘******’*10)
print(‘Cálculo da determinante de uma matriz de terceira ordem’)
import numpy as np
def main():
m = np.array([(3, 4, 2), (2, 1, 5), (0, 7, 4)])
det = np.linalg.det(m)
print(“O determinante da matriz é: “, det)
if __name__ == “__main__”:
main()
print(‘******’*10)
Executando o algoritmo, temos:
************************************************************
Cálculo da determinante de uma matriz de terceira ordem
O determinante da matriz é: -97.0
************************************************************
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 7
COFATOR
Dada uma matriz A aij� �� �� , quadrada de ordem n �≥ 2 e n∈* , denomina-
mos cofator de aij o produto de �� � �1 i j pelo determinante da matriz (Dij) que
se obtém de A, suprimindo a linha de ordem i e a coluna de ordem j.
Por exemplo:
Considere a matriz A �
�
�
�
�
�
�
�
�
�
�
3 4 2
2 1 5
0 7 4
.
O cofator de �a23 será:
C D D D23
2 3
23
5
23 231 1� � � � � �� � � �� . .
� � �
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� � �
2
D23 1
3 4
2 1 5
0 7 4
1
3 4
0 7
21. .
Você pode gerar um algoritmo na linguagem de programação Python para cal-
cular o cofator de uma matriz 3x3, utilizando os conceitos já aprendidos.
C Dij
i j
ij� �� � � 1 .
1
1
1
print(‘******’*10)
print(‘Cálculo do cofator de uma matriz de terceira ordem.’)
import numpy as np
matriz_A = np.array(
[
[3,4,2],[2,1,5],[0,7,4]
]
)
print(‘A matriz A 3x3 será: ‘)
print( matriz_A)
print(‘******’*10)
i = int(input(‘Entre com o valor da linha do elemento da matriz’))
j = int(input(‘Entre com o valor da coluna do elemento da matriz’))
print(‘******’*10)
print(‘Informe as posições da matriz restante retirando a linha e coluna in-
formada.’)
a = int(input(‘Entre com o valor do elemento da posição a11: ‘))
b = int(input(‘Entre com o valor do elemento da posição a12: ‘))
c = int(input(‘Entre com o valor do elemento da posição a21: ‘))
d = int(input(‘Entre com o valor do elemento da posição a22: ‘))
print(‘******’*10)
matriz_B = np.array(
[
[a,b],[c,d]
]
)
print(‘A matriz E 2x2 para calcular o determinante será: ‘)
print( matriz_B)
print(‘******’*10)
e = (a*d)- (b*c)
f = (-1)**(i+j)*e
print(‘O cofator será:’)
print(f)
print(‘******’*10)
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
Executando o algoritmo, temos:
************************************************************
Cálculo do cofator de uma matriz de terceira ordem
A matriz A 3x3 será:
[[3 4 2]
[2 1 5]
[0 7 4]]
************************************************************
Entre com o valor da linha do elemento da matriz 2
Entre com o valor da coluna do elemento da matriz 3
************************************************************
Informe as posições da matriz restante retirando a linha e coluna informada
Entre com o valor do elemento da posição a11: 3
Entre com o valor do elemento da posição a12: 4
Entre com o valor do elemento da posição a21: 0
Entre com o valor do elemento da posição a22: 7
************************************************************
A matriz E 2x2 para calcular o determinante será:
[[3 4]
[0 7]]
************************************************************
O cofator será:
-21
************************************************************
DETERMINANTE DE ORDEM MAIOR QUE TRÊS
Para calcularmos o determinante de matrizes de ordem superior a 3, usaremos
o Teorema de Pierre Laplace. Este método é utilizado de forma acentuada para
matrizes quadradas de ordem maior que 3, uma vez que a Regra de Sarrus apli-
ca-se somente a determinantes de ordem igual a 3.
Esse teorema pode ser utilizado para matrizes de ordem 2 ou superior, po-
rém, os métodos ensinados anteriormente apresentam resolução de uma forma
mais rápida.
1
1
1
O determinante de uma matriz quadrada de ordem n �≥ 2 é a soma dos produtos
dos elementos de uma fila (linha ou coluna) pelos respectivos cofatores.
A resolução se torna mais rápida quando consideramos a fila que contém o maior
número de zeros, pois, nesse caso, não é necessário calcular o determinante.
PENSANDO JUNTOS
Por exemplo:
Considere a matriz A �
�
�
�
�
�
�
�
�
�
�
3 4 2
2 1 5
0 7 4
.
O cofator de a23 será:
C D D D11
1 1
11
2
11 111 1� � � � �� � � �� . .
D11
3 4 2
2 1 5
0 7 4
1 5
7 4
4 35 31�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� � � � �
O cofator de a23 será:
C D D D21
2 1
21
3
21 211 1� � � � � �� � � �� . .
� � �
�
�
�
�
�
�
�
�
�
�
� �
�
�
�
�
�
� � � � � � D21 1
3 4 2
2 1 5
0 7 4
1
4 2
7 4
16 14 2. . ( )
D C C C C3 2 0 3 31 2 2 0 93 4 9711 21 31 31 . . . . . . -
Podemos tornar o algoritmo anterior maior com a repetição do primeiro bloco
em três blocos para calcular os cofatores de cada posição em uma fila.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
Você pode acrescentar no final do algoritmo a fórmula anterior, permitindo o
cálculo da determinante maior ou igual a 2.
print(‘******’*10)
print(‘Cálculo do cofator de uma matriz de terceira ordem.’)
import numpy as np
matriz_A = np.array(
[
(3, 4, 2), (2, 1, 5), (0, 7, 4)
]
)
print(‘A matriz A 3x3 será: ‘)
print( matriz_A)
print(‘******’*10)
i1 = int(input(‘Entre com o valor da linha do elemento da matriz’))
j1 = int(input(‘Entre com o valor da coluna do elemento da matriz’))
print(‘******’*10)
print(‘Informe as posições da matriz restante retirando a linha e coluna in-
formada.’)
a = int(input(‘Entre com o valor do elemento da posição a11: ‘))
b = int(input(‘Entre com o valor do elemento da posição a12: ‘))
c = int(input(‘Entre com o valor do elemento da posição a21: ‘))
d = int(input(‘Entrecom o valor do elemento da posição a22: ‘))
print(‘******’*10)
matriz_B = np.array(
[
[a,b],[c,d]
]
)
print(‘A matriz E 2x2 para calcular o determinante será: ‘)
print( matriz_B)
print(‘******’*10)
e1 = (a*d)- (b*c)
f1 = (-1)**(i1+j1)*e1
print(‘O cofator será:’)
1
1
4
print(f1)
print(‘******’*10)
print(‘******’*10)
i2 = int(input(‘Entre com o valor da linha do elemento da matriz’))
j2 = int(input(‘Entre com o valor da coluna do elemento da matriz’))
print(‘******’*10)
print(‘Informe as posições da matriz restante retirando a linha e coluna in-
formada.’)
n = int(input(‘Entre com o valor do elemento da posição a11: ‘))
m = int(input(‘Entre com o valor do elemento da posição a12: ‘))
t = int(input(‘Entre com o valor do elemento da posição a21: ‘))
r = int(input(‘Entre com o valor do elemento da posição a22: ‘))
print(‘******’*10)
matriz_C = np.array(
[
[n,m],[t,r]
]
)
print(‘A matriz E 2x2 para calcular o determinante será: ‘)
print( matriz_C)
print(‘******’*10)
e2 = (n*r)- (m*t)
f2 = (-1)**(i2+j2)*e2
print(‘O cofator será:’)
print(f2)
print(‘******’*10)
i3 = int(input(‘Entre com o valor da linha do elemento da matriz’))
j3 = int(input(‘Entre com o valor da coluna do elemento da matriz’))
print(‘******’*10)
print(‘Informe as posições da matriz restante retirando a linha e coluna in-
formada.’)
w = int(input(‘Entre com o valor do elemento da posição a11: ‘))
y = int(input(‘Entre com o valor do elemento da posição a12: ‘))
z = int(input(‘Entre com o valor do elemento da posição a21: ‘))
s = int(input(‘Entre com o valor do elemento da posição a22: ‘))
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 7
print(‘******’*10)
matriz_D = np.array(
[
[w,y],[z,s]
]
)
print(‘A matriz E 2x2 para calcular o determinante será: ‘)
print( matriz_D)
print(‘******’*10)
e3 = (w*s)- (y*z)
f3 = (-1)**(i3+j3)*e3
print(‘O cofator será:’)
print(f3)
print(‘******’*10)
k = int(input(‘Entre com o valor do elemento da posição 1: ‘))
h = int(input(‘Entre com o valor do elemento da posição 2: ‘))
x = int(input(‘Entre com o valor do elemento da posição 3: ‘))
q = k*f1+h*f2+f3*x
print(‘Determinante será: ‘, q)
print(‘******’*10)
Executando o algoritmo, teremos:
************************************************************
Cálculo do cofator de uma matriz de terceira ordem
A matriz A 3x3 será:
[[3 4 2]
[2 1 5]
[0 7 4]]
************************************************************
Entre com o valor da linha do elemento da matriz 1
Entre com o valor da coluna do elemento da matriz 1
************************************************************
Informe as posições da matriz restante retirando a linha e coluna informada
Entre com o valor do elemento da posição a11: 1
Entre com o valor do elemento da posição a12: 5
1
1
1
Entre com o valor do elemento da posição a21: 7
Entre com o valor do elemento da posição a22: 4
************************************************************
A matriz E 2x2 para calcular o determinante será:
[[1 5]
[7 4]]
************************************************************
O cofator será:
-31
************************************************************
************************************************************
Entre com o valor da linha do elemento da matriz 2
Entre com o valor da coluna do elemento da matriz 1
************************************************************
Informe as posições da matriz restante retirando a linha e coluna informada.
Entre com o valor do elemento da posição a11: 4
Entre com o valor do elemento da posição a12: 2
Entre com o valor do elemento da posição a21: 7
Entre com o valor do elemento da posição a22: 4
************************************************************
A matriz E 2x2 para calcular o determinante será:
[[4 2]
[7 4]]
************************************************************
O cofator será:
-2
************************************************************
Entre com o valor da linha do elemento da matriz 3
Entre com o valor da coluna do elemento da matriz 1
************************************************************
Informe as posições da matriz restante retirando a linha e coluna informada
Entre com o valor do elemento da posição a11: 4
Entre com o valor do elemento da posição a12: 3
Entre com o valor do elemento da posição a21: 1
Entre com o valor do elemento da posição a22: 5
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
************************************************************
A matriz E 2x2 para calcular o determinante será:
[[4 3]
[1 5]]
************************************************************
O cofator será:
17
************************************************************
Entre com o valor do elemento da posição 1: 3
Entre com o valor do elemento da posição 2: 2
Entre com o valor do elemento da posição 3: 0
Determinante será: -97
************************************************************
CÁLCULO DA MATRIZ INVERSA UTILIZANDO DETERMINANTE
Veremos como utilizar o determinante da matriz para determinar sua inversa.
Seja uma matriz A a b
c d
�
�
�
�
�
�
� em que a, b, c e d são números reais tais que
det A ≠ 0 . Então, a inversa de A será dada por A−1 . A relação entre det A e
A-1 será:
A
A
d b
c a
� �
�
�
�
�
�
�
�
�
1 1
det
.
Você deve ter observado que, se a det A = 0, não temos a A−1 .
Por exemplo:
Calcule a inversa de A �
�
�
�
�
�
�
�
�
2 4
5 1
.
A
A
d b
c a A
� �
�
�
�
�
�
�
�
� �
� �
� �
�
�
�
�
�
�
1 1 1 1 4
5 2det
.
det
.
Det A � � � � � �� � � �1 2 4 5 2 20 18. � . �
1
1
8
A� �
�
� �
� �
�
�
�
�
�
� �
�
�
�
�
��
�
�
�
�
��
�1 1
18
1 4
5 2
1
18
4
18
5
18
2
18
1
18
2
9
5
18
1
.
99
�
�
�
�
��
�
�
�
�
��
VOCÊ SABE RESPONDER?
Tomando como referência todos os algoritmos gerados neste tema, elabore um
algoritmo na linguagem de programação Python para calcular a determinante e a
inversa de uma matriz 2 x 2.
Resumindo determinantes, teremos:
O determinante é um número real associado a uma matriz quadrada.
O determinante de uma matriz de primeira ordem, A = (a11), é definido pelo valor do
seu elemento único a11.
A matriz quadrada de segunda ordem A
a a
a a
�
�
�
�
�
�
�
11 12
21 22
tem como determinante
o número real obtido pela expressão det A a a a a � �� � � �11 22 21 12. . .
Considere a matriz A
a a a
a a a
a a a
�
�
�
�
�
�
�
�
�
�
�
11 12 13
21 22 23
31 32 33
Os passos para a resolução pela regra de Sarrus para n = 3 são:
1°: repetimos as duas primeiras colunas ao lado da terceira coluna.
2°: encontramos a soma do produto dos elementos da diagonal principal com os dois
produtos obtidos pela multiplicação dos elementos das paralelas a essa diagonal.
3°: encontramos a soma do produto dos elementos da diagonal secundária com
os dois produtos obtidos pela multiplicação dos elementos das paralelas a essa
diagonal.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 7
4°: por fim, devemos operar: a soma do produto da diagonal principal com suas
paralelas, menos a soma do produto da diagonal secundária com suas paralelas.
Dada uma matriz A aij� �� �� , quadrada de ordem n ≥ 2 e n∈* , n pertencente
aos naturais ( ), denominamos cofator de aij o produto de �� � �1 i j
pelo
determinante da matriz Dij� � que se obtém de A, suprimindo a linha de ordem i e
a coluna de ordem j C Dij
i j
ij: . � �� � �1 .
O determinante de uma matriz quadrada de ordem n ≥ 2 é a soma dos produtos
dos elementos de uma fila (linha ou coluna) pelos respectivos cofatores.
A relação entre det A e A-1 será: A-1 = 1/(det A) .(⊢(d&-b@-c&a)).
Acesse seu ambiente virtual de aprendizagem e confira a aula referente a este
tema. Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
EM FOCO
1
8
1
NOVOS DESAFIOS
No decorrer deste tema, você aprendeu sobre matrizes e determinantes. Você
teve principalmente conhecimento sobre tipologia e operações com matrizes,
bem como o cálculo das determinantes de primeira, de segunda, de terceira e
demais ordens.
Considere a possibilidade de que você trabalhano almoxarifado de uma
empresa que vende computadores. Você precisa manter o controle dos estoques
de produtos. Para uma determinada semana, seriam necessárias as quantidades
de computadores descritas na Tabela 2 a seguir.
TIPOS PC1 PC2 PC3 PC4
Tipos de
processador
Intel
I3 I5 I7 I9
Quantidade 20 40 60 10
Tabela 2 – Tabela relacionado equipamentos com quantidade / Fonte: o autor.
A avaliação de custo desses produtos seria realizada com dois fornecedores, cujos
preços por produto são descritos na Tabela 3.
PREÇO DO PC POR UNIDADE (R$)
FORNECEDOR 1 FORNECEDOR 2
PC1 2000,0 1500,0
PC2 4000,0 4500,0
PC3 6000,0 5500,0
PC4 8000,0 9000,0
Tabela 3 – Tabela relacionado equipamentos com preço / Fonte: o autor.
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 7
Dessa forma, você precisa saber o custo total com cada fornecedor a fim de man-
ter o estoque da empresa.
Conforme o conhecimento que você obteve neste tema, você pode gerar um
algoritmo na linguagem de programação Python para aplicar seus conhecimentos
de multiplicação de matrizes e resolver seu problema de maneira rápida e eficiente.
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Cálculo do custo total de PCs.’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
import numpy as np
a = float(input(‘Entre com quantidade do PC1: ‘))
b = float(input(‘Entre com quantidade do PC2: ‘))
c = float(input(‘Entre com quantidade do PC3: ‘))
d = float(input(‘Entre com quantidade do PC4: ‘))
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
A = [[a, b, c, d]]
print(‘Matriz das quantidades será :’, A)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
e = float(input(‘Entre com o preço do PC1 do fornecedor 1: ‘))
f = float(input(‘Entre com o preço do PC2 do fornecedor 1: ‘ ))
g = float(input(‘Entre com o preço do PC3 do fornecedor 1: ‘))
h = float(input(‘Entre com o preço do PC4 do fornecedor 1: ‘))
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
i = float(input(‘Entre com o preço do PC1 do fornecedor 2: ‘))
j = float(input(‘Entre com o preço do PC2 do fornecedor 2: ‘))
l = float(input(‘Entre com o preço do PC3 do fornecedor 2: ‘))
m = float(input(‘Entre com o preço do PC4 do fornecedor 2: ‘))
B = [[e,i], [f,j], [g,l], [h,m]]
print(‘Matriz dos preços será :’, B)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
result= [[0,0]]
result = np.dot(A,B)
print(‘Resultado AB:’)
for r in result:
print(r)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
1
8
1
Executando o algoritmo, com a entrada das quantidades e dos valores dos
PCs, poderemos analisar qual o dos fornecedores tem menor custo total.
xxxxxxxxxxxxxxxxxxxxxxxxxx
Cálculo do custo total de PCs
xxxxxxxxxxxxxxxxxxxxxxxxxx
Entre com quantidade do PC1: 20
Entre com quantidade do PC2: 40
Entre com quantidade do PC3: 60
Entre com quantidade do PC4: 10
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz das quantidades será : [[20.0, 40.0, 60.0, 10.0]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Entre com o preço do PC1 do fornecedor 1: 2000
Entre com o preço do PC2 do fornecedor 1: 4000
Entre com o preço do PC3 do fornecedor 1: 6000
Entre com o preço do PC4 do fornecedor 1: 8000
xxxxxxxxxxxxxxxxxxxxxxxxxx
Entre com o preço do PC1 do fornecedor 2: 1500
Entre com o preço do PC2 do fornecedor 2: 4500
Entre com o preço do PC3 do fornecedor 2: 5500
Entre com o preço do PC4 do fornecedor 2: 9000
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz dos preços será : [[2000.0, 1500.0], [4000.0, 4500.0], [6000.0, 5500.0],
[8000.0, 9000.0]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Resultado Final, fornecedor 1 e fornecedor 2:
[640000. 630000.]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Com os resultados obtidos, você provavelmente comprará os produtos do for-
necedor 2, economizando 10000 reais.
Este é um exemplo de como você pode gerar vários tipos de algoritmos com
matrizes e determinantes para resolver problemas de seu dia a dia.
Por fim, lembre-se de que, na vida real, geralmente vamos desenvolver algo-
ritmos visando otimizar sistemas e obter menores custos.
UNIASSELVI
1
8
1
1. Uma das importantes aplicações das matrizes no dia a dia é a operação de multiplicação
entre tabelas ou matrizes.
Considere as Tabelas 1 e 2 a seguir que relacionam quantidade de produtos e preço de venda
de dois comerciantes, respectivamente. A primeira tabela representa um órgão público que
deseja comprar de uma única vez os quatro tipos de impressoras. A segunda tabela são os
preços unitários de cada impressora de dois comerciantes distintos.
PRODUTOS IMPRESSORA X IMPRESSORA Y IMPRESSORA Z
IMPRESSORA
W
Quantidades 30 20 50 30
PRODUTOS
PREÇO DE VENDA DO CO-
MERCIANTE 1
PREÇO DE VENDA DO CO-
MERCIANTE 2
Impressora x 1000,0 1100,0
Impressora y 2000,0 800,0
Impressora z 700,0 900,0
Impressora w 2000,0 2200,0
Crie um algoritmo na linguagem de programação Python ou linguagem similar, sem a neces-
sidade de incluir a função input(), para executar a multiplicação de duas matrizes ou tabelas,
relacionando quantidade de quatro impressoras distintas com o preço de venda de dois co-
merciantes. Dica: crie uma matriz 1x4 e uma matriz 4x2. Utilize a função do Python np.dot(A,B).
AUTOATIVIDADE
1
8
4
2. O algoritmo a seguir, na linguagem de programação Python ou similar, permite a aplicação
da regra de Sarrus para calcular a determinante de uma matriz 3x3.
print(‘******’*10)
print(‘Cálculo da determinante de uma matriz de terceira ordem’)
import numpy as np
def main():
m = np.array([(0, 3, -7), (3, -9, 2), (0, 9, -1)])
det = ((m[0][0] * m[1][1] * m[2][2]) + (m[0][1]
* m[1][2] * m[2][0]) + (m[0][2] * m[1][0] * m[2][1])) - ((m[2][0]
* m[1][1] * m[0][2]) + (m[2][1] * m[1][2] * m[0][0]) + (m[2][2]
* m[1][0] * m[0][1]))
print(“O determinante da matriz é: “, det)
if __name__ == “__main__”:
main()
print(‘******’*10)
Para criar um algoritmo, na linguagem de programação Python, por exemplo, existe uma
função que permite simplificar o tamanho do algoritmo. Essa função é np.linalg.det(). Elabo-
re um algoritmo reduzido que permita calcular a determinante da matriz
M �
�
�
�
�
�
�
�
�
�
�
�
�
�
0 3 7
3 9 2
0 9 1
.
AUTOATIVIDADE
1
8
5
3. Na tipologia de matrizes, temos basicamente dez tipos de matrizes. Essas matrizes po-
dem ser geradas em um algoritmo na linguagem de programação Python ou similar, sem
muitas dificuldades.
É importante na elaboração do algoritmo importar a biblioteca ou módulo numpy.
A principal função para criar a matriz é np.array().
O algoritmo a seguir irá gerar um tipo de matriz. Essa matriz é:
import numpy as np
matriz = np.array(
[
[1,4,-2],[0,7,0],[0,0,-9]
]
)
print(matriz)
a) Linha.
b) Coluna.
c) Diagonal.
d) Triangular.
e) Identidade.
4. O cofator é uma fórmula simples que facilita a resolução de determinantes de matrizes
com n > 3.
A matriz a seguir, 4 x 4, pode ser resolvida se utilizando do cofator.
Para facilitar os cálculos, procura-se a fila, a linha ou a coluna com o maior número de zeros.
M �
�
�
�
�
�
�
�
�
�
�
�
�
1 0 1 1
1 0 1 0
1 1 1 0
0 1 0 0
AUTOATIVIDADE
1
8
1
Com base na fórmula do cofator, C Dij
i j
ij� �� � � 1 . , podemos afirmar para a ma-
triz:
M �
�
�
�
�
�
�
�
�
�
�
�
�
1 0 1 1
1 0 1 0
1 1 1 0
0 1 0 0
:
Você pode elaborar um algoritmo apenas para calcular a matriz 3x3 do cofator.
I - Para c14 , termos um cofator zero.
II - Para c14 , termos um cofator positivo.
III - Para c14 , termos um cofator negativo.
É correto o que se afirma em:
a) I, apenas.
b) III, apenas.
c) I e III, apenas.
d) II e III, apenas.
e) I, II e III.
5. Uma das formas mais simples de calcular a matriz inversa de uma matriz é por meio da
determinante desta matriz.
Para uma matriz 2x2, a determinante pode ser obtida pelo algoritmo a seguir, na linguagem
de programação Python.
print(‘++++++++++++++++++++++++++’)
print(‘Cálculo da determinante de uma matriz de segunda ordem.’)
print(‘++++++++++++++++++++++++++’)
import numpy as np
a = int(input(‘Entre com o elemento a11: ‘))
b = int(input(‘Entre com o elemento a12: ‘))
AUTOATIVIDADE
1
8
1
c = int(input(‘Entre com o elemento a21: ‘))
d = int(input(‘Entre com o elementoa22: ‘))
matriz_A = np.array(
[
[a,b],[c,d]
]
)
print(‘A matriz A é: ‘)
print( matriz_A)
print(‘++++++++++++++++++++++++++’)
D = (a*d)-(b*c)
print(‘O valor da determinante é:’, D)
print(‘++++++++++++++++++++++++++’)
Considerando a fórmula para calcular a inversa de uma matriz como sendo
A
A
d b
c a
� �
�
�
�
�
�
�
�
�
1 1
det
.
, para a matriz 3 1
10 4
�
�
�
�
�
�
, a determinante desta matriz será:
a) 0.
b) 1.
c) 2.
d) 10.
e) 20.
AUTOATIVIDADE
1
8
8
REFERÊNCIAS
ANTON, H.; RORRES, C. Álgebra linear com aplicações. 8. ed. Porto Alegre: Bookman, 2001.
BOLDRINI, J. L. et al. Álgebra linear. 3. Ed. São Paulo: Harbra, 1984.
JENSKE, G.; PITZER, L. C.; SANTOS, L. G. Álgebra linear e vetorial. Indaial: Uniasselvi, 2016.
STEINBRUCH, A.; WINTERLE, P. Álgebra linear. 2. ed. São Paulo: Pearson Makron Books, 1987.
1
8
9
1. O algoritmo será:
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
print(‘Cálculo da multiplicação de matrizes.’)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
import numpy as np
A = [[30, 20, 50,30]]
print(‘Matriz A será :’, A)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
B = [[1000, 1100],
[2000, 800], [700, 900], [2000, 2200]]
print(‘Matriz B será :’, B)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
result= [[0,0]]
result = np.dot(A,B)
print(‘Resultado AB:’)
for r in result:
print(r)
print(‘xxxxxxxxxxxxxxxxxxxxxxxxxx’)
Executando, teremos:
xxxxxxxxxxxxxxxxxxxxxxxxxx
Cálculo da multiplicação de matrizes
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz A será : [[30, 20, 50, 30]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Matriz B será: [[1000, 1100], [2000, 800], [700, 900], [2000, 2200]]
xxxxxxxxxxxxxxxxxxxxxxxxxx
Resultado AB:
[165000 160000]
Xxxxxxxxxxxxxxxxxxxxxxxxxx
2. O algoritmo será:
print(‘******’*10)
print(‘Cálculo da determinante de uma matriz de terceira ordem’)
import numpy as np
def main():
m = np.array([(0, 3, -7), (3, -9, 2), (0, 9, -1)])
det = np.linalg.det(m)
print(“O determinante da matriz é: “, det)
GABARITO
1
9
1
if __name__ == “__main__”:
main()
print(‘******’*10)
Executando, teremos:
************************************************************
Cálculo da determinante de uma matriz de terceira ordem
O determinante da matriz é: -180.0
3 Opção D.
A executar o algoritmo, teremos:
[[ 1 4 -2]
[ 0 7 0]
[ 0 0 -9]]
Uma matriz triangular, ou seja, abaixo ou acima da diagonal principal, os elementos são zeros.
4 Opção A.
Os cofatores serão:
I. Para c14, termos um cofator zero. Verdadeiro.
c D14
1 4
14
51 1 1 0 0
1 0 1
1 1 1
0 1 0
� � � � � � �� � � �
�
�
�
�
�
�
�
�
�
�
� . . .
II. Para c24, termos um cofator positivo. Falso.
C D24
2 4
24
61 1 1 0 0
1 0 1
1 1 1
0 1 0
� � � � � � �� � � �
�
�
�
�
�
�
�
�
�
�
� . ..
III. Para c44, termos um cofator negativo. Falso.
C D44
4 4
44
81 1 1 0 0
1 0 1
1 0 1
1 1 1
� � � � � � �� � � �
�
�
�
�
�
�
�
�
�
�
� . ..
O algoritmo que poderia ser criado apenas para calcular o determinante da matriz 3x3 de
forma mais rápida seria:
GABARITO
1
9
1
print(‘******’*10)
print(‘Cálculo do cofator de uma matriz de quarta ordem.’)
import numpy as np
matriz_M = np.array(
[
[1,0,1,1],[1,0,1,0], [1,1,1,0],[0,1,0,0]
]
)
print(‘A matriz M 4x4 será: ‘)
print( matriz_M)
print(‘******’*10)
print(‘Informe as posições da matriz restante retirando a linha e coluna informada.’)
a = int(input(‘Entre com o valor do elemento da posição a11: ‘))
b = int(input(‘Entre com o valor do elemento da posição a12: ‘))
c = int(input(‘Entre com o valor do elemento da posição a13: ‘))
d = int(input(‘Entre com o valor do elemento da posição a21: ‘))
e = int(input(‘Entre com o valor do elemento da posição a22: ‘))
f = int(input(‘Entre com o valor do elemento da posição a23: ‘))
g = int(input(‘Entre com o valor do elemento da posição a31: ‘))
h = int(input(‘Entre com o valor do elemento da posição a32: ‘))
s = int(input(‘Entre com o valor do elemento da posição a33: ‘))
print(‘******’*10)
import numpy as np
def main():
n = np.array([(a,b,c), (d,e,f), (g,h,s)])
det = np.linalg.det(n)
print(“O determinante da matriz é: “, det)
if __name__ == “__main__”:
main()
print(‘******’*10)
C
ij = ( - 1 )i + j . Dij
5 Opção C.
Ao executarmos e algoritmo:
print(‘++++++++++++++++++++++++++’)
print(‘Cálculo da determinante de uma matriz de segunda ordem.’)
print(‘++++++++++++++++++++++++++’)
import numpy as np
GABARITO
1
9
1
a = int(input(‘Entre com o elemento a11: ‘))
b = int(input(‘Entre com o elemento a12: ‘))
c = int(input(‘Entre com o elemento a21: ‘))
d = int(input(‘Entre com o elemento a22: ‘))
matriz_A = np.array(
[
[a,b],[c,d]
]
)
print(‘A matriz A é: ‘)
print( matriz_A)
print(‘++++++++++++++++++++++++++’)
D = (a*d)-(b*c)
print(‘O valor da determinante é:’, D)
print(‘++++++++++++++++++++++++++’)
Teremos:
++++++++++++++++++++++++++
Cálculo da determinante de uma matriz de segunda ordem
++++++++++++++++++++++++++
Entre com o elemento a11: 3
Entre com o elemento a12: 1
Entre com o elemento a21: 10
Entre com o elemento a22: 4
A matriz A é:
[[ 3 1]
[10 4]]
++++++++++++++++++++++++++
O valor da determinante é: 2
++++++++++++++++++++++++++
Det A = a.d – c.b
GABARITO
1
9
1
MINHAS METAS
SISTEMAS LINEARES
Compreender uma equação linear.
Identificar sistemas de equações lineares.
Aplicar a classificação de um sistema linear na computação.
Aplicar a regra de Cramer na computação.
Aplicar os sistemas lineares na computação.
T E M A D E A P R E N D I Z A G E M 8
1
9
4
INICIE SUA JORNADA
Com uma produção de café M em crescimento em uma indústria W, você foi con-
tratado para desenvolver algoritmos que tornem mais rápido os cálculos de custos
e de quantidades dos componentes do café M, em grandes demandas de produção.
O café M é composto por uma mistura de café X com café Y. O café X, depois
de processado, custa 3,00 reais o quilograma. O café Y, depois de processado,
custa 2,00 reais o quilograma. Se o custo de um quilograma da mistura ou café
M, após o processamento, é de 2,50 reais, quanto há de cada variedade de um
quilograma da mistura?
Para uma quantidade pequena, você pode desenvolver cálculos simples,
como: x + y = 1, quantidades do café X e Y que compõem um quilograma de café
M e 3x +2y = 2,5, custo do café X e Y que compõem um quilograma de café M.
Desenvolvendo, y = 1 – x e substituindo da segunda equação, temos: 3x +
2(1-x) = 2,5. Teremos: 3x - 2x + 2 = 2,5 e x = 0,5. Logo, y = 0,5.
Entretanto, você precisa lidar com situações similares a esta com quantidades
e custos maiores. Nesse contexto, vale desenvolver algoritmos em uma linguagem
de programação, como o Python.
Veja que este exemplo pode gerar um algoritmo.
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘Cálculo das quantidades do café X e Y que compõem um quilograma
de café M.’)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
from sympy import symbols, Eq, solve
x, y = symbols(‘x,y’)
eq1 = Eq((x+y), 1)
print(“Equação 1:”)
print(eq1)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
a=float(input(‘Entre com o custo do café X : ‘))
b=float(input(‘Entre com o custo do café Y : ‘))
c=float(input(‘Entre com o custo do café M : ‘))
eq2 = Eq((a*x+b*y), c)
print(“Equação 2”)
UNIASSELVI
1
9
5
TEMA DE APRENDIZAGEM 8
print(eq2)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘O valor de X e de Y será:’)
print(solve((eq1, eq2), (x, y)))
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
Por meio de funções do Python com a biblioteca sympy, você pode realizar várias
operações com equações lineares de modo rápido e preciso. Não esqueça de ins-
talar no seu computador a biblioteca sympy no terminal ou cmd com o comado
pip install sympy, a fim de que as funções do Python criem equações lineares.
Neste podcast, você aprenderá sobre sistemas lineares, equação linear, sistemas
de equações lineares, classificação de um sistema linear, regra de Cramer e siste-
mas linearesna computação. Recursos de mídia disponíveis no conteúdo digital
do ambiente virtual de aprendizagem
PLAY NO CONHECIMENTO
VAMOS RECORDAR?
Antes de você iniciar o estudo sobre sistemas lineares, sugiro que você reveja o
conteúdo de determinantes, principalmente determinantes de matrizes 2 x 2.
Entre no algoritmo do GeoGebra (aplicativo de acesso livre), na seção material
didático, tema Determinantes (2B).
Procure selecionar a opção Determinante de ordem 2, 3 e 4. Teste vários valores na
matriz e teste n igual a 2, 3 e 4. Observe a forma de resolução. Recursos de mídia
disponíveis no conteúdo digital do ambiente virtual de aprendizagem
Na próxima fase, será desenvolvido o tema Sistemas lineares: equação linear,
sistemas de equações lineares, classificação de um sistema linear, regra de Cramer
e sistemas lineares na computação.
1
9
1
DESENVOLVA SEU POTENCIAL
SISTEMAS LINEARES
Em todas as disciplinas específicas do seu curso, os autores
buscaram apresentar problemas práticos no intuito de mostrar
a aplicabilidade dos conceitos.
Dessa forma, se pensarmos na matemática como uma
ciência a ser aplicada em problemas práticos, os sistemas li-
neares são a chave para as soluções desses problemas. Então,
todos os problemas são resolvidos por um sistema linear? Cla-
ro que não, mas boa parte deles sim. Assim, sua importância
é gigantesca.
EQUAÇÃO LINEAR
É toda equação da forma: a x a x a x bn n1 1 2 2� � � � ... , em
que a a an1 2, , ..., são números reais que recebem o nome de
coeficientes das incógnitas x x xn1 2, , ..., e b é um número
real chamado termo independente.
Quando b = 0, a equação recebe o nome de linear
homogênea.
Por exemplo:
■ equação linear: 5 2 8 9x y z � � � ;
■ equação linear homogênea: 5 2 8 0x y z � � � ;
■ equação não linear: 5 2 8 92x y z� � � , devido �x2
não dar à equação condição homogênea.
UNIASSELVI
1
9
1
TEMA DE APRENDIZAGEM 8
SISTEMAS DE EQUAÇÕES LINEARES
Um sistema de equações lineares pode ser definido como um conjunto de n
equações com n variáreis independentes entre si, na forma genérica, como:
a x a x a x b
a x a x a x b
n n
n n
11 1 12 2 1 1
21 1 22 2 2 2
� � � �
� � � �
...
...
aa x a x a x b
a x a x a x
n n
n n nn
31 1 32 2 3 3
1 1 2 2
� � � �
� � �
...
...
nn nb�
Na qual, aij (i, j = 1, 2, 3, 4, ..., n) são os coeficientes do sistema de equações, xi (i =
1, 2, 3, 4, ..., n) são as incógnitas e bi (i = 1, 2, 3, 4, ..., n) são os termos independentes.
Uma solução de um sistema é uma sequência de números que satisfaz as
equações simultaneamente ( , , ,... )a a a an1 2 3 .
Fundamentos de informática – álgebra linear – para compu-
tação
Organizador: Isabel Cristina de Oliveira Navarro Espinosa, Lau-
ra Maria da Cunha Canto Oliva Biscolla e Plinio Barbieri Filho
Editora: LTC
Ano: 2007
Sobre o livro: esta obra é destinada a alunos de graduação na
área de ciências exatas em geral e, especialmente, aos alunos
dos cursos de computação – Ciência da Computação, Sistemas
de Informações, Engenharia de Computação e Licenciatura em
Computação – que estejam iniciando seus estudos em Álgebra
linear. Apresentada em linguagem simples, a teoria vem acom-
panhada de exemplos e exercícios resolvidos. O Capítulo 2 trata
sobre sistemas lineares de forma bastante didática.
INDICAÇÃO DE LIVRO
1
9
8
As equações lineares podem ser descritas na forma matricial, como A·X = B,
conforme a Figura 1.
Dois sistemas de equações são equivalentes se, e somente se, toda a solução de
qualquer um dos sistemas também for solução do outro.
PENSANDO JUNTOS
A= , X= e B=
=
para o qual:
a
11
a
21
a
m1
a
m2
a
m3
a
mn
a
12
a
22
a
13
a
23
a
1n
X
1
X
2
X
n
a
2n
... ... ... ... ...
a
11
a
21
a
m1
a
m2
a
m3
a
mn
a
12
a
22
a
13
a
23
a
1n
a
2n
... ... ... ...
X
1
X
2
X
n
...
b
1
b
2
b
n
...
b
1
b
2
b
n
...
.
Matriz dos coe�cientes. Matriz das incógnitas. Matriz dos iresultados ou
dos termos independentes.
Por exemplo:
2 3 0
4 7
2 4
2 3 1
4 1 1
2 1 1
x y z
x y z
x y z
A .
xx
y
n
0
7
4
-
A um sistema linear podemos associar as seguintes matrizes:
Figura 1 – Forma matricial de sistemas lineares / Fonte: Jenske, Santos e Pitzer (2016, p. 77).
Descrição da Imagem: a figura apresenta a matriz A com os coeficientes, a matriz X com as incógnitas e a matriz
B com os termos independentes. Fim da descrição.
UNIASSELVI
1
9
9
TEMA DE APRENDIZAGEM 8
■ Matriz incompleta: é a matriz formada apenas pelos coeficientes das
incógnitas do sistema.
Tomando o exemplo anterior, temos:
A �
�
�
�
�
�
�
�
�
�
�
�
�
2 3 1
4 1 1
2 1 1
■ Matriz completa: é a matriz que se obtém acrescentando à matriz incom-
pleta uma última coluna formada pelos termos independentes das equações
do sistema. Assim, para o mesmo sistema anterior, a matriz completa é:
A �
�
�
�
�
�
�
�
�
�
�
�
�
2 3 1
4 1 1
2 1 1
0
7
4
CLASSIFICAÇÃO DE UM SISTEMA LINEAR
Um sistema linear pode ser classificado como sendo de possível ou impos-
sível solução.
No caso de ser um sistema linear de possível solução, ele ainda pode ser:
determinado, solução única, ou indeterminado, de infinitas soluções.
No caso de ser um sistema linear impossível, ele não terá solução.
Assim, temos três tipos de sistemas lineares:
■ Sistemas Possíveis e Determinados (SPD)
Quando só há uma possibilidade de resposta para x x x xn1 2 3, , ,... , de modo a satis-
fazer o sistema. Por esse motivo, dizemos que é determinado: há uma única solução.
Um sistema apresentar uma única solução significa que as equações que o
compõem são retas concorrentes, cujo ponto de intersecção é a solução do sis-
tema, Figura 2.
1
1
1
■ Sistemas Possíveis e Indeterminados (SPI)
Nesse tipo de sistemas, há infinitas possibilidades de combinações para
x x x xn1 2 3, , ,... , que satisfazem o sistema linear.
Logo, este sistema é possível, mas é indeterminado. Não há uma
única e determinada solução, mas infinitas.
As equações que compõem o sistema representam duas retas coincidentes, ou
seja, estão uma em cima da outra. Todos os pontos de uma também são pontos
da outra, Figura 3.
a
11
x
1
x + a
12
x
2
= b
1
a
21
x
1
x + a
22
x
2
= b
2
Solução (x
1
, x
2
)
a
11
x
1
+ a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
Figura 2 – Retas concorrentes em um ponto / Fonte: Jenske, Santos e Pitzer (2016, p. 78).
Descrição da Imagem: a figura apresenta um plano cartesiano com duas retas concorrentes em um ponto. Cada
reta tem sua representação algébrica no formato a1x1 + a2x2 + ... + anxn = b. Fim da descrição.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
■ Sistemas Impossíveis (SI)
Como o próprio nome diz, são os sistemas que não têm soluções, ou seja, não há
combinação possível para x x x xn1 2 3, , ,... de modo a satisfazer, simultaneamente,
todas as m equações do sistema.
As retas que compõem o sistema são paralelas entre si, ou seja, não há ponto
em comum entre elas. Logo, não há solução possível, Figura 4.
a
11
x
1
x + a
12
x
2
= b
1
a
21
x
1
x + a
22
x
2
= b
2
Qualquer ponto
da reta é solução
de sistema
a
11
x
1
+ a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
Figura 3 – Retas coincidentes. / Fonte: Jenske, Santos e Pitzer (2016, p. 79).
Descrição da Imagem: a figura apresenta um plano cartesiano com várias retas coincidentes. Cada reta tem sua
representação algébrica no formato a1x1 + a2x2 + ... + anxn = b. fim da descrição.
a
11
x
1
+ a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
Não há solução
a
11
x
1
+ a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
Figura 4 – Retas paralelas / Fonte: Jenske, Santos e Pitzer (2016, p. 79).
1
1
1
■ Exemplo 1:
x y
x y
� �
� �
�
�
�
8
2 1
Somando-se ambos os termos de cada membro, temos:
x x y y
x
x
2 8 1
3 9
3
-
Substituindo x = 3 na equação x + y = 8;
3 8
5
� �
�
y
y
Como temos um ponto comum, temosSPD.
■ Exemplo 2:
x y
x y
� �
� �
�
�
�
8
2 2 16
Multiplicando a primeira equação por menos dois e somando-se ambos os ter-
mos de cada membro, temos:
� � � � � � �
� �
� �
2 2 2 2 16 16
0 0 0 0
0 0 0 0
x x y y
x e y
x e y/ / .
Nesta situação, temos muitos pontos em comum, ou seja, SPI.
Descrição da Imagem: a figura apresenta um plano cartesiano com duas retas paralelas. Cada reta tem sua
representação algébrica no formato a1x1 + a2x2 + ... + anxn = b. Fim da descrição.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
■ Exemplo 3:
x y
x y
� �
� � �
�
�
�
10
10� �
Somando-se ambos os termos de cada membro, temos:
x x y y
x e y
x e y
� � � � �
� �
� �
10 10
0 20 0 20
20 0 20 0
/ / .
Nessa situação, é impossível dividir um número real por zero, ou seja, SI.
No algoritmo do GeoGebra (aplicativo de acesso livre), na seção material didático,
tema Discussão de sistemas lineares, você pode revisar e se aprofundar no
tema sobre a classificação de sistemas. Realize as três principais atividades do
algoritmo
EU INDICO
1
1
4
REGRA DE CRAMER
A regra de Cramer afirma que todo sistema normal tem uma única solução
dada por X D
Di
x= 1 , em que i n�� �1 2 3, , ,..., , D detA = é o determinante
da matriz incompleta associada ao sistema e Dxi é o determinante obtido
pela substituição, na matriz incompleta, da coluna i, pela coluna formada pelos
termos independentes.
Exemplo 1:
x y
x y
D
D
D
x
y
8
2 1
1 1
2 1
1 2 3
8 1
1 1
8 1 9
1 8
2 1
1 16 15
9
3
3 15
3
5x e y
-
-
-
Como o sistema tem uma única solução, (3,5), é SPD.
Exemplo 2:
x y
x y
D
D
D
x
y
8
2 2 16
1 1
2 2
2 2 0
8 1
16 2
16 16 0
1 8
2 16
16 16 0
0
0
0
0
x e y
-
-
-
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 8
Como o sistema tem várias soluções, é SPI.
Exemplo 3:
x y
x y
D
D
D
x
y
10
10
1 1
1 1
1 1 0
10 1
10 1
10 10 20
11 10
1 10
10 10 20
20
0
20
0
x e y
-
Como o sistema não tem solução, é SI.
Você pode elaborar um algoritmo na linguagem de programação Python ou
similar para definir, em uma matriz 2 x 2, se é SPD, SPI ou SI. Observe que no
Python usamos if para se, == para igual e != para diferente.
print(‘++++++++++++++++++++++++++’)
print(‘Aplicação da regra de Cramer em matrizes 2 x 2.’)
print(‘++++++++++++++++++++++++++’)
import numpy as np
a = int(input(‘Entre com o coeficiente de x para primeira equação: ‘))
b = int(input(‘Entre com o coeficiente de y para primeira equação: ‘))
c = int(input(‘Entre com o coeficiente de x para segunda equação: ‘))
d = int(input(‘Entre com o coeficiente de y para segunda equação: ‘))
matriz_A = np.array(
[
[a,b],[c,d]
]
)
print(‘A matriz A é: ‘)
print( matriz_A)
1
1
1
print(‘++++++++++++++++++++++++++’)
D = (a*d)-(b*c)
print(‘O valor da determinante D é:’, D)
print(‘++++++++++++++++++++++++++’)
e = int(input(‘Entre com o termo independente da primeira equação: ‘))
f = int(input(‘Entre com o termo independente da segunda equação: ‘))
matriz_Ax = np.array(
[
[e,b],[f,d]
]
)
print(‘A matriz Ax é: ‘)
print( matriz_Ax)
print(‘++++++++++++++++++++++++++’)
Dx = (e*d)-(b*f)
print(‘O valor da determinante Dx é:’, Dx)
print(‘++++++++++++++++++++++++++’)
matriz_Ay = np.array(
[
[a,e],[c,f]
]
)
print(‘A matriz Ay é: ‘)
print( matriz_Ay)
print(‘++++++++++++++++++++++++++’)
Dy = (a*f)-(c*e)
print(‘O valor da determinante Dy é:’, Dy)
print(‘++++++++++++++++++++++++++’)
if D != 0:
print(“Então é SPD”)
if D == 0 and Dx != 0:
print(“Então é SI”)
if D == 0 and Dx == 0:
print(“Então é SPI”)
print(‘++++++++++++++++++++++++++’)
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
Se aplicarmos este algoritmo para o exemplo 1, teremos:
++++++++++++++++++++++++++
Aplicação da regra de Cramer em matrizes 2 x 2
++++++++++++++++++++++++++
Entre com o coeficiente de x para primeira equação: 1
Entre com o coeficiente de y para primeira equação: 1
Entre com o coeficiente de x para segunda equação: 2
Entre com o coeficiente de y para segunda equação: -1
A matriz A é:
[[ 1 1]
[ 2 -1]]
++++++++++++++++++++++++++
O valor da determinante D é: -3
++++++++++++++++++++++++++
Entre com o termo independente da primeira equação: 8
Entre com o termo independente da segunda equação: 1
A matriz Ax é:
[[ 8 1]
[ 1 -1]]
++++++++++++++++++++++++++
O valor da determinante Dx é: -9
++++++++++++++++++++++++++
A matriz Ay é:
[[1 8]
[2 1]]
++++++++++++++++++++++++++
O valor da determinante Dy é: -15
++++++++++++++++++++++++++
Então é SPD
++++++++++++++++++++++++++
Procure testar os exemplos 2 e 3 neste algoritmo.
1
1
8
Considere que o sistema que você irá analisar tenha três incógnitas, como no
exemplo a seguir.
Seria mais eficiente e rápido utilizarmos um algoritmo na linguagem de pro-
gramação Python para aplicar a regra de Cramer.
Utilizaremos funções e parte de algoritmos já estudados na geração deste
novo algoritmo.
Observe que a resolução de cada determinante, quatro no total,
D D D e Dx y z, , , são feitas em blocos, utilizando o import numpy as np e a
função np.linalg.det.
Após os quatro blocos, optamos em entrar com os valores já calculados de
D D D e Dx y z, , , como uma forma de relembrar a regra de Cramer.
x y z
x y z
x y z
� � �
� � �
� � �
�
�
�
�
�
2 2
2 3 9
3 3 2 3
�
Inicialmente, iremos resolver o sistema pela regra de Cramer e depois pelo
algoritmo.
VOCÊ SABE RESPONDER?
Utilizando o algoritmo anterior, qual seria o resultado para
2 7
2 3 3
x y
x y
� �
� �
�
�
�
?
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 8
D
Dx
�
�
�
�
� � � � � � � � �
�
�
�
�
� �
1 2 1
2 1 3
3 3 2
2 18 6 3 9 8 14 4 10
2 2 1
9 1 3
3 3 2
4
( ) ( )
( 118 27 3 18 36 5 15 10
1 2 1
2 9 3
3 3 2
18 18 6 2
� � � � � � � � �
�
�
�
� � � � � �
) ( ) ( )
( ) (Dy 77 9 8 6 26 20
1 2 2
2 1 9
3 3 3
3 54 12 6 27 12 63
� � � � � � �
� � � � � � � � � � � �
) ( )
( ) ( )Dz 333 30
10
10
1
20
10
2
30
10
3
�
� �
� �
� �
x
y
z
print(‘******’*10)
print(‘Aplicação da regra de Cramer em matrizes 3 x 3.’)
print(‘******’*10)
import numpy as np
a = int(input(‘Entre com o coeficiente de x para primeira equação: ‘))
b = int(input(‘Entre com o coeficiente de y para primeira equação: ‘))
c = int(input(‘Entre com o coeficiente de z para primeira equação: ‘))
d = int(input(‘Entre com o coeficiente de x para segunda equação: ‘ ))
e = int(input(‘Entre com o coeficiente de y para segunda equação: ‘ ))
f = int(input(‘Entre com o coeficiente de z para segunda equação: ‘ ))
g = int(input(‘Entre com o coeficiente de x para terceira equação: ‘))
h = int(input(‘Entre com o coeficiente de y para terceira equação: ‘))
i = int(input(‘Entre com o coeficiente de z para terceira equação: ‘))
def main():
m = np.array([(a, b, c), (d, e, f), (g, h, i)])
D = np.linalg.det(m)
1
1
1
print(‘******’*10)
print(‘A matriz dos coeficientes é:’)
print(m)
print(‘******’*10)
print(“O determinante da matriz é: “, D)
if __name__ == “__main__”:
main()
print(‘******’*10)
s = int(input(‘Entre com o termo independente da primeira equação: ‘))
t = int(input(‘Entre com o termo independente da segunda equação: ‘ ))
w = int(input(‘Entre com o termo independente da terceira equação: ‘))
print(‘******’*10)
def main():
mx = np.array([(s, b, c), (t, e, f), (w, h, i)])
Dx = np.linalg.det(mx)
print(‘A matriz dos coeficientes com a primeira coluna com termos inde-
pendentes é:’)
print(mx)
print(‘******’*10)
print(“O determinante da matriz x é: “, Dx)
if __name__ == “__main__”:
main()
print(‘******’*10)
def main():
my = np.array([(a, s, c), (d, t, f), (g, w, i)])
Dy = np.linalg.det(my)
print(‘A matriz dos coeficientes com a segunda coluna com termos inde-
pendentes é:’)
print(my)
print(‘******’*10)
print(“O determinante da matriz y é: “, Dy)
if __name__ == “__main__”:
main()
print(‘******’*10)
def main():
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
mz = np.array([(a, b, s), (d, e, t), (g, h, w)])
Dz = np.linalg.det(mz)
print(‘A matriz dos coeficientes com a terceira coluna com termos indepen-
dentes é:’)
print(mz)print(‘******’*10)
print(“O determinante da matriz z é: “, Dz)
if __name__ == “__main__”:
main()
print(‘******’*10)
print(‘Para relembrar, entre com os valores de D, Dx, DY e Dz:’)
print(‘******’*10)
K1=float(input(‘Entre com o calor de D:’))
K2=float(input(‘Entre com o calor de Dx:’))
K3=float(input(‘Entre com o calor de Dy:’))
K4=float(input(‘Entre com o calor de Dz:’))
x = K2/K1
y = K3/K1
z = K4/K1
print(‘******’*10)
print(‘O valor de x será: x =’, x)
print(‘O valor de y será: y =’, y)
print(‘O valor de z será: z =’, z)
print(‘******’*10
Ao executar o algoritmo, temos:
************************************************************
Aplicação da regra de Cramer em matrizes 3 x 3
************************************************************
Entre com o coeficiente de x para primeira equação: 1
Entre com o coeficiente de y para primeira equação: 2
Entre com o coeficiente de z para primeira equação: -1
Entre com o coeficiente de x para segunda equação: 2
Entre com o coeficiente de y para segunda equação: -1
Entre com o coeficiente de z para segunda equação: 3
Entre com o coeficiente de x para terceira equação: 3
1
1
1
Entre com o coeficiente de y para terceira equação: 3
Entre com o coeficiente de z para terceira equação: -2
************************************************************
A matriz dos coeficientes é:
[[ 1 2 -1]
[ 2 -1 3]
[ 3 3 -2]]
************************************************************
O determinante da matriz é: 9.999999999999998
************************************************************
Entre com o termo independente da primeira equação: 2
Entre com o termo independente da segunda equação: 9
Entre com o termo independente da terceira equação: 3
************************************************************
A matriz dos coeficientes com a primeira coluna com termos independentes é:
[[ 2 2 -1]
[ 9 -1 3]
[ 3 3 -2]]
************************************************************
O determinante da matriz x é: 10.00000000000001
************************************************************
A matriz dos coeficientes com a segunda coluna com termos independentes é:
[[ 1 2 -1]
[ 2 9 3]
[ 3 3 -2]]
************************************************************
O determinante da matriz y é: 19.999999999999996
************************************************************
A matriz dos coeficientes com a terceira coluna com termos independentes é:
[[ 1 2 2]
[ 2 -1 9]
[ 3 3 3]]
************************************************************
O determinante da matriz z é: 30.000000000000004
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
************************************************************
Para relembrar, entre com os valores de D, Dx, DY e Dz:
************************************************************
Entre com o calor de D:10
Entre com o calor de Dx:10
Entre com o calor de Dy:20
Entre com o calor de Dz:30
************************************************************
O valor de x será: x = 1.0
O valor de y será: y = 2.0
O valor de z será: z = 3.0
************************************************************
APLICAÇÕES DE SISTEMAS LINEARES
Os sistemas lineares são a chave para resolver diversos problemas nas mais varia-
das áreas. Dessa forma, trazemos a resolução de algumas aplicações.
Exemplo 1:
Um veículo flex foi abastecido com 10 litros de álcool e 30 litros de gasolina, pa-
gando R$ 90,00. Depois de alguns dias, abasteceu com 30 litros de álcool e 20 litros
de gasolina, pagando R$ 102,00. Mantendo os preços, obtenha o preço do álcool.
Utilizando as variáveis x e y para preços, respectivamente do álcool e da ga-
solina, montamos o sistema com as informações:
10 30 90
30 20 102
x y
x y
� �
� �
�
�
�
Nesse caso, podemos trabalhar de duas formas algebricamente:
■ Isolando uma variável na primeira equação e substituindo o seu equiva-
lente na segunda equação.
Para x, teremos:
1
1
4
10 30 90
30 90 10
x y
y x dividindo todos os termos por
10
3 9
9
3
30 20 9
3
102
y x
y x
x x multiplican. ddo todos os termos por
x x
x
3
90 20 9 306
90 1880 20 306
70 306 180
70 126
126
70
1 8
,
x
x
x
x
x
-
-
-
-
-
Para y, teremos:
3 9
3 9 1 8
3 7 2
7 2
3
2 4
y x
y
y
y
y
�
�
�
�
�
,
,
,
-
-
■ Realizando o cancelamento de termo a termo no sistema, com o objetivo
de eliminar inicialmente uma variável.
Para x, teremos:
10x + 30y = 90 vamos dividir todos por 10
30x + 20y = 102 vamos dividir todos por 10
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 8
----------------------
x + 3y = 9 vamos multiplicar todos por - 2
3x + 2y = 10,2 vamos multiplicar todos por 3
----------------------
-2x - 6y = -18 cancelando o -6y com +6y
9x + 6y = 30,6
----------------------
7 12 6x = ,
x
x
=
=
12 6
7
1 8
,
,
Para y, teremos:
3 9
3 9 1 8
3 7 2
7 2
3
2 4
y x
y
y
y
y
�
�
�
�
�
,
,
,
-
-
Em vez de utilizarmos a biblioteca numpy do Python, utilizaremos agora a bi-
blioteca sympy, sugerida no início deste tema.
A biblioteca sympy permite que você trabalhe com sistema de equações como
no exemplo anterior. Já na biblioteca numpy, você trabalha com matrizes e pode
aplicar a regra de Cramer.
No algoritmo na linguagem de programação Python a seguir, optamos em
colocar as equações e coeficientes diretamente no algoritmo.
1
1
1
Entretanto, você pode aumentar este algoritmo e torná-lo padrão para outros
sistemas de duas variáveis, utilizando a função input() para inserir os coeficientes
de x e de y e o termo independente de cada equação.
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘Cálculo do valor de x e de y no sistema linear.’)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
from sympy import symbols, Eq, solve
x, y = symbols(‘x,y’)
eq1 = Eq((10*x+30*y), 90)
print(“Equação 1:”)
print(eq1)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
eq2 = Eq((30*x+20*y), 102)
print(“Equação 2”)
print(eq2)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘O valor de X e de Y será:’)
print(solve((eq1, eq2), (x, y)))
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
Ao executar o algoritmo, temos:
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Cálculo do valor de x e de y no sistema linear
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Equação 1:
Eq(10*x + 30*y, 90)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Equação 2
Eq(30*x + 20*y, 102)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
O valor de X e de Y será:
{x: 9/5, y: 12/5}
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Lembrando que 9/5 = 1,8 e 12/5 = 2,4
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
Exemplo 2:
Pedro quer totalizar a quantia de R$ 500,00 utilizando cédulas de um, cinco e
dez reais. O total das células é 92, de modo que as quantidades de cédulas de um
e de dez reais sejam iguais. A quantidade de cédulas de cinco reais que Pedro
precisará é:
Utilizando as variáveis x, y e z para quantidades respectivamente das células
de um, cinco e dez reais, montamos o sistema com as informações:
� � � � � �
�
x y z
x y z
� � �
� � �
�
�
�
92
5 10 500
e
2 92
11 5 500
x y
x y
� �
� �
�
�
�
� �
A fim de evitar cálculos demorados no papel, você pode utilizar o algoritmo na
linguagem de programação Python baixo ou linguagem similar.
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘Cálculo do valor de x, de y e de z no sistema linear. Lembrando que
x = z.’)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
from sympy import symbols, Eq, solve
x, y = symbols(‘x,y’)
eq1 = Eq((2*x+y), 92)
print(“Equação 1:”)
print(eq1)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
VOCÊ SABE RESPONDER?
Você saberia resolver o exercício anterior pela regra de Cramer, utilizando um dos
algoritmos já ensinados?
1
1
8
eq2 = Eq((11*x+5*y), 500)
print(“Equação 2”)
print(eq2)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘O valor de x e y será:’)
print(solve((eq1,eq2), (x, y)))
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
Ao executar o algoritmo, teremos o valor de x e de y, respectivamente.
O enunciado do exercício pede apenas o y.
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Cálculo do valor de x, de y e de z no sistema linear. Lembrando que x = z
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Equação 1:
Eq(2*x + y, 92)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Equação 2
Eq(11*x + 5*y, 500)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
O valor de x e y será:
{x: 40, y: 12}
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
VOCÊ SABE RESPONDER?
Você saberia resolver o exercício anterior pela regra de Cramer, utilizando um dos
algoritmos já ensinados?
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 8
No algoritmo do GeoGebra (aplicativo de acesso livre), na seção material didático,
tema Sistemas de equações lineares, você pode revisar e se aprofundar no assun-
to sobre a representação gráfica das equações. Manipule todos os pontos da di-
reita e analise os resultados gráficos. Recursos de mídia disponíveis no conteúdo
digital do ambiente virtual de aprendizagem
EU INDICO
Resumo de sistemas lineares.
• Equação linear é toda equação da forma: a x a x a x bn n1 1 2 2� � � � ... .
• Um sistema de equações lineares pode ser definido como um conjunto de n
equações com n variáreis independentes entre si, na forma genérica como:
a x a x a x b
a x a x a x b
n n
n n
11 1 12 2 1 1
21 1 22 2 2 2
� � � �
� � � �
...
...
aa x a x a x b
a x a x a x
n n
n n nn
31 1 32 2 3 3
1 1 2 2
� � � �
� � �
...
...
nn nb�
• Um sistema linear pode ser classificado como sendo de possível ou impossível
solução.
• No caso de ser um sistema linear de possível solução, ele ainda pode ser:
determinado, solução única, ou indeterminado, de infinitas soluções.
• No caso de ser um sistema linear impossível, ele não terá solução.
• A regra de Cramer afirma que todo sistema normal tem uma única solução dada
por X
D
Di
x= 1
, em que i n�� �1 2 3, , ,..., , D detA = é o determinante da
matriz incompleta associada ao sistema e Dxi é o determinante obtido pela
substituição, na matriz incompleta, da coluna i, pela coluna formada pelos termos
independentes
1
1
1
NOVOS DESAFIOS
Neste tema, você estudou sistemas lineares, bem como equação linear, sistemas de
equações lineares, classificação de um sistema linear, regra de Cramer e sistemas
lineares na computação.
Suponha que você seja o dono de uma pastelaria e deseja ter um controle
automatizado da venda de pastéis e de caldos de cana.
Em uma situação hipotética, você vende dois pastéis e três caldos de cana
por R$ 5,40. Em outra situação, você vende cinco pastéis e dois caldos de cana
por R$ 9,10. Você não quer mais fazer este tipo de cálculo na calculadora e ficar
perdendo tempo, pois sua pastelaria está sempre cheia.
Então você resolve gerar um algoritmo na linguagem de programação Python
com a inclusão das quantidades, pois os valores do pastel e do caldo de cana são
fixos, ou seja, R$ 1,50 e R$ 0,80, respectivamente.
A solução seria criar um algoritmo no Python com a biblioteca sympy.
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘Cálculo do valor de x, de y e de z no sistema linear. Lembrando que
x = z.’)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
from sympy import symbols, Eq, solve
a=int(input(‘Entre com a quantidade de pasteis: ‘))
b=int(input(‘Entre com a quantidade de caldos de cana: ‘))
eq1 = a*1.5 + b*0.8
print(“O valor total será: “)
print(eq1)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
Para a primeira situação anterior, ao executar o algoritmo, você teria:
Acesse seu Ambiente Virtual de Aprendizagem e confira a aula referente a este
tema. Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
EM FOCO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Cálculo do valor de x, de y e de z no sistema linear. Lembrando que x = z
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Entre com a quantidade de pasteis: 2
Entre com a quantidade de caldos de cana: 3
O valor total será:
5.4
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Para a segunda situação, ao executar o algoritmo, você teria:
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Cálculo do valor de x, de y e de z no sistema linear. Lembrando que x = z
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Entre com a quantidade de pasteis: 5
Entre com a quantidade de caldos de cana: 2
O valor total será:
9.1
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Esse exemplo simples demonstra como a linguagem de programação e a mate-
mática podem estar interligadas trazendo benefícios para o usuário.
Você pode criar vários algoritmos para atender suas necessidades profissio-
nais na questão de sistemas lineares.
Lembre-se de que, para a linguagem de programação Python, você dispõe de
duas bibliotecas com funções matemáticas: o numpy e o sympy.
1
1
1
1. Uma das importantes aplicações dos sistemas lineares é no tráfego de veículos. Pode-se
criar equações com três incógnitas, cada equação com duas incógnitas distintas, em um
percurso entre três cidades. Veja a figura a seguir.
Imagine uma pessoa que se desloca de A para C, passando por B, percorrerá 450 km. Se a
pessoa se deslocar de A para B, passando por C, o percurso será de 600 km. Para se deslocar
de B para C, passando por A, a pessoa vai percorrer 800 km. Determine quantos quilômetros
essa pessoa percorrerá nos percursor x, y e z, sem passar por cidades entre os percursos.
x
Cidade
A Cidade
B
Cidade
C
z y
Crie um algoritmo na linguagem de programação Python ou linguagem similar, sem a ne-
cessidade de incluir a função input(), para resolver o sistema linear a seguir:
x + y = 460
z + y = 600
x + z = 800
Dica: use a biblioteca sympy do Python.
2. Considerando um sistema linear de duas equações e duas incógnitas x e y, podemos aplicar
a regra de Cramer para definir se é SPD, SPI e SI.
Cabe lembrar que:
No caso de ser um sistema linear de possível solução, SP, ele pode ser: determinado, SPD,
solução única, ou indeterminado, SPI, de infinitas soluções e, no caso de ser um sistema
linear impossível, SI, ele não terá solução.
Crie um algoritmo na linguagem de programação Python ou linguagem similar, com a função
AUTOATIVIDADE
1
1
1
input(), para resolver o sistema linear de duas equações e duas incógnitas, x e y. Aplicar a
regra de Cramer a fim de definir se o sistema é SPD, SPI ou SI.
Dica: use a biblioteca numpy do Python.
3. No algoritmo na linguagem de programação Python ou linguagem similar abaixo, pode-se
calcular as incógnitas x e y.
print(‘Cálculo do valor de x e de y no sistema linear.’)
from sympy import symbols, Eq, solve
x, y = symbols(‘x,y’)
eq1 = Eq((x+2*y), 5)
print(“Equação 1:”)
print(eq1)
eq2 = Eq((2*x-3*y), -4)
print(“Equação 2”)
print(eq2)
print(‘O valor de X e de Y será:’)
print(solve((eq1, eq2), (x, y)))
Este sistema é formado por duas equações.
O sistema linear formado pelas equações x + 2y = 5 e 2x - 3y = -4 é:
a) SI.
b) SPI.
c) SPD.
d) SPI e SPD.
e) SPI e SI.
AUTOATIVIDADE
1
1
4
4. No algoritmo na linguagem de programação Python ou linguagem similar abaixo, pode-se
calcular o valor total a ser pago em uma papelaria, sendo o a a quantidade de canetas e o
b a quantidade de cadernos.
print(‘Cálculo do valor de x e de y no sistema linear.’)
from sympy import symbols, Eq, solve
a=int(input(‘Entre com a quantidade de canetas: ‘))
b=int(input(‘Entre com a quantidade de cadernos: ‘))
eq1 = a*2 + b*8
print(“O valor total será: “)
print(eq1)
A equação eq1 = a*2 + b*8 é escrita em um algoritmo para calcular o valor total a ser pago
em uma papelaria. Podemos afirmar que:
I - Os valores 2 e 8 representam os valores monetários: de uma caneta e de um caderno,respectivamente.
II - Os valores a e b representam os valores monetários: de uma caneta e de um caderno,
respectivamente.
III - Os valores a*2 e b*8 representam valores não monetários: de uma caneta e de um ca-
derno, respectivamente.
É correto o que se afirma em:
a) I, apenas.
b) III, apenas.
c) I e III, apenas.
d) II e III, apenas.
e) I, II e III.
AUTOATIVIDADE
1
1
5
5. Os sistemas lineares podem ser identificados em um plano cartesiano. No exemplo a seguir,
na figura, o sistema SPD é representado por duas retas concorrentes em um ponto.
a
11
x
1
x + a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
Solução (x
1
, x
2
)
a
11
x
1
+ a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
Um SI, sistema impossível, é representado no plano cartesiano por:
a) Uma reta.
b) Duas retas iguais.
c) Duas retas paralelas.
d) Duas retas coincidentes.
e) Duas retas concorrentes.
AUTOATIVIDADE
1
1
1
REFERÊNCIAS
ANTON, H.; RORRES, C. Álgebra linear com aplicações. 8. ed. Porto Alegre: Bookman, 2001.
BOLDRINI, J. L. et al. Álgebra linear. 3. ed. São Paulo: Harbra, 1984.
JENSKE, G., PITZER, L. C.; SANTOS, L. G. Álgebra linear e vetorial. Indaial: Uniasselvi, 2016.
STEINBRUCH, A.; WINTERLE, P. Álgebra linear. 2. ed. São Paulo: Pearson Makron Books, 1987.
1
1
1
1. O algoritmo será:
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘Cálculo dos valores de x, y e z, distâncias entre cidades.’)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
from sympy import symbols, Eq, solve
x, y,z = symbols(‘x,y,z’)
eq1 = Eq((x+y), 450)
print(“Equação 1:”)
print(eq1)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
eq2 = Eq((z+y), 600)
print(“Equação 2”)
print(eq2)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
eq3 = Eq((z+x), 800)
print(“Equação 3”)
print(eq3)
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
print(‘O valor de x, y e z são:’)
print(solve((eq1, eq2, eq3), (x, y, z)))
print(‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’)
Ao executar o algoritmo, teremos:
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Cálculo dos valores de x, y e z, distâncias entre cidades.
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Equação 1:
Eq(x + y, 450)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Equação 2
Eq(y + z, 600)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Equação 3
Eq(x + z, 800)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
O valor de x, y e z são:
{x: 325, y: 125, z: 475}
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
GABARITO
1
1
8
2. O algoritmo será:
print(‘++++++++++++++++++++++++++’)
print(‘Aplicação da regra de Cramer em matrizes 2 x 2.’)
print(‘++++++++++++++++++++++++++’)
import numpy as np
a = int(input(‘Entre com o coeficiente de x para primeira equação: ‘))
b = int(input(‘Entre com o coeficiente de y para primeira equação: ‘))
c = int(input(‘Entre com o coeficiente de x para segunda equação: ‘))
d = int(input(‘Entre com o coeficiente de y para segunda equação: ‘))
matriz_A = np.array(
[
[a,b],[c,d]
]
)
print( matriz_A)
print(‘++++++++++++++++++++++++++’)
D = (a*d)-(b*c)
print(‘O valor da determinante D é:’, D)
print(‘++++++++++++++++++++++++++’)
e = int(input(‘Entre com o termo independente da primeira equação: ‘))
f = int(input(‘Entre com o termo independente da segunda equação: ‘))
matriz_Ax = np.array(
[
[e,b],[f,d]
]
)
print(‘A matriz Ax é: ‘)
print( matriz_Ax)
print(‘++++++++++++++++++++++++++’)
Dx = (e*d)-(b*f)
print(‘O valor da determinante Dx é:’, Dx)
print(‘++++++++++++++++++++++++++’)
matriz_Ay = np.array(
[
[a,e],[c,f]
]
)
print(‘A matriz Ay é: ‘)
print( matriz_Ay)
GABARITO
1
1
9
print(‘++++++++++++++++++++++++++’)
Dy = (a*f)-(c*e)
print(‘O valor da determinante Dy é:’, Dy)
print(‘++++++++++++++++++++++++++’)
if D != 0:
print(«Então é SPD»)
if D == 0 and Dx != 0:
print(«Então é SI»)
if D == 0 and Dx == 0:
print(«Então é SPI»)
print(‘++++++++++++++++++++++++++’)
3 Opção C.
Ao executar o algoritmo:
print(‘Cálculo do valor de x e de y no sistema linear.’)
from sympy import symbols, Eq, solve
x, y = symbols(‘x,y’)
eq1 = Eq((x+2*y), 5)
print(“Equação 1:”)
print(eq1)
eq2 = Eq((2*x-3*y), -4)
print(“Equação 2”)
print(eq2)
print(‘O valor de X e de Y será:’)
print(solve((eq1, eq2), (x, y)))
Teremos:
Cálculo do valor de x e de y no sistema linear.
Equação 1:
Eq(x + 2*y, 5)
Equação 2
Eq(2*x - 3*y, -4)
O valor de X e de Y será:
{x: 1, y: 2}
Logo, temos SPD.
4 Opção A.
Na equação eq1 = a*2 + b*8, o a e o b representam quantidades e o 2 e o 8 representam
valores monetários.
GABARITO
1
1
1
A multiplicação dos termos e o resultado final fornece o valor monetário total.
I. Os valores 2 e 8 representam os valores monetários: de uma caneta e de um caderno,
respectivamente. Verdadeiro.
II. Os valores a e b representam os valores monetários: de uma caneta e de um caderno,
respectivamente. Falso. Representa quantidades.
III. Os valores a*2 e b*8 representam valores não monetários: de uma caneta e de um caderno,
respectivamente. Falso. Fornecerão o valor monetário total.
5 Opção C.
Um SI é representado por retas paralelas.
Figura a seguir.
a
11
x
1
+ a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
Não há soluçãoa
11
x
1
+ a
12
x
2
= b
1
a
21
x
1
+ a
22
x
2
= b
2
GABARITO
1
1
1
MINHAS METAS
INTRODUÇÃO À TEORIA DE GRAFOS
Compreender a teoria de grafos.
Compreender a aplicabilidade da teoria de grafos.
Aplicar a teoria de grafos na linguagem de programação Python.
Aplicar o networkx do Python na manipulação de grafos.
Aplicar a opção busca em grafos no uso de inteligência artificial.
T E M A D E A P R E N D I Z A G E M 9
1
1
1
INICIE SUA JORNADA
Vamos começar entendendo uma representação abstrata de um conjunto de
objetos.
Vale lembrar que as empresas são entidades. As empresas têm relações entre
si. Uma empresa pode ser ora cliente ora fornecedora.
Podemos representar essa concepção por meio de círculos, onde está uma
empresa determinada, e de linhas ou arestas, que conectam essas empresas, ou
seja, grafos, Figura 1.
Agora, imagine uma situação-problema: você, como cliente final, quer saber
todo o caminho que um produto fez para chegar até você.
Nesse caso, você poderia representar, por exemplo, essas relações entre as
empresas por meio de círculos e de linhas orientadas, a fim de compreender o
processo de produção e de transmissão.
Empresa
A
Empresa
B
Empresa
C
Cliente
Figura 1 – Relações de empresas sendo representadas por círculos e linhas, um grafo / Fonte: o autor.
Descrição da Imagem: a figura apresenta um tipo de grafo, relacionado empresas e cliente. Nessa imagem, temos cír-
culos representando empresas e cliente e linhas que representam as relações entre estes objetos. Fim da descrição.
Entretanto, se você é o administrador principal de uma empresa em um com-
plexo número de empresas em rede, é mais produtivo ter o auxílio de uma
ferramenta digital.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
Nesse contexto, você pode utilizar o networkx, que é um pacote da linguagem
de programação Python, para a criação, a manipulação e o estudo da estrutura
de redes complexas.
Além da aplicação anterior, você pode utilizar a ideia de grafos em outros
casos, como: em uma análise de redes sociais, em um estudo de redes econômicas
e sociais e em uma compreensão da rede de passes de partida de futebol. Tudo
isso usando o networkx do Python.
Neste podcast, você aprenderá sobre a introdução à teoria de grafos, a aplica-
ção da teoria de grafos na linguagem de programação Python, a aplicação do
networkx do Python na manipulação de grafos e a aplicação da opção busca em
grafos. Recursos de mídia disponíveis no conteúdo digital do ambiente virtual
de aprendizagem.
PLAY NO CONHECIMENTO
VAMOS RECORDAR?
Antes de você iniciar o estudo sobre grafos, sugiroque você reveja a ideia de
vértices e de diagonais de forma geométrica.
No algoritmo do GeoGebra (aplicativo de acesso livre), na seção material didático,
tema Grafos completos, você pode revisar e se aprofundar no tema sobre vértices
e diagonais. Realize testes com vários valores de n e observe a complexa rede
que vai sendo criada Recursos de mídia disponíveis no conteúdo digital do
ambiente virtual de aprendizagem
Na próxima fase, será desenvolvido o tema
Introdução à teoria de grafos: teoria de gra-
fos, aplicações, a aplicação da teoria de gra-
fos na linguagem de programação Python,
a aplicação do networkx do Python na ma-
nipulação de grafos e a aplicação da opção
busca em grafos.
1
1
4
DESENVOLVA SEU POTENCIAL
INTRODUÇÃO À TEORIA DE GRAFOS
A teoria de grafos fornece uma abstração simples e elegante
para modelar os dados e seus relacionamentos. Formalmen-
te, um grafo ou rede consiste em um conjunto de vértices,
os quais podem representar as ligações, e um conjunto de
arestas, que servem para ligar dois vértices, representando
um relacionamento entre dados. Por meio dessa abstração,
é possível representar diversos fenômenos do mundo real.
Nos últimos anos, o tamanho dos grafos tem crescido
exponencialmente, alavancado, principalmente, pelo fenô-
meno Big Data. Por exemplo, a rede social do Facebook, a
qual pode ser representada por um grande grafo social, atin-
giu um tamanho de 3 bilhões de usuários em 2021. É fácil
imaginar que esse grafo possui uma quantidade de arestas
com, pelo menos, duas ordens de grandeza maiores que o
número de vértices.
Podemos observar que a internet é um grande grafo,
todo interconectado e que as páginas de buscas e as redes
sociais têm contribuído muito para essa evolução da rede de
computadores e da teoria de grafos.
Em estrutura de dados, a teoria dos grafos estuda as re-
lações entre os objetos de um determinado conjunto. Esse
tipo de armazenamento permite fazer representações visuais
e resolver problemas matemáticos.
UNIASSELVI
1
1
5
TEMA DE APRENDIZAGEM 9
TEORIA DE GRAFOS
A teoria de grafo consiste em estudar a relação entre os objetos de um determi-
nado conjunto empregando estruturas chamadas como grafos.
A aplicabilidade da teoria dos grafos é ampla, alcançando áreas, como Física,
Química, Engenharias, Psicologia, Curso de Ciências e Engenharia da Computação.
Fundamentos da teoria dos grafos para computação
Organizador: Maria do Carmo Nicoletti e Estevam R. Hruschka
Júnior
Editora: LTC
Ano: 2017
Sobre o livro: a Teoria dos Grafos (TG) é um ramo recente na
história da matemática, pois suas origens remontam ao século
XVIII. Largamente utilizada na matemática aplicada e na ciência
da computação, a TG tem se mostrado uma importante ferra-
menta para a modelagem de uma variedade de situações reais
em diferentes áreas de conhecimento, tais como as Engenha-
rias, Física, Química, Linguística, Pesquisa Operacional e Inteli-
gência Artificial. O conteúdo deste livro pode ser usado como
texto básico para disciplinas introdutórias a TG, como material
que promove a revisão da modelagem baseada em grafos a
vários problemas.
INDICAÇÃO DE LIVRO
Conceituação formal: um grafo é um par (V, A), em que V é um conjunto arbitrário e
A é um subconjunto de V. Os elementos de V são chamados vértices e os de A são
chamados arestas.
Esta definição se aplica a Euler, matemático suíço que possui uma representação
do seu teorema contendo os elementos vértices e arestas. Vértices são os pontos
representados por Euler como terra e as arestas são as ligações entre os pontos.
Podemos dizer que, para montar um grafo, devemos ter dois conjuntos: Vértices
(V) e Arestas (E do inglês edge).
1
1
1
Você pode observar um exemplo de grafo na Figura 2.
B
C
DA
Figura 2 – Grafos com vértices e arestas / Fonte: Lessa Junior e Lessa (2021, p. 116).
Descrição da Imagem: a figura apresenta o Grafo de Euler para o problema da cidade de Königsberg. Os pontos A,
B, C e D representando as terras e as ligações (linhas), entre elas, as pontes, formando uma estrutura que lembra
um losango. O ponto A está à esquerda, na parte superior está o ponto B, na parte inferior está o ponto C e à
direita está o ponto D. As arestas são: A e B, B e A, A e C, C e A, D e A, D e B, C e D. Fim da descrição.
A representação do conjunto de aresta é feita em pares e pode ser orientada ou
não. Orientado quando o sentido é definido, portanto, a aresta (A, B) é diferente
de (B, A). Por esse motivo, na imagem, as setas representam a direção de cada
aresta definida no conjunto.
Graus de um vértice são definidos pelo número de arestas que se liga a um
vértice. No caso do exemplo anterior, o grau do vértice B é três, porque tem três
arestas ligadas a ele.
Outro exemplo de aplicação seria o problema das quatro cores, ou seja, quatro
cores são suficientes para colorir qualquer mapa no plano com a condição de que
regiões adjacentes não sejam coloridas com a mesma cor.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
Quando o grafo é orientado, pode receber uma classificação adicional como:
Para um melhor entendimento do problema das quatro cores, sugiro a leitura do
artigo O teorema das quatro cores. Recursos de mídia disponíveis no conteúdo
digital do ambiente virtual de aprendizagem
EU INDICO
VOCÊ SABE RESPONDER?
Qual o grau do vértice A?
GRAU DE EMISSÃO
Arestas que saem do vértice, por exemplo, o vértice D possui um grau de emissão,
Figura 2.
GRAU DE RECEPÇÃO
Arestas que chegam no vértice, por exemplo, o vértice D possui dois graus de recep-
ção, Figura 2.
Existem alguns cenários em que o grafo possui vértices que estão desconectados
de outros vértices e, por isso, é possível classificar o grafo que contém todos os
vértices conectados entre vértices como conexo e o que não possui um ou mais
vértices conectados como desconexo, Figura 3.
1
1
8
a
b
c
d
a
b
c
d
e
f
Grafo Conexo Grafo Desconexo
Figura 3 – Grafos conexos e desconexos / Fonte: Lessa Junior e Lessa (2021, p. 117).
Descrição da Imagem: a imagem à esquerda é um grafo conexo, em que todos os vértices estão conectados, no
qual temos uma figura quadrilátera. Temos: o primeiro vértice superior A; abaixo B; em diagonal de B, temos o
vértice D; acima do vértice D, temos o vértice C. As arestas são formadas por A e B, B e D, D e C, C e A. A imagem
à direita representa um grafo desconexo, no qual existem dois grupos de grafos distintos que não se conectam.
Primeiro, temos uma figura quadrilátera com vértice superior A; abaixo B; em diagonal de B, temos o vértice D;
acima do vértice D, temos o vértice C. As arestas são formadas por A e B, B e D, D e C, C e A. A segunda à direita
do grafo quadrilátero, temos uma única ligação formada por dois vértices alinhados na vertical. O vértice superior
é o E; abaixo o vértice F; e a aresta é formada por E e F. Fim da descrição.
Você pode também realizar uma revisão dos conceitos anteriores por meio de
exercícios no algoritmo do GeoGebra (aplicativo de acesso livre), na seção material
didático, tema Grafos K-regular. Realize testes com vários valores de n e observe
o número de vértices e de arestas
Recursos de mídia disponíveis no conteúdo digital do ambiente virtual de
aprendizagem
EU INDICO
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 9
APLICAÇÕES DA TEORIA DE GRAFOS
Como já foi mencionado, a aplicabilidade dos grafos na resolução de problemas
atinge diversas áreas de conhecimento. Entrando no detalhe da computação, po-
demos utilizar grafos para criar sistemas complexos de localização como soluções
mais simples, por exemplo, a navegabilidade de um portal web.
Muitas empresas investem massivamente em usabilidade para as suas aplica-
ções web de forma que fiquem mais atrativas e menos cansativas para os usuários.
Uma ferramenta que é utilizada para melhorar a navegabilidade dessas solu-
ções é o sitemap, que consiste em mapear todas as páginas e suas ligações, a fim
de encontraro uso excessivo de cliques, Figura 4.
Figura 4 – Sitemap / Fonte: Lessa Junior e Lessa (2021, p. 118).
Descrição da Imagem: a imagem apresenta um sitemap que representa as páginas de um site e suas ligações.
A aplicabilidade de grafo consiste em encontrar o menor caminho para um usuário que está na home e alcançar
uma determinada página. Fim da descrição.
Nesse exemplo, podemos considerar que os vértices serão as páginas e as arestas
o link entre elas. Por meio de grafos, podemos encontrar se existem páginas
desconexas, páginas que precisam navegar por várias páginas antes de chegar ao
destino. Parece muito simples? Pense quanto um grande e-commerce perde de
vendas se a ação de compras necessitar de vários cliques.
1
4
1
Outro cenário que possui aplicabilidade muito relevante é em análise e simula-
ções de workflows e fluxos em bpms, Figura 5.
Um e-commerce é um comércio eletrônico. São negócios que estruturam seu
processo de compra e venda na Internet.
PENSANDO JUNTOS
Figura 5 – Modelagem de um processo / Fonte: Lessa Junior e Lessa (2021, p. 119).
Descrição da Imagem: a imagem apresenta a aplicação do grafo, que é possível aplicar o caminho mais curto para
finalizar o processo. A imagem tem referência sobre a automação de processo. Fim da descrição.
Simular um fluxo de trabalho resulta em análise mais precisa para aumentar a
produtividade de uma empresa. Tarefas que normalmente são realizadas por
meio da tentativa e erro ou, ainda, cálculos por meio de planilhas eletrônicas.
A cada cenário é construído os cálculos e valores. Uma vez que os caminhos
se alternam, podem gerar erros na medida que existam mais cenários. Esses erros
podem ser minimizados utilizando grafos como solução.
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 9
Outras soluções mais clássicas, como no ramo de logística de entrega, um diferen-
cial que muitas empresas têm adotado é uma entrega cada vez mais rápida. Para
isso, investem muito em soluções que possam melhorar o tempo com menor custo
de deslocamento. Aplicativos de GPS que, além de montar a rota, levam em con-
sideração a distância e o tempo para sair da origem e chegar ao destino planejado.
Caso você tenha interesse em se aprofundar no assunto de grafos e computação,
sugiro a leitura do material Grafos, teoria, modelos e algoritmos, de Paulo Oswaldo
Boaventura Netto. Recomendo ler principalmente o Capítulo 2, Principais noções.
Disponível no Google Acadêmico. Recursos de mídia disponíveis no conteúdo
digital do ambiente virtual de aprendizagem
EU INDICO
VOCÊ SABE RESPONDER?
Você sabe explicar o termo simulações de workflows?
A fim de finalizar este tema, na aplicação da área de computação, falaremos sobre
representação de grafos em sistemas.
1
4
1
A forma de representar um grafo em sistemas computacionais pode ocorrer
da forma que melhor você entender. Parece bem genérico, mas lembre-se de que,
tudo que criamos existem infinitas formas de ser representadas e isso não é tão
importante, mas sim o conceito.
Uma casa não é, necessariamente, quatro paredes com um teto, uma casa
pode ser criada com outros formatos, mantendo o conceito de uma casa.
Com um grafo não é diferente, podemos representá-lo de inúmeras formas,
mas precisamos manter o conceito dos vértices e arestas para que se caracterize
como grafo. O comum é um conjunto de nós ligados, Figura 6.
Figura 6 – Grafo não direcionado / Fonte: Lessa Junior e Lessa (2021, p. 120).
Descrição da Imagem: a imagem representa um grafo não direcionado em diagrama de nós e em lista, em que
o nó A está conectado em C e B; nó B conectado em A e D; nó C conectado em A e D; nó D conectado em C e B.
À direita do grafo, há uma tabela definindo o vértice e suas ligações. A primeira coluna é o Vértice descrito com
o cabeçalho Nó; a segunda coluna são as Arestas com o cabeçalho Conectado a. São elas: A - C, B; B - A, D; C - A,
D; D - C, D. Fim da descrição.
Nesse exemplo, há uma representação tanto em diagrama de nós quanto em uma
lista, ambos são compreensíveis e mantêm o conceito inicial de grafo.
O ponto-chave é manter o conceito em que um vértice precisa estar conectado a
outro por meio de arestas.
PENSANDO JUNTOS
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 9
Outra forma clássica de representar um grafo é por meio de matrizes, no qual
podemos representar uma matriz n x n. Entende-se uma matriz adjacente na
seguinte representação da Figura 7.
Na matriz adjacente que representa um grafo, o valor da célula que possui zero
significa que não possui aresta. O valor que contém o valor 1 representa uma
reta de ligação entre os vértices. A representação gráfica da matriz com os nós
seria como na Figura 8.
Figura 7 – Matriz adjacente / Fonte: Lessa Junior e Lessa (2021, p. 121).
Descrição da Imagem: a imagem é uma representação de uma matriz no qual os vértices de saída estão nas
linhas e os vértices de destino nas colunas. As arestas são os valores 1 na matriz. As ligações são: A e B, A e C, A
e D, B e A, B e C. B e D, B e E, C e A, C e B, D e A, D e B, D e E, E e B, E e D. Fim da descrição.
1
4
4
Um adjacente apenas simbolizando se existe
(um) ou não existe (zero) pode ser chama-
da uma matriz de byte ou matriz de dados
binários.
Outra representação é se há a necessidade
de valores absolutos. Entenda que nesta re-
presentação os valores podem influenciar
no problema, por exemplo, a distância.
Nesses casos, devemos informar realmente
os valores que ocorrem na matriz, Figura 9.
d
a
b
c
e
Figura 8 – Representação em nós de grafo em relação à matriz adjacente / Fonte: Lessa Junior e Lessa
(2021, p. 121).
Descrição da Imagem: a imagem é um grafo que mostra a relação de nós e a matriz adjacente, em que o vértice à
esquerda é o A, e está ligado em B, C e D; à direita está o vértice B e está ligado em A, C, D, E; abaixo está o vértice
C, e está ligado em A, B; acima do vértice A está o vértice D, ligado em A, B, E; e à direita está o vértice E, ligado
em B, D. Fim da descrição.
UNIASSELVI
1
4
5
TEMA DE APRENDIZAGEM 9
A matriz adjacente pode representar adequadamente um grafo, mas quando se
trata de valores absolutos, é importante ter o cuidado de informar se o valor zero
representa um valor ou a falta da aresta.
29
44
40 79
90
28
55
a
a
b
b
c
c
d
d
e
e
0
79
40
28
0
79
0
29
90
44
40
29
0
0
0
48
90
0
0
55
0
44
0
55
0
c
b e
d
a
Figura 9 – Matriz adjacente com valores absolutos / Fonte: Lessa Junior e Lessa (2021, p. 122).
Descrição da Imagem: a figura é uma representação do grafo sendo criado com a matriz adjacente com valores
absolutos. A figura lembra um pentágono invertido, o primeiro vértice superior à esquerda é o C; à direita e no
centro o vértice B; à direita o vértice E; abaixo o vértice D; e à direita o vértice A. As arestas com seus valores são
(C, B, 29), (B, C, 79), (B, D, 90), (B, E, 44), (E, D, 55), (D, A, 28) e (A, C, 40). Fim da descrição.
Quando tratamos de valores absolutos, a referência faz a diferença de como inter-
pretar os dados que estão sendo coletados. Zero pode representar um valor válido
dependendo da referência do problema a ser resolvido.
PENSANDO JUNTOS
1
4
1
APLICAÇÕES DA TEORIA DE GRAFOS NA LINGUAGEM DE
PROGRAMAÇÃO PYTHON
Neste tema, não elaboraremos diretamente um algoritmo na linguagem de pro-
gramação Python, mas entenderemos os fundamentos para elaboração de um
algoritmo sobre grafos.
Para a realização das próximas atividades, sugiro que além da plataforma Visual
Studio Code, que temos utilizado, que você faça uso principalmente da platafor-
ma PyCharm
Você pode, além das duas plataformas anteriores, optar pela plataforma Anacon-
da. É interessante que você teste seus algoritmos nessas plataformas e veja qual é
mais adequada ao seu trabalho diário. Recursos de mídia disponíveis no conteú-
do digital do ambiente virtual de aprendizagem
EU INDICO
Vamos aprender como implementar uma estrutura de dados em grafo em Python.
Veremosduas formas de representar a estrutura: representação explícita, no qual
nomeamos os vértices no grafo, e representação implícita, cujo identificador é
um número inteiro associado automaticamente e faz a referência ao vértice.
Primeiramente, vamos aprender como montar o grafo. Assumiremos que será
fornecida a lista de vértices com as suas devidas ligações. A partir disso, passamos
a conectar os vértices e as arestas. Vamos trabalhar com a seguinte lista de arestas:
■ A B.
■ B D.
■ B C.
■ C E.
■ C B.
■ D A.
■ E B.
Para criar esse grafo em Python, é bem simples, basta criar as arestas para os
vértices. Por exemplo, temos que dizer que possui uma aresta que vai de A para B.
Neste exemplo, vamos usar um dicionário de lista em uma representação
UNIASSELVI
1
4
1
TEMA DE APRENDIZAGEM 9
explícita, em que a chave é o vértice e os valores são a lista. Veja o código a seguir
que mostra como montamos esse grafo e, em seguida, vamos detalhá-lo:
1 grafoexplicito = {“A” : [“B”],
2 “B” : [“C”, “D”],
3 “C” : [“B”, “E”],
4 “D” : [“A”],
5 “E” : [“B”]}
■ Linha 1: Cria a aresta do vértice A para o vértice B.
■ Linha 2: Cria a aresta do vértice B para o vértice C e D.
■ Linha 3: Cria a aresta do vértice C para o vértice B e E.
■ Linha 4: Cria a aresta do vértice D para o vértice A.
■ Linha 5: Cria a aresta do vértice E para o vértice B.
Veja a representação visual de como ficou esse grafo na Figura 10.
E
C
B
A
D
Figura 10 – Representação do grafo explícito criado em Python / Fonte: Lessa Junior e Lessa (2021, p. 124).
1
4
8
Uma vez montado o grafo, é necessário executar operações básicas que serão
utilizadas durante a manipulação:
■ Listar os vértices.
■ Recuperar a lista de arestas.
■ Verificar a existência de uma aresta.
■ Adicionar uma aresta.
■ Obter tamanho do grafo.
■ Adicionar aresta entre dois vértices.
Veja o código de como criar cada uma dessas operações. Vamos usar a col-
lections defaultdict para manipular o grafo e, logo em seguida, detalharemos
essas linhas de códigos:
1from collections import defaultdict
2
3class grafo(object):
4 def __init__(self, aresta, direcionado=False):
5 self.adj = defaultdict(set)
6 self.direcionado = direcionado
7 self.adiciona_aresta(aresta)
8
9 def get_vertice(self):
10 return list(self.adj.keys())
11
12 def get_aresta(self):
13 return [(k, v) for k in self.adj.keys() for v in self.adj[k]]
14
15 def adiciona_aresta(self, aresta):
16 for u, v in aresta:
17 self.adiciona_ligacao(u, v)
Descrição da Imagem: a figura é uma representação do grafo em diagrama de vértice, em que, à direta superior
está o vértice E; abaixo o vértice C; no centro o vértice B; à direita superior o vértice A; e abaixo o vértice D. A
arestas são formadas por (E, C), (E, B), (C, B), (B, A), (B, D) e (A, D). Fim da descrição.
UNIASSELVI
1
4
9
TEMA DE APRENDIZAGEM 9
18
19 def adiciona_ligacao(self, u, v):
20 self.adj[u].add(v)
21 if not self.direcionado:
22 self.adj[v].add(u)
23
24 def existe_aresta(self, u, v):
25 return u in self.adj and v in self.adj[u]
26
27 def __len__(self):
28 return len(self.adj)
29
30 def __str__(self):
31 return ‘{}({})’.format(self.__class__.__name__, dict(self.adj))
32
33 def __getitem__(self, v):
34 return self.adj[v]
■ Linha 3 a 7: inicializa a estrutura do grafo, passando com parâmetro se
será direcionado ou não direcionado.
■ Linha 9 e 10: recupera a lista de vértices.
■ Linha 12 e 13: recupera a lista de arestas.
■ Linha 15 a 17: adiciona arestas de acordo com parâmetro.
■ Linha 19 a 22: adiciona uma ligação entre os vértices recebidos com pa-
râmetros (u e v).
■ Linha 24 e 25: verifica se possui uma aresta entre os parâmetros u e v.
■ Linha 27 e 28: obtém o tamanho do grafo.
■ Linha 30 e 31: formata a impressão do grafo de forma legível.
■ Linha 33 e 34: obter a lista adjacências do vértice.
Agora, com esses métodos criados, podemos criar um grafo e utilizar as opera-
ções criadas nesta classe. Por exemplo, seguido da explicação desse conteúdo:
1
5
1
1 from Grafo import grafo
2
3 aresta = [(‘A’, ‘B’), (‘B’, ‘C’), (‘C’, ‘B’), (‘D’, ‘A’), (‘E’, ‘B’)]
4
5 criagrafo = grafo(aresta, direcionado=True)
6 print(criagrafo.adj)
7
8 print(criagrafo.get_vertice())
9
10 print(criagrafo.get_aresta())
11
12 print(criagrafo.existe_aresta(‘A’,’B’))
13
14 print(criagrafo.existe_aresta(‘E’,’C’))
■ Linha1: importa a classe criada anteriormente.
■ Linha 3: cria as arestas.
■ Linha 5: inicializa o grafo direcionado com as arestas definidas na linha 3.
■ Linha 6: imprime o grafo em forma de texto: defaultdict(<class ‘set’>, {‘A’:
■ {‘B’}, ‘B’: {‘C’}, ‘C’: {‘B’}, ‘D’: {‘A’}, ‘E’: {‘B’}}).
■ Linha 8: imprime os vértices do grafo em texto: [‘A’, ‘B’, ‘C’, ‘D’, ‘E’].
■ Linha 10: imprime as arestas do grafo em texto: [(‘A’, ‘B’), (‘B’, ‘C’), (‘C’,
‘B’),(‘D’, ‘A’), (‘E’, ‘B’)].
■ Linha 12: imprime em verdadeiro ou falso se existe uma aresta entre A e
■ B, resultado true.
■ Linha 14: imprime em verdadeiro ou falso se existe uma aresta entre E e
C, resultado falso.
Dessa forma, podemos utilizar a classe grafo de forma genérica para criação
e manipulação de qualquer grafo que deseja ser criado.
Também podemos criar os grafos com representação implícitas, como men-
cionado anteriormente. Nesse caso, os vértices vão receber, automaticamente, um
identificador inteiro. No caso anterior, adicionamos os nomes de forma manual.
Por exemplo, seguido da explicação dessas linhas:
UNIASSELVI
1
5
1
TEMA DE APRENDIZAGEM 9
■ 1 grafoimplicito = [ [1],
■ 2 [2, 3],
■ 3 [1, 4],
■ 4 [0],
■ 5 [1]]
■ Linha 1: vértice 1 ligado ao vértice 0.
■ Linha 2: vértice 2 e 3 ligados ao vértice 1.
■ Linha 3: vértice 1 e 4 ligados ao vértice 2.
■ Linha 4: vértice 0 ligado ao vértice 3.
■ Linha 5: vértice 1 ligado ao vértice 4.
Veja a representação visual de como ficou esse grafo na Figura 11.
1
2
4
3
0
Figura 11 – Representação do grafo implícito criado em Python / Fonte: Lessa Junior e Lessa (2021, p. 128).
Descrição da Imagem: a figura é uma representação do grafo em diagrama de nós, em que o nó 0 está ligado em
1,3; nó 1 ligado em 0,2,3,4; nó 2 ligado em 4,1; nó 3 está ligado em 0,1; e nó 4 está ligado em 2,1. Fim da descrição.
1
5
1
APLICAÇÃO DO NETWORKX DO PYTHON NA MANIPULAÇÃO
DE GRAFOS
Quando trabalhamos com linguagens de alto nível, normalmente elas possuem
bibliotecas que resolvem problemas clássicos, como listas, buscas, gráficos e grafos.
O Python possui biblioteca que auxilia na criação, representação e solução
dos grafos para auxiliar e facilitar o entendimento da construção de soluções.
Uma das bibliotecas é a networkx, que cria e mantém um grafo, além de possi-
bilitar a criação de um gráfico de nós para o entendimento visual.
Não esqueça de instalar inicialmente, no seu computador, a biblioteca net-
workx no terminal ou cmd com o comado pip install networkx. Se você for
utilizar o anaconda, use conda install networkx.
Vamos começar a criar algoritmos para gerar grafos no python por meio da
biblioteca networkx. Você deve começar com:
import networkx as nx
G = nx.Graph()
No exemplo anterior, o vértice 0 representa o A; 1 o B; 2 o C; 3 o D; e 4 o E. Eles
foram adicionados e referenciados de forma implícita, ou seja, não precisamos
nomeá-los.
PENSANDO JUNTOS
Além da biblioteca collections, contendo defaultdict, você pode utilizar as bi-
bliotecas: python-igraph, instalação feita no terminal ou cmd com o comando pip
install python-igraph e pip install pycairo, e o graph lib, instalação feita no terminal
ou cmd com o comando pip install graphlib.
Se você for utilizar a plataforma anaconda, no caso do python-igraph, a instalação
é feita no terminal da anaconda com o comando conda install -c vtraag python-i-
graph e conda install -c anaconda cairo.
Dentro do contexto de grafos no Python, a melhor opção é a biblioteca networkx.
APROFUNDANDO
UNIASSELVI
1
5
1
TEMA DE APRENDIZAGEM 9
Inicialmente, construiremos um grafo de três vértices e duas arestas. Afunção
add_node gera vértices e a função add_edge gera arestas.
print(‘+++++++++++++++++++++++++++++++++++++++++’)
import networkx as nx
G = nx.Graph()
G.add_node(1)
G.add_node(2)
G.add_node(3)
print(G.nodes())
print(‘+++++++++++++++++++++++++++++++++++++++++’)
G.add_edge(1, 2)
G.add_edge(2, 3)
n_v = G.number_of_nodes()
n_a = G.number_of_edges()
print(‘Número de vértices: ‘, n_v, ‘Número de arestas: ‘, n_a)
print(‘+++++++++++++++++++++++++++++++++++++++++’)
Ao executar o algoritmo, teremos:
+++++++++++++++++++++++++++++++++++++++++
[1, 2, 3]
+++++++++++++++++++++++++++++++++++++++++
Número de vértices: 3 Número de arestas: 2
+++++++++++++++++++++++++++++++++++++++++
Agora, construiremos um grafo no formato de um quadrilátero com uma
diagonal.
1 import networkx as bibliotecaNetworkx
2
3 grafo = bibliotecaNetworkx.Graph()
4
5 grafo.add_node(“a”)
6 grafo.add_node(“b”)
7 grafo.add_node(“c”)
1
5
4
8 grafo.add_node(“d”)
9
10
11 grafo.add_edge(“a”,”b”)
12 grafo.add_edge(“a”,”c”)
13 grafo.add_edge(“b”,”d”)
14 grafo.add_edge(“c”,”d”)
15 grafo.add_edge(“c”,”b”)
16
17 numeroVertices = grafo.number_of_nodes()
18 numeroArestas = grafo.number_of_edges()
19 print(“Visualizando as ligações de um vértice”, grafo.adj[“a”])
20 print(“Quantidade de arestas por vértice”, grafo.degree)
21 print(“Quantidade de vértices”, numeroVertices)
22 print(“Quantidade de arestas”, numeroArestas)
23 print(“Vértices do grafo”, grafo.nodes())
24 print(“Arestas do grafo”, grafo.edges())
Ao executar o algoritmo, teremos:
Visualizando as ligações de um vértice {‘b’: {}, ‘c’: {}}
Quantidade de arestas por vértice [(‘a’, 2), (‘b’, 3), (‘c’, 3), (‘d’, 2)]
Quantidade de vértices 4
Quantidade de arestas 5
Vértices do grafo [‘a’, ‘b’, ‘c’, ‘d’]
Arestas do grafo [(‘a’, ‘b’), (‘a’, ‘c’), (‘b’, ‘d’), (‘b’, ‘c’), (‘c’, ‘d’)]
Perceba que, no código, importamos a biblioteca para conseguirmos utilizar
as funcionalidades de gerenciamento do grafo. Vamos detalhar o código:
■ Linha 1: importa a biblioteca network para a definição bibliotecaNet-
workx.
■ Linha 3: instala o objeto como um grafo para utilizar os seus métodos.
■ Linha 5 a 8: adiciona os vértices ‘a’ até ‘d’. Veja que se utiliza-se “node”
■ (nó) para representar os vértices.
■ Linha 11 a 15: adiciona as arestas para que cada ligação seja formada.
UNIASSELVI
1
5
5
TEMA DE APRENDIZAGEM 9
■ Linha 17 a 18: recupera a quantidade de vértices e arestas, respectiva-
mente.
■ Linha 19: imprime os vértices ligados ao vértice informado, caso não seja
informado (grafo.adj), será impresso os vértices com seus respectivos
dados.
■ Linha 20: imprime a quantidade de arestas por vértices - [(‘a’, 2), (‘b’, 3),
■ (‘c’, 3), (‘d’, 2)].
■ Linha 21 a 22: imprime a quantidade de vértices e arestas existentes no
grafo.
■ Linha 23 a 24: imprime os vértices e as arestas do grafo.
A biblioteca network possui funcionalidades completas para criar grafos, vértices,
arestas e ainda podemos remover cada um dos elementos, acessar diretamente
e exibir um elemento gráfico.
Não esqueça de instalar inicialmente, no seu computador, a biblioteca ma-
tplotlib no terminal ou cmd com o comado pip install matplotlib.
Por exemplo:
1
5
1
1 import matplotlib.pylab as grafico
2 import networkx as bibliotecaNetworkx
3
4 grafo = bibliotecaNetworkx.Graph()
5
6
7 grafo.add_node(“a”)
8 grafo.add_node(“b”)
9 grafo.add_node(“c”)
10 grafo.add_node(“d”)
11 grafo.add_node(“e”)
12 grafo.add_node(“f ”)
13
14 grafo.add_edge(“a”,”b”)
15 grafo.add_edge(“b”,”c”)
16 grafo.add_edge(“c”,”d”)
17 grafo.add_edge(“d”,”e”)
18 grafo.add_edge(“e”,”f ”)
19 grafo.add_edge(“f ”,”a”)
20
21 posicionamento = bibliotecaNetworkx.circular_layout(grafo)
22 bibliotecaNetworkx.draw_networkx_edge_labels(grafo,posicionamento,
23 edge_labels={(‘a’,’b’):’aresta a-b’,
24 (‘b’,’c’):’aresta b-c’,
25 (‘c’,’d’):’aresta c-d’,
26 (‘d’,’e’):’aresta d-e’,
27 (‘e’,’f ’):’aresta e-f ’,
28 (‘f ’,’a’):’aresta f-a’
29 },
30 font_color=’green’)
31 bibliotecaNetworkx.draw(grafo,with_labels=True,
32 pos=posicionamento,
33 node_color=’red’,
34 edge_color=’blue’)
35 grafico.show()
UNIASSELVI
1
5
1
TEMA DE APRENDIZAGEM 9
Nesse exemplo, além de acrescentar os vértices e arestas, são utilizadas proprieda-
des gráficas, como cor, layout e descrição das ligações. Todas essas propriedades
podem ser utilizadas para melhor customizar ou, caso não sejam informadas,
serão criadas aleatoriamente pela biblioteca, com a exceção da descrição.
■ Linha 1: importação da biblioteca que irá gerar o desenho.
■ Linha 2 a 19: idêntico ao exemplo anterior, que realiza a importação da
biblioteca, cria o objeto grafo, adiciona os vértices e as arestas.
■ Linha 21: definido o layout que o grafo terá, é importante que esta defi-
nição seja após a inclusão dos vértices e arestas para que o layout possa
ser calculado.
■ Linha 22 a 30: definido as informações que serão exibidas em cada linha
do grafo, assim como a cor do texto. Esta configuração é opcional para
quando existir a necessidade de exibir algum dado.
■ Linha 31 a 34: desenho do grafo para inclusão do layout, exibição dos
valores em cada label e cores dos vértices e arestas.
■ Linha 35: exibe o grafo como imagem, quando usado em uma IDE, como
Pycharm ou Júpiter, a imagem é exibida automaticamente.
Existem cenários em que esta característica é crucial para a resolução correta.
Para criar o grafo com essa característica, precisa-se instanciar o objeto DiGraph
que, utilizando o exemplo anterior, substituirá a linha 4: grafo = bibliotecaNet-
workx.DiGraph(). O resultado do grafo fica conforme a Figura 12.
c b
d a
e f
aresta b-c
aresta e-f
ar
es
ta
f-
a
ar
es
ta
c-
d
aresta d-e
aresta a-b
Figura 12 – Grafo com aresta direcionado no PyCharm / Fonte: Lessa Junior e Lessa (2021, p. 132).
1
5
8
APLICAÇÃO DA OPÇÃO BUSCA EM GRAFOS
Muitos problemas podem ser resolvidos por meio de grafos, nos quais a solução
para o problema requer que realizemos uma busca pelo grafo.
De uma forma simplificada, a busca em grafo sempre começa por um vértice
qualquer e navegamos no grafo de formas diferentes, dependendo do tipo de busca.
Por exemplo, para alguns tipos de problemas, a solução reside no caminho
percorrido e não em um nó-alvo específico.
Descrição da Imagem: a figura representa o grafo com arestas direcionadas quando instanciando o DiGraph e
utilizando o PyCharm, no qual as arestas fazem as ligações em uma única direção, representadas pelas setas. A
figura representa um hexágono com os vértices iniciando no centro à esquerda D; abaixo E; à direita F; centro
superior A; superior B, esquerda C. As arestas com seus respectivos labels são: (D, E, aresta d-e), (E, F, aresta e-f),
(F, A, aresta f-a), (A, B, aresta a-b), (B, C, aresta b-c), (C, D, aresta c-d). Fim da descrição.
Atualmente, com o uso massivo da internet, as fraudes têm aumentado significati-
vamente nas transações eletrônicas.
As instituições financeiras têm apostado na teoria de grafos para auxiliar nesse
combate às fraudes relacionadas ao sistema financeiro e transações on-line, es-
truturando um relacionamento entre pessoas e empresas, como relações societá-
rias, parentescos, endereços, dentre outros e utilizando os algoritmos específicos
para resolver o problema, por exemplo, o caminho com menor custo.
PENSANDO JUNTOS
UNIASSELVI
1
5
9
TEMA DE APRENDIZAGEM 9
O primeiro passo é armazenar os dados em formato de grafo e seus relaciona-
mentos, porém, após os dados estarem estruturados, é necessário realizar uma
busca nos relacionamentos.
Existem diversos algoritmos que podem ser utilizados ou adaptados para
solucionar um problema específico, como o caminho mais curto entre o ponto
A e B ou, ainda, o relacionamento entre duas pessoas, a fim de detectar fraudes
em uma transação financeira.
O uso de grafos e os tipos de buscas são comuns no uso de inteligência arti-
ficial e machine learning, principalmente para análises preditivas e prescritivas.
O uso desse tipo de