MAT 172 { Matem atica Computacional Introdu˘c~ao ao Ti Z 172/2016-II/slides/slidestikz - MAT... ·...

41
MAT 172 – Matem´ atica Computacional Introdu¸c˜ ao ao Tik Z Lana Mara R. dos Santos Departamento de Matem´ atica Universidade Federal de Vi¸cosa 2016/II [email protected] MAT 172 - 2016/II 1 / 41

Transcript of MAT 172 { Matem atica Computacional Introdu˘c~ao ao Ti Z 172/2016-II/slides/slidestikz - MAT... ·...

MAT 172 – Matematica ComputacionalIntroducao ao TikZ

Lana Mara R. dos Santos

Departamento de MatematicaUniversidade Federal de Vicosa

2016/II

[email protected] MAT 172 - 2016/II 1 / 41

PGF/TikZ

PGF/TikZ e um linguagens para produzir imagens vetoriais, isto e,imagens descritas a partir da sua descricao geometrica ou algebrica.O PGF e uma linguagem de baixo nıvel enquanto TikZ e um conjuntode macros de alto nıvel que usa o PGF.

Uma imagem vetorial normalmente e composta por pontos, curvas,polıgonos, texto, entre outros elementos, isto e, utilizam vetoresmatematicos para sua descricao. As imagens vetoriais sao usualmentemais leves e nao perdem qualidade ao serem ampliadas.

O interpretador do PGF/TikZ pode ser usado dentro do LATEX. Asimagens geradas podem ser ncorporadas ao texto de formaharm niosa.

PGF/TikZ

O PGF/TikZ e uma ferramenta extremamente poderosa e completa paracriar elementos graficos sofisticados.

Exemplos de codigos de imagens usando o PGF/TikZ:http://www.texample.net

Manual PGF/TikZ: http://repositorios.cpai.unb.br/ctan/graphics/pgf/base/doc/pgfmanual.pdf

Existem varios softwares gratuitos para a edicao de imagens vetoriaisusando PGF/TikZ. Por exemplo:

TikzEdt GraTeX LATEXPIX ktikz

E possıvel gerar codigo PGF/TikZ a partir do GeoGebra, SageMath,Inkscape, Octave, Gnuplot, dentre outros softwares gratuitos.

Imagens Vetoriais Exportar Imagens Vetoriais no Geogebra

Exportar figura do Geogebra para o LATEX

Crie uma imagem no Geogebra.

Escolha a janela de visualizacao de interesse em arquivo/exportar.

O Geogebra exporta em tres pacotes para gerar imagens

vetoriais: PStricks, Asymptote e PGF/TikZ.

Na opc~ao LateX(beamer class) os elementos da imagem s~ao

salvos para serem exibidos separadamente usando o

comando \onslide.

[email protected] MAT 172 - 2016/II 4 / 41

comandos no TikZ

Produzindo figuras com o TikZ

No preambulo e preciso inserir o pacote tikz

Para gerar uma imagem usa-se o ambiente tikzpicture.

Dentro do ambiente, podem ser usados, dentre outros, os comandos:

\draw – para desenhar linhas\fill – para preencher areas com cores solidas\shade – para preencher areas com cores gradientes\clip – para preencher areas com cores solidas

que terminam com ponto-e-vırgula ;

Com parametros opcionais altera-se os estilos de linhas e depreenchimentos.

Para imagens geradas usando unico comando, pode se usar ocomando \tikz no lugar do ambiente.

[email protected] MAT 172 - 2016/II 5 / 41

Exemplos

\begin{tikzpicture}

\draw (0,1)--(1,0);

\end{tikzpicture}

\begin{tikzpicture}

\draw (0,1)--(1,0)--(2,2)--cycle;

\end{tikzpicture}

\begin{tikzpicture}

\draw (0,0) rectangle (2,2);

\end{tikzpicture}

Exemplos

\begin{tikzpicture}

\draw (2,2) circle (1cm);

\end{tikzpicture}

\begin{tikzpicture}

\draw (0,0) ellipse (2cm and 0.5cm);

\end{tikzpicture}

\begin{tikzpicture}

\draw (1,0) arc (0:75:2cm);

\end{tikzpicture}

comandos no TikZ Mudancas no estilo padrao

Alterando estilos

Coloque os estilos desejados da linha no parametro opcional do \draw,separados por vırgula se tiver mais de um.

\begin{tikzpicture}

\draw[<->, thick, blue] (0,4)--(0,0) -- (4,0);

\draw[red, ultra thick, dashed] (2,2) circle (1cm);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 8 / 41

comandos no TikZ Mudancas no estilo padrao

Grade

\begin{tikzpicture}

\draw[step=0.5cm,help lines] (-1,-1) grid (3,2);

\draw[red] (0,0)--(1,1);

\draw[blue] (2,1) circle(0.1cm);

\end{tikzpicture}

A grid B produz uma grade em que os pontos A e B sao os vertices da diagonalprincipal da grade.

help lines gera linhas cinzas e finas (o padrao e cor preta e espessura normal).

step largura de cada subdivisao da grade (o padrao e 1)

[email protected] MAT 172 - 2016/II 9 / 41

comandos no TikZ cores

Cores

blackbluebrowncyandarkgray

graygreenlightgraylimemagenta

oliveorangepinkpurplered

tealvioletwhiteyellow

Duas cores podem ser misturadas com o comando cor_1!X!cor_2

em que X e a porcentagem utilizada da cor_1.

blue!40!red e a cor obtida com 40% azul e 60% de vermelho.Se a cor_2 for branca, ela pode ser omitida. Desta forma, produzem asmesmas cores os comandos cor!X!white e cor!X.

[email protected] MAT 172 - 2016/II 10 / 41

comandos no TikZ cores

Alguns estilos de linhas

Espessura:

ultra thin

very thin

thin

thick

very thick

ultra thick

line width=4

Setas:

<-

<->

|->>

>->>

<<->>

double

Tracejada ou pontilhada:

dotted

densely dotted

loosely dotted

dashed

loosely dashed

[email protected] MAT 172 - 2016/II 11 / 41

comandos no TikZ comando fill

Exemplo - fill

\begin{tikzpicture}

\fill[blue] (0,0) rectangle (1,1);

\fill[blue!40!] (1.5,0) rectangle (2.5,1);

\fill[blue!40!lime, draw=black] (3,0) rectangle (4,1);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 12 / 41

comandos no TikZ comando fill

Exemplo

\begin{tikzpicture}

\draw [fill=blue] (0,0) rectangle (1,1) rectangle (2,2);

\draw [fill=white, fill opacity=0.5, double] (0.5,0.5) rectangle (1.5,1.5);

\draw [fill=white] (3.5,0.5) rectangle (4.5,1.5);

\draw [fill=blue] (3,0) rectangle (4,1) rectangle (5,2);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 13 / 41

comandos no TikZ comando shade

Exemplo - shade

\begin{tikzpicture}

\shade[left color=blue,right color=red] (0,0) rectangle (1,1);

\shade[top color=blue,bottom color=red] (1.5,0) rectangle (2.5,1);

\shade[inner color=red,outer color=blue] (3,0) rectangle (4,1);

\shade[inner color=blue, outer color=green, draw=black] (4.5,0) rectangle (5.5,1);

\shade[ball color=blue!70!] (6,0) rectangle (7,1);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 14 / 41

comandos no TikZ pontos em coordenadas cartesianas e polares

Pontos

Podem ser em coordenadas:

cartesianas valores (x , y) separados por vırgula — (0,1)

polares valores (θ : r) separados por 2-pontos — (30:1)

\tikz\draw[->,magenta] (0,0)--(-45:1)--(30:2);

[email protected] MAT 172 - 2016/II 15 / 41

comandos no TikZ pontos em coordenadas cartesianas e polares

Coordenadas relativas de um ponto

++ atualiza as coordenadas do ponto em relacao ao ultimo ponto.

+ atualiza as coordenadas do ponto em relacao ao primeiro ponto.

\tikz\draw[->, thick, red] (1,1) -- ++(1,2) -- ++(2,1);

\tikz\draw[->, thick, blue] (1,1) -- +(1,2) -- +(2,1);

[email protected] MAT 172 - 2016/II 16 / 41

comandos no TikZ foreach

comando foreach

O comando foreach permite fazer iteracoes em uma lista.

\foreach <variables> in <list> <commands>.

\begin{tikzpicture}

\foreach \x in {0, 2, ..., 10}

\shade[ball color=green!\x0!red] (\x,0) circle (3mm);

\end{tikzpicture}

Alguns exemplos de listas:

comando sequencia gerada

\foreach \x in {10,...,6} 10, 9, 8, 7, 6\foreach \x in {a,...,f} a, b, c, d, e, f\foreach \x in {1,3,...,10} 1, 3, 5, 7, 9\foreach \x in {0.1, 1,...,3,9,...,11} 0.1, 1, 2, 3, 9, 10,11

[email protected] MAT 172 - 2016/II 17 / 41

comandos no TikZ foreach

comando foreach

\begin{tikzpicture}[scale=0.8]

\foreach \x in {0,...,3}

\foreach \y in {\x,...,3}{

\draw (\x,0.8*\y) circle (2mm);

\fill[green] (\x,0.8*\y) circle (1mm);

}

\end{tikzpicture}

0 1 2 3 4 5 6 7 8 9 10

\begin{tikzpicture}

\draw[fill=gray!10!] (-0.2, 0) rectangle (10.2,1);

\foreach \x in {0,...,10}

\draw (\x,0) -- (\x,0.4) (\x,0.6) node{\tiny\color{blue}\x};

\foreach \x in {0,...,20} \draw (0.5*\x,0) -- (0.5*\x,0.3);

\foreach \x in {0,...,100} \draw (0.1*\x,0) -- (0.1*\x,0.2);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 18 / 41

Comando node

O comando \node pode ser usado para rotular um no (para ser usado, porexemplo em outro comando) ou para exibir algum rotulo para o no.

\node[opcionais] at ponto {texto }

ponto node[opcionais] {texto }

\begin{tikzpicture}

\node[draw] (a) at (0, 0) {A};

\node[circle,fill=green] (b) at (0: 1.5) {B};

\draw [->] (a) -- (b);

\draw [->] (4,0) node[left,draw, fill=green]

{$v_i$} -- ++(0: 1) node[circle,right,draw] {$\alpha$};

\end{tikzpicture}

A B vi α

comandos no TikZ comando node

Opcionais do node

Alguns opcionais de posicao do node:

above, below, left, right, above right, below left, etc.

xshift=comprimento e yshift=comprimento

pos=numero entre 0 e 1 (para caminhos)

\begin{tikzpicture}

\draw[blue,rotate=30] (0,0) rectangle (2,1);

\draw[dashed] (0,0)--node[pos=.5,below] {\tiny $x$} (2,0);

\draw[->] (0.5,0) node[above right] {\tiny $\theta=30^o$} arc (0:30:0.5);

\end{tikzpicture}

x

θ = 30o

[email protected] MAT 172 - 2016/II 20 / 41

comandos no TikZ comando clip

Comando \clip

O comando \clip e usado para recortar regioes de modo que tudo queestiver fora dela (e que foi definido depois) nao e exibido.

\begin{tikzpicture}

\draw[blue] (-1,-1) rectangle (1,1);

\clip (0,0) circle (1cm);

\fill[lime] (0,1) rectangle (-1,-1);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 21 / 41

comandos no TikZ comando clip

Comando \clip

O efeito de multiplos comandos \clip e a exibicao da intersecao dasregioes recortadas.

\begin{tikzpicture}

\draw[blue] (-1,-1) rectangle (1,1);

\clip (0,0) circle (1cm);

\clip (-1,-1) rectangle (0,0);

\fill[lime] (0,1) rectangle (-1,-1);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 22 / 41

comandos no TikZ comando clip

Comando \clip

O ambiente scope delimita a area que sera afetada pelos comandos \clip

\begin{tikzpicture}

\draw[blue] (-1,-1) rectangle (1,1);

\clip (0,0) circle (1cm);

\clip (-1,-1) rectangle (0,0);

\fill[lime] (0,1) rectangle (-1,-1);

\draw (0,0) circle (1cm);

\end{tikzpicture}

\begin{tikzpicture}

\draw[blue] (-1,-1) rectangle (1,1);

\begin{scope}

\clip (0,0) circle (1cm);

\clip (-1,-1) rectangle (0,0);

\fill[lime] (0,1) rectangle (-1,-1);

\end{scope}

\draw (0,0) circle (1cm);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 23 / 41

comandos no TikZ comando clip

Exemplo

\begin{tikzpicture}

\begin{scope}

\clip (0,0) circle (1.5cm);

\clip (45:2cm) circle (1.5cm);

\fill[lime] (0:2cm) circle (1.5cm);

\end{scope}

\draw (0,0) circle (1.5cm) node[left] {$A$};

\draw (45:2cm) circle (1.5cm) node [above] {$B$};

\draw (0:2cm) circle (1.5cm) node [below right] {$C$};

\end{tikzpicture}

A

B

C

[email protected] MAT 172 - 2016/II 24 / 41

comandos no TikZ Linhas curvas

Linhas curvas

ligue pontos com o comando to

[out=angulo-saıda ,in=angulo-chegada ]

\begin{tikzpicture}

\draw [<->,thick, cyan] (0,0) to [out=90,in=180] (1,1)

to [out=0,in=180] (3,0);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 25 / 41

Desenho de curvas

Curvas

Uma curva pode ser desenhada com o comando plot({f(\x)},{g(\x)})

em que \x e a variavel e f e g sao funcoes de \x.

\begin{tikzpicture}

\draw[->] (-3,0)--(3,0);

\draw[->] (0,-1)--(0,4);

\draw[blue,domain=-2:2] plot(\x,{(\x)^2});

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 26 / 41

Desenho de curvas

Curvas

\begin{tikzpicture}[domain=-3:3]

\draw[->] (-3,0) -- (5,0) node[right] {$x$};

\draw[->] (0,-3) -- (0,5) node[above] {$y$};

\draw[scale=0.5,blue] plot (\x,{(\x)^2});

\draw[scale=0.5,red] plot ({\x*\x},\x);

\end{tikzpicture}

x

y

[email protected] MAT 172 - 2016/II 27 / 41

Desenho de curvas

Curvas

A curva e produzida ligando um conjunto de pontos tabelados. O numero de pontospode ser ajustado com o opcional samples=<num pontos>. Alem deste comando, oopcional smooth suaviza a curva gerada pela interpolacao dos pontos da tabela.

\begin{tikzpicture}

\draw[->] (-2*pi-0.5,0) -- (2*pi+0.5,0) node[right] {$x$};

\draw[->] (0,-1.5) -- (0, 1.5) node[above] {$y$};

\draw[blue, domain=-2*pi:2*pi, smooth] plot (\x,{sin(\x r)});

\end{tikzpicture}

x

y

O angulo padrao e em graus. Para definir em radianos e preciso acrescentar r noparametro da funcao trigonometrica (como no caso da funcao seno na imagem.).

[email protected] MAT 172 - 2016/II 28 / 41

Desenho de curvas

Curvas - Exemplo

\begin{tikzpicture}[domain=0:4]

\draw[help lines] (-0.1,-1.1) grid (3.9,3.9);

\draw[->] (-1,0) -- (4,0) node[right] {$x$};

\draw[->] (0,-1) -- (0, 4) node[above] {$y$};

\draw[blue] plot (\x,{sin(\x r)}) node[right] {$f(x) = \text{sen\,}x$};

\draw[orange] plot (\x,{0.05*exp(\x)}) node[right]

{$g(x) = \frac{1}{20} \mathrm e^x$};

\end{tikzpicture}

x

y

f (x) = sen x

g(x) = 120ex

[email protected] MAT 172 - 2016/II 29 / 41

Curvas - Exemplos

\begin{tikzpicture}[xscale=10,yscale=3]

\draw [<->] (0,1) -- (0,0) -- (0.6,0);

\draw[green, thick, domain=0:0.5] plot (\x, {0.025+\x+(\x)^2});

\end{tikzpicture}

Curvas - Exemplo

\begin{tikzpicture}[scale=0.4]

\draw[->] (-5,0) -- (5,0) node[right] {$x$};

\draw[->] (0,-5) -- (0,5) node[above] {$y$};

\draw[scale=0.5,blue, samples=100, domain=0:4*pi]

plot ({\x*sin(\x r)},{\x*cos(\x r)});

\end{tikzpicture}

x

y

Desenho de curvas

Curvas

Para desenhar o grafico de funcoes descontınuas a estrategia mais simples e dividir afuncao pelas partes contınuas.

\begin{tikzpicture}[scale=0.4]

\draw[->] (-4,0) -- (4,0) node[right] {$x$};

\draw[->] (0,-4) -- (0,4) node[above] {$y$};

\draw[domain=-7/2:-1/4,color=blue] plot (\x,{1/\x});

\draw[domain=1/4:7/2,blue] plot (\x,{1/\x}) node[above] {$y=\frac{1}{x}$};

\end{tikzpicture}

x

y

y = 1x

[email protected] MAT 172 - 2016/II 32 / 41

Desenho de curvas

Curvas

E possıvel especificar o nome da variavel em vez de usar o padrao \x.

\begin{tikzpicture}[scale=0.5]

\draw[->] (-3.2,0) -- (3.2,0) node[right] {$x$};

\draw[->] (0,-3.2) -- (0,3.2) node[above] {$y$};

\draw (-3,-3) -- (3,3) (-3,3) -- (3,-3);

\draw[blue,domain=-1.8:1.8,variable=\t]

plot ({cosh(\t)},{sinh(\t)}) node[right]{$x^2-y^2=1$};

\draw[blue,domain=-1.8:1.8,variable=\t]

plot ({-cosh(\t)},{sinh(\t)});

\end{tikzpicture}

x

y

x2 − y 2 = 1

[email protected] MAT 172 - 2016/II 33 / 41

Desenho de curvas Area Hachurada

Regioes Hachuradas

\begin{tikzpicture}

\fill[blue!40!] (pi/4,0) --

plot [domain=pi/4:3*pi/4] (\x,{sin(\x r)}) -- (3*pi/4,0) -- cycle;

\draw plot[domain=0:pi] (\x,{sin(\x r)});

\draw[<->] (-0.3,0) -- (pi+0.3,0);

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 34 / 41

Desenho de curvas Area Hachurada

Regioes Hachuradas

\begin{tikzpicture}

\shade[left color=blue!40!green, right color=green, domain=1:2]

(1,0)--plot (\x,{1/\x})--(2,0)--cycle;

\draw[domain=0.8:2.4, blue, thick] plot (\x,{1/\x});

\draw (1,0) node[below]{\tiny $a$} (2,0) node[below]{\tiny $b$};

\draw[->] (-1,0) -- (2.6,0) node[right] {$x$};

\draw[->] (0,-0.5) -- (0,1.5) node[above] {$y$};

\end{tikzpicture}

a bx

y

[email protected] MAT 172 - 2016/II 35 / 41

Desenho de curvas Figura 3D

Exemplo Figura 3D

\begin{tikzpicture}

\shade[bottom color=red] (0,0,0)--(1,0,0)--(1,2,0)--(0,2,0)--cycle;

\shade[top color=gray] (0,2,0)--(0,2,-2)--(1,2,-2)--(1,2,0)--cycle;

\shade[left color=blue] (1,0,0)--(1,2,0)--(1,2,-2)--(1,0,-2)--cycle;

\end{tikzpicture}

[email protected] MAT 172 - 2016/II 36 / 41

graficos com o pacote pgfplots

Pacote pgfplots

O pgfplots e um pacote para ser usado com o TikZ que permite aconstrucao de graficos mais complexos.

Inserir no preambulo: \usepackage{pgfplots}

Em um ambiente tikzpicture, inserir o ambiente axis que diz respeitoaos eixos dos graficos:

\begin{tikzpicture}

\begin{axis}[opcionais]

<comandos>

\end{axis}

\end{tikzpicture}

Dentro do ambiente axis:

para graficos 2D: \addplot[opcionais]{func~ao}para graficos 3D: \addplot3[opcionais]{func~ao}

[email protected] MAT 172 - 2016/II 37 / 41

graficos com o pacote pgfplots Graficos em 2D

Exemplo

\begin{tikzpicture}

\begin{axis}

\addplot(\x,{sin(\x r)});

\end{axis}

\end{tikzpicture}

−6 −4 −2 0 2 4 6

−1

−0.5

0

0.5

1

\begin{tikzpicture}

\begin{axis}

\addplot[smooth](\x,{sin(\x r)});

\end{axis}

\end{tikzpicture}

−6 −4 −2 0 2 4 6

−1

−0.5

0

0.5

1

[email protected] MAT 172 - 2016/II 38 / 41

Exemplo

\begin{tikzpicture}

\begin{axis}[xlabel=$x$, ylabel=$y$, ytick={1}, axis lines=center,

xmin=-4,xmax=4,ymin=-3,ymax=5,scale=0.8,transform shape]

\addplot[smooth]{x^3};

\draw[dotted, thick, red] (axis cs:0,1)--(axis cs:1,1)--(axis cs:1,0);

\addplot [mark=o,ultra thin,draw=black] coordinates {(1,1)};

\end{axis}

\end{tikzpicture}

−4 −2 2 4

1

x

y

graficos com o pacote pgfplots Curvas em 3D

Exemplo Graficos 3D

\begin{tikzpicture}

\begin{axis}[domain=-3:3]

\addplot3[surf]{-y^2 + x^2};

\addplot3[surf]{x^2 + y^2)};

\end{axis}

\end{tikzpicture}

−20

2 −2

0

2

0

20

[email protected] MAT 172 - 2016/II 40 / 41

graficos com o pacote pgfplots Bibliotecas adicionais

Bibliotecas especiais

\usepgfplotslibrary{fillbetween}

\begin {axis}[smooth,no markers,axis lines=center,

xmin=-3.5,xmax=3.5,ymin=-3,ymax=4, xticklabels={},yticklabels={}]

\addplot [domain=-3:3] {-x^2+2};

\addplot [domain=-3:3]{x};

%

\addplot [name path=A, domain=-2:1] {x};

\addplot [name path=B, domain=-2:1] {-x^2+2};

\addplot [fill=magenta, fill opacity=0.4] fill between[of=B and A];

\end {axis}

\end {tikzpicture}

[email protected] MAT 172 - 2016/II 41 / 41