sábado, 18 de fevereiro de 2012

Pringles - Tutorial Mathematica Parte 1

Parte 2 disponível em: Pringles Tutorial Parte 2

Gosto de ler livros de divulgação científica. Eles são geralmente interessantes, simples de acompanhar e conseguem despertar curiosidade sobre temas que, normalmente e fora de contexto, não chamariam a atenção. No entanto, o próprio fato de um livro ter como tema a divulgação científica traz em si mesmo o problema de conter maneirismos, simplificações e exacerbações inconsequentes, naturais em qualquer leitura através da qual o autor pretende cativar seu leitor apresentando um assunto cujo público em geral desconhece. Em especial, os livros de divulgação matemática romantizam a dita cuja a tal ponto que, ao final da leitura, somos levados a vê-la como Neo vê a Matrix depois de descobrir que é o escolhido após o beijo ressucitador de Trinity, em que ele pára as balas dos agentes com as mãos e depois desce a porrada nos infelizes

A visão de Neo da Matrix, após a revelação de Trinity.
Ou seja, para o autor do texto de divulgação, tudo são números e a matemática é a arquiteta desse embaralhamento responsável por contectar a realidade com o abstrato. A visão é justificável: a matemática tem, dentro de suas letras e números, uma beleza e essa beleza poderia refletir a harmonia das coisas do nosso mundo; mas isso não quer dizer que seja necessariamente assim. É possível, entretanto, ver que a matemática está de fato em certas coisas do nosso dia-a-dia, como na batata Pringles, por exemplo:

$z=x^2+y^2$, vulgarmente conhecido como Batata Pringles

Ora, o leitor deve pensar que eu sou louco, mas na verdade não sou. Quem já comeu um delicioso e salgado $z=x^2+y^2$ sabe a sensação, principalmente com uma Coca ou cerveja gelada! Não há coisa melhor. Vou provar que de fato esse alimento é matemática pura. Vamos lá:

Relembre do Cálculo a seguinte ideia. Se $f(x,y)$ é uma função de duas variáveis, existe duas maneiras de visualizá-la. A primeira é no espaço tridimensional, rebatendo o valor de $f(x,y)$ no eixo z. Formalmente, $z=f(x,y)$ e temos um gráfico. A segunda opção é analisar o comportamento da função através de suas curvas de nível, assim, o que se faz é fixar um valor que a função pode assumir, $k$ por exemplo, e desenhar o resultado $f(x,y)=k$. Note que dessa vez o gráfico é bidimensional, pois ao fixar um valor para a função trabalhamos só com dois parâmetros $(x,y)$ e não $(x,y,f(x,y))$. Neste caso, as curvas de nível são vistas como fatias paralelas ao plano xy do gráfico de três variáveis. Por exemplo, a função $f(x,y)=x^2+y^2$ é um parabolóide. As fatias, $f(x,y)=k$, paralelas ao plano xy são círculos de raio $\sqrt{k}$.

Veja que eu fiz um desenho do paraboloide e de sua "sombra". Com a primeira linha eu guardei na variável a o desenho do parabolóide com o comando ContourPlot3D, na segunda linha desenhei parametricamente o que seriam as curvas de nível do parabolóide através do ParametricPlot3D (usando z=0) e fiz a composição das duas imagens com o comando Show.

Na imagem acima, aquilo que está como sombra do parabolóide são várias curvas de nível de $f(x,y)=k$, uma para cada valor de $k$, que no caso da figura escolhi variar de 0 até 1 (tanto {z,0,1} na linha a como {r,0,1} na linha b).

Essas são de fato as curvas de nível que citei acima. Veja que quanto mais escuro, menor é o valor que f(x,y) assume, ou seja, menor é o k e estamos fatiando paralelamente o parabolóide mais perto do plano xy. É como você estivesse olhando o parabolóide de cima para a baixo com a cabeça dentro dele.


Bem, agora que você já deve ter relembrado, a mesma ideia vale para mais dimensões. Se você tem uma função de três variáveis, $f(x,y,z)$, o seu gráfico é quadridimensional pois, analogamente, você dá $(x,y,z)$, calcula $f(x,y,z)$ e rebate $f(x,y,z)$ num quarto eixo $w$. Como é impossível enxergar isso, pois não temos quatro olhos (!), nossa saída é apelar para as curvas de nível de f, pois essas sim podem ser vistas, já que são tridimensionais, nesse caso. (Repare que de modo geral, uma função de n variáveis tem seu gráfico com dimensão (n+1) e curva de nível n-dimensional).

Legal. Vou mostrar então, voltando ao assunto principal do post, como desenhar a Batata Pringles no Mathematica. Para isso vamos utilizar a função $f(x,y,z)=z-x^2-y^2$ e assumir que a Batata Pringles é na verdade a curva de nível de $f$ quando $f(x,y,z)=0$ só para ficar mais chique! Eu poderia desenhar ela como um gráfico de uma função de duas variáveis, mas por questão de comodidade vou mostrar de outra maneira para explorar o comando ContourPlot3D do software.

Primeiro, desenhamos sem qualquer preocupação a curva de nível da função.


Veja que o comando ContourPlot3D exige que determinemos o domínio sobre o qual a função será desenhada. Nos dois casos escolhi entre -1 e 1 para as três variáveis. Outro ponto importante é que o Mathemática entende o = como ==. No segundo gráfico, adicionei certos comandos que "limpam" o desenho. Mesh->None retira o desenho da malha do primeiro gráfico, deixando um aspecto mais liso. Já o comando Boxed->False retira a caixa do desenho e Axes->False os eixos. Embora sem as caixas e eixos perdemos a referência, o desenho fica mais limpo. É o que queremos nesse caso.

Repare que a função desenhada ainda não está com cara de Pringles. Isso se deve à curvatura acentuada e dessas pontas. Quanto ao primeiro problema, vamos ter que mexer na cara da função. Quanto ao segundo, vamos ter que acertar o domínio. Neste caso, é como se desenhassemos numa folha de papel um desenho com aspecto circular e estivessemos só interessado no que está desenhado no centro da folha. Se com uma tesoura, cortamos a região no formato de um quadrado, vamos acabar com pontas, estragando de certa forma tal aspecto circular.

Para resolver ambas as questões, vamos ter que escolher um domínio (isto é, o formato da região em que vamos estudar a função) sobre o qual a função, quando for desenhada, adquira a "cara" da batata Pringles. Para isso, um chute inicial seria um domínio com formato de elipse:

Novamente utilizei o comando ContourPlot (mas dessa vez para desenhar no plano, e não no 3D como no ContourPlot3D) para visualizar o que seria um chute para o domínio da Pringles. Eu poderia ter desenhado a mesma coisa com o comando Plot ou através do ParametricPlot. O resultado seria o mesmo, mas os meios utilizados seriam diferentes. Um esclarecimento: O AspectRatio é um comando que coordena a razão entre altura e largura da imagem. Neste caso, eu coloque 4/2 que é a razão real Altura/Largura do desenho (isso eu vejo pelo domínio). O mathematica decide, automaticamente se você não especificar, qual o AspectRatio dos gráficos para que o desenho "caiba na tela" ou que mantenha a razão de aspecto próxima de 1/fi (o número de ouro). Isso quer dizer que muitas vezes o desenho vai sair distorcido (uma elipse sai redonda, se você não especificar, por exemplo). Qualquer dúvida perguntem-me.

Veja que a elipse com semi-eixo maior igual a 2 não representa bem o formato da Batata, cujo formato oval é menos acentuado que este. Como ajustar? Mudar o tamanho dos semi-eixos não seria uma boa, pois no fim a estrutura oval quase sempre fica acentuada. É preciso de "menos pontas" para o desenho ficar próximo ao da Pringles. Para isso, olhe para a figura acima e imagine comigo: coloque-se no ponto x=0 e y=2, no bico de cima da curva. O ideal seria que, andando sobre a cuva para a direita, a queda fosse menos brusca. Em termos de equação, para que a queda seja mais suave o valor que y deve assumir quando x é pequeno deve ser maior do que o atual. Assim, com um pouco de quebra-cabeça e brincadeira com a função, devemos elevar alguma potência da equação da elipse a um número par maior do que 2. Neste primeiro caso, tentamos 4:

Neste caso tive que mudar o domínio (x de -2 a 2 e y de -3 a 3) mas mantive a razão de aspecto real de acordo com o domínio, 6/4.



Repare que ao invés de $(\frac{y}{2})^2$, utilizar $(\frac{y}{2})^4$ realmente gerou o resultado que esperávamos, de suavizar as bordas acentuadas da elipse anterior. Mesmo assim, as batatas Pringles não são tão "gordas" como neste formato, o que fazer então? Desta vez não vou mudar na equação, mas vou explorar o AspectRatio. Como ele é a razão da Altura/Largura, se eu quero diminuir a largura, basta aumentar a razão de aspecto. Assim, se 6/4 = 1.5, testei o mesmo gráfico com 1.7:


Legal! É exatamente esse o formato que eu procurava. Só que ainda tenhoum problema. Quando eu utilizar a função da "elipse" no domínio, $x^2 + (\frac{y}{2})^4 =3$, para desenhar a batata em 3D, o Mathematica vai automaticamente colocar, como padrão, AspectRatio = 1, ou seja, vai destorcer o desenho.  Assim, para "burlar" o programa basta multiplicar a coordenada x por 1.7:


Agora estou pronto para dar vida a nossa Pringles. Primeiro, retomamos a primeira tentativa de desenho da batata mas agora colocamos o comando RegionFunction->Function[{x,y}, $0\leq (1,7)x^2 + (\frac{y}{2})^4 \leq 3$] que especifica o nosso domínio. Foi para isso que fizemos todo esse trabalho acima.
Usei o mesmo comando do primeiro desenho, mas tive que mudar o domínio para a "elipse" delimitar a região corretamente. Isto é, eu tive que usar tanto para x como para y o mesmo domínio que utilizei no último desenho da elipse. Depois escolhi o domínio de z para o desenho ficar certinho, sem cortes.

Isto definitivamente não tem o formato de nossa batata. Qual o problema então? Já ajustamos o domínio e sua região. Resta-nos brincar com a própria função $z=x^2-y^2$. Quando eu digo brincar, a ideia é mudar os valores dos coeficientes que acompanham as variáves, aumentar os expoentes, até que se chegue a um resultado satisfatório. Embora pareça um chutômetro, com o tempo e prática é possível intuir sobre algumas mudanças de forma exata e sem titubeações. Os coeficientes que encontrei foram 2 para x e 0.3 para y, de modo que o desenho da função ficou:

Agora sim! Era esse o formato que eu queria!!

Bem amigos, vou ficar por aqui, acho que já é o bastante para esse post.

No parte 2, vamos ver como inserir texturas no Mathematica e fazer com que o desenho fique definitivamente parecido com uma batata. A prévia do resultado final:


Olá, sou uma Pringles digital e não o bico de algum dos superpatos!

Abraços!!

Um comentário:

Postagem em destaque

Quais os melhores livros de Cálculo 1?

Uma dúvida muito comum de quem acabou de entrar na faculdade de exatas é qual livro de cálculo seguir e adotar como referência. Consulta...