SharedSECITEC-2019-PARTE-1-EXE.ipynbOpen in CoCalc
Author: João Marcello Pereira
Views : 32
License: MIT License
Description: SECITEC-2019-PARTE-1-EXE

SECITEC - 2019 - PARTE I

A Semana da Ciência e Tecnologia – SECITEC é o evento anual científico oficial do Campus Luzerna do Instituto Federal Catarinense, realizada a partir de 2012 como plataforma para divulgação da produção científica de seus alunos e professores.

Carga Horária: 4h

Prof João Marcello Pereira ([email protected])

Link para a parte II : https://share.cocalc.com/share/288b42254a96ffdde0f1a05c9a87e715f5d893b3/SECITEC-2019-PARTE-2-EXE.ipynb?viewer=share

Link para a parte III: https://share.cocalc.com/share/c36feb3553f76b64163a3d568ce5cd9c2081ed71/SECITEC-2019-PARTE-3-EXE.ipynb?viewer=share

INTRODUÇÃO

O CoCalc ("Collaborative Calculation in the cloud") é um sofisticado ambiente on-line colaborativo para cálculo matemático, estatística e ciência de dados, autoria de documentos e computação de propósito geral de código fonte aberto, executado sobre o sistema operacional Ubuntu 18.04.3 LTS e liberado sob a licença GNU Affero General Public License versão 3+. Foi criado em maio de 2017 pelo professor de matemática da Universidade de Washington, William Stein, como uma remodelagem do projeto SageMath Cloud (Versão Web do SageMath para desktop) lançado em abril de 2013. O SageMath é um software matemático livre e de código aberto (open source), desenvolvido sob a licença GPL por uma comunidade de programadores e matemáticos. De acordo com os seus desenvolvedores, o objetivos do SageMath é ser uma alternativa aos principais sistemas proprietários de software matemático como o Magma ® , Maple ® , Mathematica ® e Matlab ® (THE SAGE GROUP, 2017), compatível com Windows ® , MacOS ® e Linux. Entre as características do CoCalc, podemos destacar:

  • Interface gráfica compatível com vários navegadores.
  • Interpretador de comandos baseado no IPython.
  • Computação paralela, usando processadores multinúcleo, multiprocessamento simétrico e computação distribuída.
  • Cálculo simbólico com Maxima e SymPy.
  • Álgebra linear numérica, utilizando GNU Scientific Library, SciPy, NumPy e Julia.
  • Bibliotecas de funções elementares e especiais.
  • Gráficos 2D e 3D de funções simbólicas e dados numéricos.
  • Manipulação de matrizes, incluindo matrizes esparsas.
  • Bibliotecas de estatísticas multivariáveis, usando R e SciPy.
  • Ferramentas para o processamento de imagens, usando Pylab e Python.
  • Bibliotecas para funções de teoria dos números.
  • Filtros para importação e exportação de dados, imagens, vídeo, áudio, CAD e GIS.
  • Suporte para números complexos, aritmética de precisão arbitrária e matemática simbólica.
  • MoinMoin para gerar conteúdo do tipo Wiki.
  • Criação de documentação (Sphinx).
  • Interface para alguns softwares proprietários, como o Mathematica, Magma e Maple.
  • Compartilhamento de projetos e construção de salas de aulas virtuais.

A cronologia do projeto é visualizada na figura abaixo:

COMANDOS BÁSICOS E MATEMÁTICA BÁSICA

COMO USAR OS COMANDOS DO COCALC

Os comandos da linguagem CoCalc são muito parecidos com os comandos do MatLab/Python, porém, não há a necessidade de terminar um comando com o " ; ". Vejamos alguns pontos interessantes:

  • Ponto e virgula ao final do comando oculta o resultado;
  • Comentários são iniciados com #
  • CoCalc é "Case-Sensitive" F e f são diferentes;
  • Não é necessário digitar todo o comando/função, basta digitar uma parte da comando/função e teclar TAB para completar.
  • TAB também mostra outros comandos/Funções associados ao objeto, basta utilizar "OBJETO.<TAB>"
  • Textos em Latex podem ser inseridos em células do tipo "Code" do Jupyter na forma $Latex$
  • Sempre verifique o status da CPU e memória do projeto. Caso ultrapasse o limite do projeto ou apresente instabilidade, execute um reload da página ou restart kernel.

Comandos preliminares

In [1]:
# informações sobre a versão e lançamento do kernel
In [2]:
# Ajuda (?função ou função?)

Matemática Básica

Operação Matemática

Sintaxe CoCalc

Exemplo

Resultado

Valor Absoluto de xx

abs( x )

abs( -2 )

2

Raiz quadrada x x

sqrt( x )

sqrt(225)

15

Raíz de xx ordem nn

x**( 1/n ) ou x^( 1/n )

8^( 1/ 3 )

2

Exponencial na Base ee

exp( x )

exp( 2 )

e^2

Logaritmo Natural de xx

ln( x )

ln( e )

1

Logaritmo de xx na Base bb

log( x , b )

log( 1024,2 )

10

Seno de x sin( x ) sin( pi ) 1
Cosseno de x cos( x ) cos( pi/2 ) 0
Tangente de x tan( x ) tan( 3*pi/4 ) -1
Secante de x sec( x ) sec( pi/3 ) 2
Cosecante de x csc( x ) csc( pi/3 ) 2/3*sqrt(3)
Cotangente cot ( x ) cot( pi/3 ) 1/3*sqrt(3)

Coeficiente Binomial de nn sobre rr

binomial( n, r )

binomial( 5, 2 )

10

Fatorial de nn

factorial( n )

factorial( 5 )

120

Fatoração de primo de nn

factor( n )

factor( 12 )

2^2*3

MDC de aa e bb

gcd( a, b)

gcd( 12, 16 )

4

Valor Máximo

max( x,y,z w,... )

max( 1, 2.7, 4.8 )

4.8

Valor Mínimo

min( x,y,z w,... )

min( 1, 2.7, 4.8 )

2.7

Menor Inteiro maior ou igual a xx

ceil( x )

ceil( 1.4 )

2

Maior Inteiro menor ou igual a xx

floor( x )

floor( pi )

3

Inteiro mais próximo ou igual a xx

round( x )

round( 2.8456 )

3

Parte inteira xx

int( x )

Int ( 2.8456 )

2

Número aleatório maior ou igual a zero e menor que 1

random()

random()

0.7311469958220904

Número inteiro aleatório em [a,b][a,b]

randint( a , b )

randint(1, 100 )

46

In [2]:
# matematica simples (adicao, muliplicacao, divisao , potenciacao, radiciação)
In [4]:
# potencia de 10
In [20]:
# exponencial e^3 ou exp(valor)

Cálculo trigonometrico/Hiperbólico

sin(x) cos(x) tan(x) cot(x) sec(x) csc(x)

sinh(x) cosh(x) tanh(x) coth(x) sech(x) csch(x)

asin(x) acos(x) atan(x) acot(x) asec(x) acsc(x) acoth(x) asech(x) acsch(x)

In [11]:
# radiandos

Cálculo Logaritmo

In [13]:
# Função exponencial natural em x: exp(numero)
In [12]:
# log(numero, base)

Memória Células

In [21]:
# Qual dado de entrada da 5ª Célula?
In [22]:
# Qual dado de saída da 5ª Célula?

Cálculo anteior

In [23]:
# Expressão qualquer
In [24]:
# Calculo anterior
In [25]:
# Calculo anterior numerico

Calcular o tempo de processamento

In [36]:
# %%time
CPU times: user 363 µs, sys: 147 µs, total: 510 µs Wall time: 524 µs
cos(1039310179/9611549558988931977402972006733118233457885181321774828331130270396124388317449020948457323014736175537109375) + 4*log(10)
In [37]:
# %%timeit
The slowest run took 9.02 times longer than the fastest. This could mean that an intermediate result is being cached. 10000 loops, best of 3: 53.3 µs per loop

Precisão Numérica

In [33]:
# divisão 1.9/6 1.9/6
0.316666666666667
In [37]:
# Precisão numérica algarismos significativos
In [39]:
# Fixar Notação científica para todos os resultados RR.scientific_notation(True)
In [ ]:
In [55]:
# Fixar Precisão Numérica por número de bits (padrão = 53) e notação científica para todos os resultados RealNumber = RealField(90, sci_not = True)
In [ ]:

Comandos de impressão

In [57]:
# print
In [78]:
# display
In [79]:
# show

latex

(a1+a2+...+an) \sum{(a_1 + a_2 + ...+a_n)}

In [80]:
# expressão para latex

cole o texto aqui

In [13]:
%display latex
In [ ]:
In [14]:
# Input num = input("escolha um valor de 0 a 10") print('quadrado =', num^2)
escolha um valor de 0 a 10
('quadrado =', 25)

Variáveis

O Python é uma linguagem de tipagem dinâmica, dessa form uma variável possui um valor associado enquanto durar o processamento e pode variar em tempo e execução. Para associar o valor a uma variável, basta utilizar "=". Para eliminar o valor de uma variável, use reset() para todas as variáveis ou reset('var1, var2...') para variáveis específicas.

In [81]:
# Definir as variáveis x(inteiro), y(real) e z(racional)
In [82]:
# imprimir as variáveis
In [83]:
# Verificar o tipo de x
In [ ]:
# Verificar o tipo z
In [84]:
# Resetar variável y
In [ ]:
In [12]:
# Resetar todas as variaveis
In [85]:
# variável simbólica w
In [86]:
# Expressão

Strings

Strings são seqüências de caracteres, sejam eles letras, números, espaços, caracteres especiais, e etc., e assim como os tipos numéricos vistos anteriormente, strings também são imutáveis. Strings podem ser delimitadas por aspas simples, duplas ou triplas.

s t r i n g

0 1 2 3 4 5

In [93]:
# definir string secitec 2019
In [97]:
# imprimir os caracteres da posição 0 a 5
In [96]:
# imprimir os caracteres da posição 5 até o fim

Listas

Uma lista é uma coleção de elementos.

[Elemento 1, Elemento 2, Elemento 3, Elemento 4, Elemento 5, ..., Elemento n]

        0        ,        1        ,        2        ,        3        ,        4        ,...,     n~~~~~~~~0~~~~~~~~,~~~~~~~~1~~~~~~~~,~~~~~~~~2~~~~~~~~,~~~~~~~~3~~~~~~~~,~~~~~~~~4~~~~~~~~,...,~~~~~n

In [98]:
# criar listas l1 e l2
In [99]:
# Comprimento lista
In [29]:
# Adicionar elemento final lista
In [30]:
# Alterando um elemento
In [31]:
# adiciona mais de um elemento ao final da lista
In [32]:
# retirando elemento do final da lista
In [33]:
# inserir um elemento em uma posição específica
In [34]:
# retirar elemento específico.
In [35]:
# valor máximo da lista
In [ ]:
# valor mínimo
In [ ]:
# formar pares
In [ ]:
# fatiamento de listas
In [ ]:
# fatiamento de listas
In [ ]:
# fatiamento de listas

Sequencias

Uma sequencia é uma lista na forma sequencial na forma de numeros inteiros ou decimais (ponto flutuante) dada pelo comando range. Os comandos vistos (append, remove, ...) também valem para range

In [ ]:
# Range inteiro de 10 elementos inteiros
In [ ]:
# Range de 0 a 10, tomados 2 a 2
In [ ]:
# Range de 50 a 0, tomados de 10 a 10
In [ ]:
# Range do tipo sequencia formada por numeros Decimais (ponto flutuante) de 0 a 1, tomados de 0.25

Lista aninhada. Formatação da lista como matriz

Lista = [ a1, a2, a3, ... , an] sendo a1, a2, a3, ... , an elementos únicos ou outra lista, matriz, etc.

In [26]:
# lista aninhadas l1 = [[4,5], (8,9), 6] l1[1,0]
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-26-3b6a7dc6f3dd> in <module>() 2 3 l1 = [[Integer(4),Integer(5)], (Integer(8),Integer(9)), Integer(6)] ----> 4 l1[Integer(1),Integer(0)] TypeError: list indices must be integers, not tuple

Vetores

In [100]:
# Criando um vetor 2d v2d1 e v2d2
In [101]:
# Gráfico v2d1
In [102]:
# Gráfico v2d1, v2d2 e resultante
In [103]:
# Criando vetores 3d v3d1 e v3d2
In [104]:
# Gráfico v3d1
In [105]:
# Gráfico v2d1, v2d2 e resultante
In [ ]:

Matrizes

In [4]:
# Definir as matrizes M1 e M2
In [ ]:
# Imprimir as matrizes M1 e M2
In [107]:
# Gráfico M1
In [109]:
# subtração de matrizes
In [110]:
# produto entre matrizes
In [118]:
# forma escalonada por linha (row echelon) reduzida
In [117]:
# decomposição LU

FIM