Mudanças entre as edições de "Ipython tutoria 2012"
(→Funções) |
(→Instalação do Ipython) |
||
(7 edições intermediárias de um usuário não apresentadas) | |||
Linha 1: | Linha 1: | ||
== Introdução == | == Introdução == | ||
− | Em abril de 2012, [[:en:Cleve_Moler|Cleve Moler]], recebeu o prêmio [http://www.computer.org/portal/web/awards/pioneer/ | + | Em abril de 2012, [[:en:Cleve_Moler|Cleve Moler]], recebeu o prêmio [http://www.computer.org/portal/web/awards/pioneer/ '''Pioneiros da Computação''' do IEEE]. Ele é o criador do programa [http://www.mathworks.com/products/matlab/ '''MATLAB'''], um ambiente de programação numérica que revolucionou a idéia de programação e simulação, principalmente nas áreas aplicadas de engenharia, biologia e economia. O programa é um produto comercializado pela empresa Mathworks que também é presidida por Cleve Moler, e o pacote completo do software é bastante caro! Existem algumas alternativas similares ao '''MATLAB''' com código aberto. Os mais populares são os programas [http://www.scilab.org/ '''SCILAB'''] e [http://www.octave.org/ '''OCTAVE''']. O objetivo deste texto é apresentar uma outra alternativa interessante que é um ambiente chamado [http://ipython.org/ '''Ipython''']. |
− | [http://www.python.org/ | + | [http://www.python.org/ Python] é uma linguagem de programação genérica de código livre. Uma das características desta linguagem é que possui um console que executa comandos assim que teclamos ENTER. Este console original do Python tem poucos recursos de edição. |
Por exemplo, não há histórico dos comandos já digitados. O Ipython é um console do Python enriquecido com muitos novos recursos de edição, além de naturalmente acoplar outros módulos científicos do Python (NumPy, Scipy, SymPy e Matplotlib), | Por exemplo, não há histórico dos comandos já digitados. O Ipython é um console do Python enriquecido com muitos novos recursos de edição, além de naturalmente acoplar outros módulos científicos do Python (NumPy, Scipy, SymPy e Matplotlib), | ||
o resultado é um ambiente muito parecido com o '''MATLAB''' (eventualmente mais lento para programas pesados), com a vantagem de dispor do desenvolvimento de Software Livre. Em particular estamos interessados em mostrar como a utilização deste | o resultado é um ambiente muito parecido com o '''MATLAB''' (eventualmente mais lento para programas pesados), com a vantagem de dispor do desenvolvimento de Software Livre. Em particular estamos interessados em mostrar como a utilização deste | ||
Linha 10: | Linha 10: | ||
Em todos os sistemas operacionais a instalação do Ipython depende da instalação do Python. A forma mais fácil é instalar como uma distribuição em pacote. No sistema operacional ''windows'', a forma mais fácil é instalar o | Em todos os sistemas operacionais a instalação do Ipython depende da instalação do Python. A forma mais fácil é instalar como uma distribuição em pacote. No sistema operacional ''windows'', a forma mais fácil é instalar o | ||
− | [http://www.pythonxy.com | + | [http://www.pythonxy.com Pythonxy]. Este pacote vem com um conjunto de aplicativos direcionados à computação científica, inclusive o Ipython. Não é a última versão, mas é uma forma de rápida instalação. |
Nos sistemas derivados do ''Debian linux'' também existem pacotes para o Ipython (Ipython, Ipython-Qt, Ipython-notebook, pode instalar todos!). | Nos sistemas derivados do ''Debian linux'' também existem pacotes para o Ipython (Ipython, Ipython-Qt, Ipython-notebook, pode instalar todos!). | ||
Linha 44: | Linha 44: | ||
Essa biblioteca é usada para construir gráficos em 2D (histogramas, funções em geral, espectros, entre outros). Veremos também como criar e plotar funções com textos em LaTeX nos gráficos. Os módulos básicos são os seguintes: | Essa biblioteca é usada para construir gráficos em 2D (histogramas, funções em geral, espectros, entre outros). Veremos também como criar e plotar funções com textos em LaTeX nos gráficos. Os módulos básicos são os seguintes: | ||
− | + | {{ Ipyin | n=1 | |
− | <syntaxhighlight enclose="none" lang="python" strict> | + | | |
− | import matplotlib.pyplot as | + | c=<syntaxhighlight enclose="none" lang="python" strict> |
+ | import matplotlib.pyplot as plt | ||
import numpy as np | import numpy as np | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | }} | ||
===== Plotar um conjunto de pontos qualquer ===== | ===== Plotar um conjunto de pontos qualquer ===== | ||
Linha 56: | Linha 58: | ||
Em python, nosso conjunto de pontos serão dados por arrays. Vamos chamá-los de x e y | Em python, nosso conjunto de pontos serão dados por arrays. Vamos chamá-los de x e y | ||
− | <syntaxhighlight enclose="none" lang="python" strict> | + | {{ Ipyin | n=2 |
+ | | | ||
+ | c=<syntaxhighlight enclose="none" lang="python" strict> | ||
x=np.array([1,2,3,3,7,6,7,8,9]) | x=np.array([1,2,3,3,7,6,7,8,9]) | ||
y=np.array([9,8,7,6,5,4,3,2,1]) | y=np.array([9,8,7,6,5,4,3,2,1]) | ||
plt.plot(x,y) # A ordem dos parâmetros é a mesma usada na matemática (abscissa, ordenada) | plt.plot(x,y) # A ordem dos parâmetros é a mesma usada na matemática (abscissa, ordenada) | ||
− | </syntaxhighlight> | + | </syntaxhighlight>}} |
+ | |||
+ | {{ Ipyout | n=2 | c=[<matplotlib.lines.Line2D at 0x4381ad0>]}} | ||
− | |||
− | |||
Linha 78: | Linha 82: | ||
exemplo usando ''def'': | exemplo usando ''def'': | ||
− | + | {{ Ipyin | n=3 | |
− | <syntaxhighlight lang="python"> | + | | c= |
+ | <syntaxhighlight enclose="none" lang="python"> | ||
def f(x): | def f(x): | ||
− | '''Calcula o valor de | + | '''Calcula o valor de x^2''' |
# docstring - Explica brevemente o que a função retorna | # docstring - Explica brevemente o que a função retorna | ||
return x*x | return x*x | ||
− | </syntaxhighlight> | + | </syntaxhighlight>}} |
Linha 90: | Linha 95: | ||
exemplo - lambda: | exemplo - lambda: | ||
− | < | + | {{ ipyin | n=4 | c= |
− | </ | + | <syntaxhighlight enclose="none" lang="python"> |
+ | g= lambda x : x**x # ** potência | ||
+ | </syntaxhighlight>}} | ||
− | + | <syntaxhighlight lang="python"> | |
− | < | + | help(f) |
− | </ | + | </syntaxhighlight> |
− | + | ||
<pre>Help on function f in module __main__: | <pre>Help on function f in module __main__: | ||
f(x) | f(x) | ||
− | Calcula o valor de | + | Calcula o valor de x^2</pre> |
===== Editar gráficos - Títulos / legendas / textos. ===== | ===== Editar gráficos - Títulos / legendas / textos. ===== | ||
Linha 111: | Linha 117: | ||
Vamos usar a função f(x), definida anteriormente, para aprender os próximos passos | Vamos usar a função f(x), definida anteriormente, para aprender os próximos passos | ||
− | < | + | {{ Ipyin | n=5 | c= |
− | + | <syntaxhighlight enclose="none" lang="python"> | |
+ | # Conjunto de pontos - Podemos criar intervalos com a função linspace() | ||
+ | t = linspace(-5,5,1000) # O intervalo [-5,5] foi dividido em 1000 pontos | ||
− | + | # Título - Atenção nos parâmetros para ajustar o texto(fonte e posição) | |
− | + | plt.title("f(x)",fontsize = 19,verticalalignment = "baseline",horizontalalignment ="center") | |
− | + | # Nome nos eixos - Podemos usar os mesmos parâmetros para ajustar os textos nos comandos abaixo</span> | |
− | + | plt.xlabel("X&",fontsize = 20) | |
− | + | plt.ylabel("Y&",fontsize = 20, rotation="horizontal") # Atenção no parâmetro para rotacionar o texto no eixo Y | |
− | + | # Para plotar texto em pontos específicos do gráfico usamos text(). | |
− | + | plt.text(2,4,"$f(2)", fontsize=14) # Atenção nas coordenadas! | |
− | + | # Tipo/cor/legenda - A cor e o tipo de linha podem ser alterados. Para ver todas as opções você pode usar o comando help(plot) | |
− | + | plt.plot(t,f(t),"g",label="f(x)") | |
− | + | legend(loc=4)# loc muda o local da legenda. Pode variar de 0 à 10 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | # Para plotar linhas nos eixos podemos usar grid() | ||
+ | grid() | ||
+ | # Alterar o tamanho dos eixos | ||
+ | axex=xlim(-10,10) | ||
+ | axey=ylim(0,50) | ||
+ | </syntaxhighlight>}} | ||
[[Image:WIKI___MATPLOTLIB_fig_01.png|frame|none]] | [[Image:WIKI___MATPLOTLIB_fig_01.png|frame|none]] | ||
Linha 143: | Linha 149: | ||
Para facilitar, usando o comando normal(), vamos criar um conjunto de elementos dristribuídos segundo a distribuição normal. | Para facilitar, usando o comando normal(), vamos criar um conjunto de elementos dristribuídos segundo a distribuição normal. | ||
− | + | {{ Ipyin | n=6 | c= | |
− | < | + | <syntaxhighlight enclose="none" lang="python"> |
− | + | n=normal(size=1000) | |
− | + | plt.hist(n) | |
− | + | plt.xlabel("Valor",fontsize=17) | |
− | + | plt.ylabel("Frequencia",fontsize=17) | |
− | + | plt.title("Histograma",fontsize=17) | |
− | </ | + | plt.show() |
− | + | </syntaxhighlight>}} | |
Linha 158: | Linha 164: | ||
Podemos alterar o números de intervalos de classe usando o parâmetro 'bins' | Podemos alterar o números de intervalos de classe usando o parâmetro 'bins' | ||
− | < | + | {{ Ipyin | n=6 | c= |
− | + | <syntaxhighlight enclose="none" lang="python"> | |
− | + | plt.hist(n,bins=20) | |
− | + | plt.xlabel("Valor&",fontsize=17) | |
− | + | plt.ylabel("Frequencia",fontsize=17) | |
− | </ | + | plt.title("Histograma",fontsize=17) |
− | + | plt.show() | |
+ | </syntaxhighlight>}} | ||
Linha 171: | Linha 178: | ||
Usando o parâmetro 'alpha' da função 'hist()' podemos sobrepor gráficos. Para exemplificar vamos usar a distribuição uniforme. | Usando o parâmetro 'alpha' da função 'hist()' podemos sobrepor gráficos. Para exemplificar vamos usar a distribuição uniforme. | ||
− | < | + | {{ Ipyin | n=7 |c= |
− | + | <syntaxhighlight enclose="none" lang="python"> | |
− | + | u=uniform(-2,2,size=1000) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | #Atenção nos parâmetros histtype e alpha. histtype altera o visual do gráfico | ||
+ | plt.hist(n,bins=20,histtype="stepfilled", color="g",label="normal") | ||
+ | plt.hist(u,bins=20,histtype="stepfilled",color="r",label="uniforme",alpha=0.5) # Plot com 50% de transparência | ||
+ | plt.title("Normal \ Uniforme",fontsize=17) | ||
+ | plt.xlabel("valor&",fontsize=17) | ||
+ | plt.ylabel("Frequencia",fontsize=17) | ||
+ | plt.legend() | ||
+ | plt.show() | ||
+ | </syntaxhighlight>}} | ||
[[Image:WIKI___MATPLOTLIB_fig_04.png|frame|none]] | [[Image:WIKI___MATPLOTLIB_fig_04.png|frame|none]] |
Edição atual tal como às 11h08min de 15 de fevereiro de 2013
Conteúdo[ocultar] |
[editar] Introdução
Em abril de 2012, Cleve Moler, recebeu o prêmio Pioneiros da Computação do IEEE. Ele é o criador do programa MATLAB, um ambiente de programação numérica que revolucionou a idéia de programação e simulação, principalmente nas áreas aplicadas de engenharia, biologia e economia. O programa é um produto comercializado pela empresa Mathworks que também é presidida por Cleve Moler, e o pacote completo do software é bastante caro! Existem algumas alternativas similares ao MATLAB com código aberto. Os mais populares são os programas SCILAB e OCTAVE. O objetivo deste texto é apresentar uma outra alternativa interessante que é um ambiente chamado Ipython.
Python é uma linguagem de programação genérica de código livre. Uma das características desta linguagem é que possui um console que executa comandos assim que teclamos ENTER. Este console original do Python tem poucos recursos de edição. Por exemplo, não há histórico dos comandos já digitados. O Ipython é um console do Python enriquecido com muitos novos recursos de edição, além de naturalmente acoplar outros módulos científicos do Python (NumPy, Scipy, SymPy e Matplotlib), o resultado é um ambiente muito parecido com o MATLAB (eventualmente mais lento para programas pesados), com a vantagem de dispor do desenvolvimento de Software Livre. Em particular estamos interessados em mostrar como a utilização deste software pode acompanhar o aprendizado de Cálculo Diferencial e Integral do primeiro ano. (P. A. Tonelli) 18h20min de 24 de julho de 2012 (BRT)
[editar] Instalação do Ipython
Em todos os sistemas operacionais a instalação do Ipython depende da instalação do Python. A forma mais fácil é instalar como uma distribuição em pacote. No sistema operacional windows, a forma mais fácil é instalar o Pythonxy. Este pacote vem com um conjunto de aplicativos direcionados à computação científica, inclusive o Ipython. Não é a última versão, mas é uma forma de rápida instalação.
Nos sistemas derivados do Debian linux também existem pacotes para o Ipython (Ipython, Ipython-Qt, Ipython-notebook, pode instalar todos!).
sudo apt-get install ipyhton ipython-qt ipython-notebook
[editar] Atualização dos programas
Quer você tenha instalado o Pythonxy, quer os pacotes das distribuições em Linux, é muito difícil que os programas Ipython e outros módulos usados pelo Ipython estejam atualizados. Vamos explicar como atualizar o pythonxy.
[editar] Atualização no Windows uma vez instalado o PyhtonXY
1. Na versão mais recente o PythonXY deve ter instalado um módulo chamado distribute. Abra o console do Windows e digite
pip install --upgrade spyder
Isto atualiza o editor Spyder
2. Instale o programa pyzmq deste site do pyzmq
3. Para a nova versão do Ipython digite no console do windows
pip install --upgrade ipython[zmq,qtconsole,notebook,test]
4. Tornado para o notebook
pip install tornado
5. Será bom atualizar também o matplotlib e scipy
pip install --upgrade matplotlib pip install --upgrade scipy
Com isto você terá o seu ambiente de programação. E pode começar a testá-lo digitando no console
ipython notebook --pylab inline
[editar] Usando a Biblioteca Matplotlib
[editar] Matplotlib
Essa biblioteca é usada para construir gráficos em 2D (histogramas, funções em geral, espectros, entre outros). Veremos também como criar e plotar funções com textos em LaTeX nos gráficos. Os módulos básicos são os seguintes:
In[1]: | import matplotlib.pyplot as plt import numpy as np |
[editar] Plotar um conjunto de pontos qualquer
Supondo dois conjunto de pontos com a mesma quantidade de elementos. Podemos estabelecer uma relação entre eles construindo um gráfico em um plano cartesiano.
Em python, nosso conjunto de pontos serão dados por arrays. Vamos chamá-los de x e y
In[2]: | x=np.array([1,2,3,3,7,6,7,8,9]) y=np.array([9,8,7,6,5,4,3,2,1]) |
Out[2]: | [<matplotlib.lines.Line2D at 0x4381ad0>] |
Antes de editar o gráfico vamos aprender a definir funções.
[editar] Funções
Há duas formas de definir uma função:
- comando def
- comando lambda
exemplo usando def:
In[3]: | def f(x): '''Calcula o valor de x^2''' |
exemplo - lambda:
In[4]: | g= lambda x : x**x # ** potência |
help(f)
Help on function f in module __main__: f(x) Calcula o valor de x^2
[editar] Editar gráficos - Títulos / legendas / textos.
Podemos atribuir nomes para o gráfico, ordenada / abscissa ou um ponto qualquer. O LaTeX pode ser usado para os textos.
Vamos usar a função f(x), definida anteriormente, para aprender os próximos passos
In[5]: | # Conjunto de pontos - Podemos criar intervalos com a função linspace() t = linspace(-5,5,1000) # O intervalo [-5,5] foi dividido em 1000 pontos |
[editar] Histograma
Para facilitar, usando o comando normal(), vamos criar um conjunto de elementos dristribuídos segundo a distribuição normal.
In[6]: | n=normal(size=1000) plt.hist(n) |
Podemos alterar o números de intervalos de classe usando o parâmetro 'bins'
In[6]: | plt.hist(n,bins=20) plt.xlabel("Valor&",fontsize=17) |
Usando o parâmetro 'alpha' da função 'hist()' podemos sobrepor gráficos. Para exemplificar vamos usar a distribuição uniforme.
In[7]: | u=uniform(-2,2,size=1000)
|