:::: MENU ::::

Você já ouviu falar do fractal chamado Barnsley's fern? Esse fractal é, literalmente, uma folha de samambaia. É isso mesmo, podemos usar transformações no plano cartesiano e estatística para desenhar a samambaia de Barnsley. Abaixo está um vídeo com a explicação de como a samambaia de Barnsley é construída. Logo após o vídeo está um código em Python que faz o desenho da samambaia de Barnsley marcando ponto a ponto desse fractal.

Barnsley's Fern  (Samambaia de Barnsley)

Vídeo com a explicação de como o Barnsley's Fern é construído:


Cógido em Python que gera o Barnsley's Fern:

import turtle
import random

pen = turtle.Turtle()
pen.shapesize(0.1,0.1,0.1)
pen.speed(100)
pen.color("green")
pen.penup()

x = 0
y = 0
for n in range(50000):
pen.goto(65 * x, 37 * y - 252)
pen.pendown()
pen.dot(3)
pen.penup()
r = random.random()
if r < 0.01:
x, y = 0.00 * x + 0.00 * y, 0.00 * x + 0.16 * y + 0.00
elif r < 0.86:
x, y = 0.85 * x + 0.04 * y, -0.04 * x + 0.85 * y + 1.60
elif r < 0.93:
x, y = 0.20 * x - 0.26 * y, 0.23 * x + 0.22 * y + 1.60
else:
x, y = -0.15 * x + 0.28 * y, 0.26 * x + 0.24 * y + 0.44
Gostou do conteúdo dessa postagem? Foi útil para você? Tem alguma dúvida? Deixe um comentário.

Chegamos a um ponto muito importante no estudo de funções, nessa e nas próximas postagens vamos estudar os gráficos de funções reais de uma variável real. Entender o que é e saber fazer o esboço do gráficos de algumas funções é importante pois, por meio deles, conseguimos visualizar informações essenciais sobre o comportamento de uma função. Um gráfico não é simplesmente um desenho ou figura. O gráfico nos indica, por exemplo, a imagem da função, para quais subconjuntos do domínio a função é crescente ou decrescente, pontos de descontinuidade, pontos de máximo e míninos locais ou absolutos, se a função é limitada, se possui zeros, etc.. Talvez você não esteja familiarizado ainda com os conceitos citados acima, exceto a imagem de uma função, mas, acredite em mim, esses conceitos todos são muito importantes e devem ser bem compreendidos por qualquer estudante de ensino superior que esteja fazendo as disciplinas Cálculo I e II. É muita coisa, não é? Mas, fique tranquilo. Aqui no blog, vamos começar com calma, o objetivo é te fornecer a base, para que, quando for estudar os conceitos que mencionei acima e mais alguns outros, você esteja preparado. Essa primeira postagem será dedicada à definição de gráfico somente. A partir da próxima é que vamos aprender como fazer alguns gráficos. Então, sem enrolação, vamos lá!

Gráfico de funções de uma variável

Começaremos definindo o gráfico de uma função real de uma variáel real.

Definição: Seja $f: A \rightarrow B$ uma função real de uma variável real. Definimos o gráfico da função $f$, denotado por $G(f)$, como sendo o subconjunto do plano
$$G(f) = \{(x, f(x)) \in \mathbb{R}^2: x \in A\}.$$

Vamos entender melhor essa definição. Uma coisa que pode parecer "estranha" nessa definição é que o gráfico é definido como um subconjunto do plano $(\mathbb{R}^2 = \mathbb{R} \times \mathbb{R})$. Como assim, subconjunto do plano? Não é um desenho ou figura? O gráfico de uma função é mesmo um subconjunto do plano, formado pelos pontos $(x, f(x))$ onde $x$ percorre todo o domínio da função $f$. Quando tomamos cada ponto desse e os representamos (desenhamos) no plano, ao observamos todos desenhados, vemos uma curva (ou uma reta). 

Vejamos alguns exemplos.

Exemplos:

1. Considere a função $f: \mathbb{R} \rightarrow \mathbb{R}$ dada por $f(x) = x-1$. O gráfico dessa função é
$$G(f) = \{(x, f(x)) \in \mathbb{R}^2: x \in \mathbb{R}\},$$
ou ainda,
$$G(f) = \{(x, x-1) \in \mathbb{R}^2: x \in \mathbb{R}\}.$$
Desenhando cada ponto desse conjunto no plano cartesiano, obtemos a seguinte representação gráfica de $f$.

Gráfico de uma reta


2. Considere a função $g(x) = \sqrt{x}$. Temos que $D(g) = [0, +\infty)$ e o seu gráfico  é
$$G(g) = \{(x, g(x)) \in \mathbb{R}^2: x \in [0, +\infty)\},$$
ou ainda,
$$G(g) = \{(x, \sqrt{x}) \in \mathbb{R}^2: x \in [0, +\infty)\}.$$
Desenhando cada ponto desse conjunto no plano cartesiano, obtemos o gráfico de $g$.

Gráfico da função raiz quadrada


3. Considere a função $h(x) = \displaystyle\frac{x}{x-2}$. Temos que $D(h) = \mathbb{R} - \{2\}$ e o seu gráfico  é
$$G(h) = \{(x, h(x)) \in \mathbb{R}^2: x \in \mathbb{R} - \{2\}\},$$
ou ainda,
$$G(g) = \left\{\left(x, \displaystyle\frac{x}{x-2}\right) \in \mathbb{R}^2: x \in [0, +\infty)\right\}.$$
No plano, o gráfico de $h$ é:

Gráfico de funções


Os gráficos dos exemplos acima foram gerados pelo GeoGebra. Ele possui versões on-line e alpicativos para celular e computador. Conheça o GeoGebra por esse link: https://www.geogebra.org. Ele é bem intuitivo e, em caso de dúvida, basta ir na própria ajuda do GeoGebra ou ver algum dos vários tutorias no YouTube.

Uma pergunta que pode nos ocorrer é a seguinte: os gráficos de funções são curvas no plano, mas será que toda curva no plano o gráfico de uma função? A resposta é: não.

Isso é uma consequência da definição de função. Uma função do conjunto $A$ no conjunto $B$ é uma regra que associa cada elemento de $A$ a um único elemento de $B$. Graficamente, isso quer dizer que, uma curva no plano será o gráfico de uma função se, ao passarmos uma reta vertical por toda a extensão dessa curva, a reta sempre tocorá em um único ponto da curva. Isso nos garante que, essa dada curva é formada por pontos $(X,Y)$ tais que o $Y$ é único para cada $X$ o que caracteriza uma função. 

Abaixo, a curva em azul é o gráfico de uma função, mesmo que não saibamos qual é. Arraste a reta vertical para a direita e para a esquerda e veja que essa reta toca a curva em apenas um ponto por toda a extensão da curva, formando pares $(X,Y)$, onde para cada $X$ há um único $Y$. 


Considere a figura abaixo.

teste da reta vertical


Observe que a curva em azul não pode ser o gráfico de uma função, pois, ao considerarmos uma reta percorrendo toda a extensão da curva, pelo menos em um momento, a reta vai tocar dois pontos da curva. Isto é, existe um $X$, para o qual temos associados dois valores distintos, o $Y_1$ e o $Y_2$.

Podemos usar o procedimento descrito acima para verificar se uma dada curva é o gráfico de uma função, ou seja, dada uma curva, imaginamos uma reta vertical passando por toda a curva. Se ela sempre tocar em um único ponto, a curva é o gráfico de uma função, agora, se em algum momento tocar em dois pontos da curva, então não temos o gráfico de uma função. Esse procedimento é conhecido como teste da reta vertical.

Vamos parar por aqui nessa postagem. Já sabemos o que é o gráfico de uma função e como saber se uma curva qualquer é ou não é o gráfico de uma função. Na próxima postagem, aprenderemos como fazer o esboço do gráfico de algumas funções importantes.

Gostou do conteúdo dessa postagem? Foi útil para você? Tem alguma dúvida? Deixe um comentário.

Essa é mais uma postagem com um código em Python. Dessa vez eu fiz um código para gerar polígonos estrelados regulares. Estudo programação quando posso, então, acredito que esse código pode ser, com certeza, melhorado. Sinta-se à vontade para fazer comentários, dar sugestões e também de usar o código onde quiser. Esse código pode ser usado para mostrar o que podemos fazer com Python a estudantes de matemática e computação. Pode ser usado também como um ótimo exercício para quem está estudando Python.

Antes do vermos o código, vamos entender o que é um polígono estrelado regular

Chamamos de poligonal uma sequência finita de segmentos de reta que são desenhados de forma que, onde um segmento acaba, outro começa. Uma poligonal é chamada simples quando os segmentos que a formam não se cruzam. Uma poligonal é chamada fechada quando o ponto inicial do primeiro segmento de reta coincide com o ponto final do último segmento de reta na poligonal. 

Definimos um polígono estrelado, formalmente, da seguinte forma: um polígono estrelado é uma poligonal não simples fechada, tal que, para cada três segmentos consecutivos quaisquer, os dois segmentos extremos estão no mesmo semiplano em relação ao segmento do meio. Tais polígonos são classificados como regulares se possuem todos os lados e ângulos congruentes.

Informalmente, um polígono estrelado regular é uma estrela onde os segmentos que a formam e os ângulos em sua pontas são congruentes (possuem a mesma medida).

Podemos construir um polígono estrelado regular de $n > 3$ pontas seguindo os passos:

1. Construa um círculo de raio qualquer e o divida em $n$ partes iguais;
2. Calcule $a = \displaystyle\frac{n}{2}$;
3. Liste os números inteiros $k$ tais que $2 < k \leq a$;
4. Determine o números $k$ tais que $\mbox{mdc}(k,n) = 1$;
5. A quantidade de números $k$ tais que $\mbox{mdc}(k,n) = 1$ é a quantidade de polígonos estrelados distintos que existem com $n$ pontas;
6. Ligando os pontos da divisão do círculo feita no passo 1, de $k$ em $k$, para cada $k$, vamos obter todos os polígonos estrelados regulares com $n$ pontas (paramos de ligar os pontos quando chegamos no ponto inicial, ou seja, ao ligarmos os pontos de $k$ em $k$, os pontos inicial e final devem coincidir).

Polígonos estrelados em Python

Esse é o código:

# Importando os pacotes
import math
from numpy import linspace
import matplotlib.pyplot as plt

# Introdução do app

print(10*'*', 'Bem vindo ao Gerador de Polígonos Estrelados Regulares', 10*'*')

print('\nVocê sabe o que é um polígono estrelado regular?')

texto1 = '\nUm polígono estrelado é uma poligonal (sequência de segmentos de reta), não simples \
\n(os segmentos se cruzam) fechada (os pontos inicial e final são os mesmos), tal que \
\npara cada três segmentos consecutivos quaisquer, os dois segmentos extremos estão \
\nno mesmo semiplano em relação ao segmento do meio. Tais polígonos são classificados \
\ncomo regulares se possuem todos os lados e ângulos congruentes.'

print(texto1)

texto2 = '\nA seguir, digite um número de pontas para ver quantos polígonos estrelados ' \
'existem com esse número de pontas e vizualizá-los.'

print(texto2)

# Função para calcular o mdc
def mdc(a,b):
if a % b == 1:
return 1
else:
r = -1
while r != 0:
r = a % b
a = b
b = r
return a

# Função para transformar grau em radiano
def rad(x):
return (x * math.pi) / 180

# Função com os passos
def lista_passos(x,y):
passos = []
lista = list(range(2, x + 1))
for i in lista:
if mdc(y, i) == 1:
passos.append(i)
return passos

# Função para desenhar as estrelas
def plotagem(lista_x, lista_y):
fig, ax = plt.subplots(figsize=(5,5))
circle = plt.Circle((0, 0), 1, fill=False, color='red')
ax.add_artist(circle)
plt.plot(lista_x, lista_y)
plt.ylim(-1.1,1.1)
plt.xlim(-1.1,1.1)
plt.show()

# Função para trocar a ordem dos pontos
def restos(passo,y):
lista = list(range(0, passo * y + 1, passo))
lista_restos = [i % y for i in lista]
return lista_restos

def main():
pontas = 0
cont = False
while cont == False:
try:
pontas = int(input('\nDigite o número de pontas (inteiro maior que 0): '))
if pontas > 0:
cont = True
else:
print('Você digitou um valor inválido. Tente novamente')
except ValueError:
print('Você digitou um valor inválido. Tente novamente')
div_circulo = linspace(0, 360, num=pontas + 1)
max = math.floor(pontas / 2)
lista_de_passos = lista_passos(max, pontas)
quantidade_estrelados = len(lista_de_passos)
if quantidade_estrelados == 0:
print('\nNão é possível construir um polígono estrelado regular com ' + str(pontas) + ' pontas.')
else:
print('\nExiste(m) ' + str(quantidade_estrelados) + ' polígono(s) estrelado(s) regular(es) com ' + str(pontas) + ' pontas.')
input('\nPressione qualquer tecla para vizualizá-los.')
pontos_x = [math.cos(i) for i in [rad(j) for j in div_circulo]]
pontos_y = [math.sin(i) for i in [rad(j) for j in div_circulo]]
for i in lista_passos(max, pontas):
aux_x = [pontos_x[j] for j in restos(i, pontas)]
aux_y = [pontos_y[j] for j in restos(i, pontas)]
plotagem(aux_x, aux_y)

main()
Gostou dessa postagem? Foi útil para você? Tem alguma dúvida? Deixe um comentário.