| Hosted by CoCalc | Download
Kernel: SageMath 8.8

SECITEC - 2019 - PARTE II

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 I : https://share.cocalc.com/share/9110c074abc3ba6f36ef922980eaf978580ee422/SECITEC-2019-PARTE-1-EXE.ipynb?viewer=share

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

PROGRAMAÇÃO BÁSICA

A estrutura de programação do CoCalc é baseada em Python, com algumas diferenças quanto à sintaxe de alguns comandos.

ESTRUTURA DE DECISÃO

Condicional "SE" (IF)

%display latex
# números aleatorios x e y import pygame
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-1-6c9c8726329e> in <module>() 1 # números aleatorios x e y 2 ----> 3 import pygame ImportError: No module named pygame
# se x < y imprima "x menor que y", se x > y nada será feito
# se x < y imprima "x menor que y", senão imprima "x maior que y"

Codifique a função definida como: f(x) = ParseError: KaTeX parse error: Expected 'EOF', got '&' at position 53: … 1 &; ~\text{x &̲lt; 0}. \end{ca…

Drag Racing

# se x < y imprima "x menor que y", senão se x > y imprima "x maior que y", senão imprima "x igual a y"

ESTRURA DE REPETIÇÃO

Repetição "PARA" (FOR)

# Aplicar um vetor à expressão (x^2 - 2) em um laço FOR
%%time # Método bruto de encontrar raízes de uma função sem otimização k = srange(0, 5, 0.00001) for x in k: if abs(sin(x)*x + 1 ) < 0.0001: show("Valor(y):", sin(x)*x + 1 ," . Raiz(x): ", x) print('fim')
fim CPU times: user 6.31 s, sys: 61.7 ms, total: 6.37 s Wall time: 7.04 s

Repetição "ENQUANTO" (WHILE)

# Enquanto a variável a for menor que 10 print a + 1

FUNÇÃO

Função, de acordo com a definição matemática, é uma correspondência unívoca entre dois conjuntos em que a cada elemento do primeiro conjunto corresponde a um e somente um elemento do segundo. Dessa forma, temos que uma função é uma relação entre das variáveis, sendo uma dependente e outra independente. Ex: y(x)=x+2,z=xy2x,f(x)=x2+y2y(x) = x + 2, z = xy - 2x, f(x) = x^2 + y^2.

Para definir uma nova função no CoCalc de duas maneiras:

  • forma reduzida - utilizada de forma semelhante a definição matemática de função. função_nome(argumento) = código.

  • def - use o comando def e dois pontos após a lista de nomes das variáveis. Em Python, blocos de código não são indicados por colchetes ou blocos de início e fim, como em outras linguagens. Em vez disso, blocos de código são indicados por identação, que devem estar alinhadas exatamente.

# Função cálculo área do circulo
# Calculo da área para r = 5
# Calculo da área para r = 5 numérico
# Função área do circulo simplificada
# Calculo da área para r = 5
# Calculo da área para r = 5 numérico

GRÁFICOS 2D E 3D

# resetar variáveis
# dados x_dados = [0.0, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0] y_dados = [0.0, 0.5, 0.84, 1.0, 0.91, 0.6, 0.14, -0.35, -0.76, -0.98] len(x_dados) == len(y_dados)
True
# montar os pares ordenados
# gráfico pontos discretos
# gráfico espalhamento
# gráfico melhorado com axes_labels = ['x','y'], gridlines = "minor", figsize = (5, 4)
# Funções f1(x) = sin(x)*x e f2(x) = cos(x)
# Gráfico funções f1 e f2
# Gráfico funções f1 e f2 com preenchimento
# Gráfico funções f1 e f2 com pontos em destaque
# Gráficos múltiplos sobrepostos plot(y1, (x, -2, 2), legend_label = 'y1(x)', axes_labels = ['x','y'], color = 'red', gridlines = 'minor', figsize = (8, 6)) + plot(y2, (x, -2, 2), legend_label = 'y2(x)', thickness = 0.2, plot_points = 20, color = 'blue', marker = '*', markersize = 7) plot1 = plot(y1, (x, -2, 2), legend_label = 'y1(x)', axes_labels = ['x','y'], color = 'red') plot2 = plot(y2, (x, -2, 2), legend_label = 'y2(x)', axes_labels = ['x','y'], thickness = 0.2, plot_points = 20, color = 'blue', marker = '*', markersize = 7) # Gráfico matriz 2 linhas x 1 coluna show(graphics_array([plot1, plot2], 2, 1), gridlines = 'minor') # Gráfico matriz 1 linha x 2 colunas show(graphics_array([plot1, plot2], 1, 2), gridlines = 'minor')
# Gráfico 3d f(x, y) = cos(y^2 + x^2)*x^2 + sin(x^2) com color = 'green', mesh = True, aspect_ratio = 1, spin = 30

RAÍZES

De acordo com o dicionario matemático disponível em "http://www.somatematica.com.br/dicionarioMatematico" temos que:

Equação: Expressão algébrica indicada por uma igualdade, onde há valores desconhecidos expressos por letras (incógnitas). Logo, todo conjunto de expressões no qual há uma igualdade cuja(s) incógita(s) satisfaçam a um conjunto limitado de soluções, então temos uma equação. Ex: x+2=0,xy2x=2,x2+y2=22x + 2 =0, xy - 2x = 2, x^2 + y^2 = 2^2.

# Função f4(x) x^2 - 2*x - 3
# gráfico da função f4(x) com axes_labels = ['x','y'], color = "red", gridlines = "minor", figsize = (4, 3)
# resolvendo f4(x) = 0
# somente a segunda raiz
# Gráfico de f5(x) = x^2 - 3*x + cos(4*x) com axes_labels = ['x','y'], color = "red", gridlines = "minor", figsize = (4, 3)
# raízes de f5(x)
# método numérico para f5
# mínimo local
# máximo local
# resetar variáveis
# Sistemas de Equações Lineares eq1(x) = 2*x+3*y-6 eq2(x) = 3*x-4*y-12
# Gráfico implícito de eq1 e eq2 com axes_labels = ['x','y'] e gridlines = 'minor'
# Solução do sistema

Sistemas Equações Não Lineares

# definir eq3(x, y) = y^2 + 8*x e eq4(x, y) = -x^2 -8*y -2
# Gráfico implícito com color = 'red', axes_labels = ['x','y'] e gridlines = 'minor'
# Solução solnl
# solução de y do primeiro conjunto solução
# somente a parte numérica de y

INTERPOLAÇÃO

Os resultados de medições experimentais ou simulações numéricas fornecem, em geral,um conjunto de valores de uma função em pontos discretos de uma variável independente. Esses valores podem ser apresentados naforma de uma tabela para valores discretos de 𝑥. O processo de calcular a função para valores intermédios aos valores conhecidos de 𝑓(𝑥)é chamado interpolação (MIRANDA, 2018). Tipos de interpolação:

  • Interpolação linear (padrão da funçao interp1d)

  • Interpolação polinomial

  • Interpolação trigonométrica

  • Spline

Gráfico interpolação linear:

# Dados x_dados = [0.0, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0] y_dados = [0.0, 0.5, 0.84, 1.0, 0.91, 0.6, 0.14, -0.35, -0.76, -0.98]
# gráfico com axes_labels = ['x','y'], gridlines = 'minor', figsize = (5, 4)
# Importar a função interp1d do scipy.interpolate
# fint recebe interp1d(x_dados, y_dados)
# testar a função
# gráfico pontos + gráfico fint

AJUSTE DE CURVAS

Ajuste de Curvas é um método que consiste em encontrar uma curva que se ajuste a uma série de pontos e que possivelmente cumpra uma série de parâmetros adicionais. Ajuste de curvas pode envolver tanto interpolação, onde é necessário um ajuste exato aos dados, quanto suavização, na qual é construída uma função "suave" que se aproximadamente se ajusta aos dados. Outro assunto relacionado é análise de regressão, a qual se foca mais em questões da inferência estatística (Wikipedia, 2019).

# Importar CSV e pandas
# importar dados_reta.csv para variável dados
# visualizar dados
# Gráfico dos dados com axes_labels = ['x','y'], gridlines = 'minor', figsize = (5, 4)
# Definir variáveis simbólicas a e b
# função modelo_reta 'ax + b'
# coeficientes coef recebe os dados da função find_fit(dados_pontos, modelo, [ai, bi], solution_dict = True)
#imprimir coef 'a'
# substituir coef no modelo reta
# Gráfico pontos e modelo reta

FIM