AULA 3. Estruturas de controlo e Organização do Código. Determinação da constante de Planck por mínimos quadrados. Laboratório Numérico 1

Documentos relacionados
AULA 4. Estruturas e controlo: for, if, while, def. Somatórios. Funções python. Mais sobre regressão linear Laboratório Numérico 1

Interpolação. Série 1D. Interpolação polynomial, Interpolação por troços: linear, splines. Sensibilidade à amostra. Geração de amostras aleatórias.

AULA 7. Raízes de equações não lineares. Equilíbrio térmico de um painel solar. Método da bisseção Laboratório Numérico 1

AULA 5. Raízes de equações não lineares. Equilíbrio térmico de um painel solar. Método da bisseção. Laboratório Numérico 1

Modelação Numérica 2017 Aula 17, 26/Abr

AULA 6. Input/output de dados ascii. Interpolação 2D. griddata Laboratório Numérico 1

Física Geral - Laboratório. Aula 8: Estimativas e erros em medidas indiretas: Ajuste de funções

Aula 11 E 2 E S E 3 E 1. Resolução de sistemas de equações lineares Laboratório Numérico 1. (1-a) 3 E 0. (1-a) 2 E 1 (1-a)E 2 a(1-a)e 1 ae 2

Integração numérica. Prof. Luiz T. F. Eleno. Departamento de Engenharia de Materiais Escola de Engenharia de Lorena Universidade de São Paulo

Computação 1 - Python Aula 12 - Teórica. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 22

Laboratório Numérico (em python)

EFEITO FOTO-ELÉCTRICO DETERMINAÇÃO DA CONSTANTE DE PLANCK

Estatística Aplicada ao Serviço Social

Aula 6. Resolução de sistemas de equações lineares: Método de Gauss. Input/output. Laboratório Numérico 1

Programação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP

Processamento da Informação Teoria. Recursividade

1º Laboratório Informação Geral

Aula 19. Campo elétrico de uma distribuição estacionária de cargas: equação de Poisson Laboratório Numérico 1

Determinação da constante de Planck: o efeito fotoeléctrico

EFEITO FOTOELÉCTRICO

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Física Geral - Laboratório. Estimativas e erros em medidas indiretas: Ajuste de funções

Termodinâmica e Estrutura da Matéria

DCC008 - Cálculo Numérico

Introdução à Programação em C Input / Output

Capítulo 3 - Mínimos Quadrados Lineares

Nesta aula... Parâmetros opcionais Atribuição abreviada Instruções break e continue Interrupção da execução. 1 Estudo desta disciplina.

Modelação Numérica 2017 Aula 6, 7/Mar

Capítulo 3 - Mínimos Quadrados Lineares

APROXIMAÇÃO DE FUNÇÕES MÉTODO DOS MÍNIMOS QUADRADOS

Introdução ao Python. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Aula 15. Equações diferenciais com condições fronteira num ponto: O pêndulo gravítico. Laboratório Numérico 1

O efeito fotoeléctrico

Aula 03 Introdução à Programação com a Linguagem Python

Módulo 4 Ajuste de Curvas

Observamos no gráfico acima que não passa uma reta por todos os pontos. Com base nisso, podemos fazer as seguintes perguntas:

Modelação Numérica 2017 Aula 5, 1/Mar

Escrita correta de resultados em notação

( f a ) 2 +16π 2 λ 2 2

13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica

Aula 2 Regressão e Correlação Linear

Introdução à Programação em C

Introdução à Programação em C (II)

Projeto de funções e instruções condicionais

Método dos Mínimos Quadrados

Programação I Aula 7 Resolução numérica de equações

Equações Diferenciais Problemas de Valor Inicial. Computação 2º Semestre 2016/2017

1 Definição de funções 1. 2 Valores boleanos e condicionais 5. Podemos depois usar as novas funções tal qual as pré-definidas

Aula IV. Representação gráfica e regressão linear. Prof. Paulo Vitor de Morais

Capítulo 4 Séries de Fourier

Aula 18. Equações diferenciais com condições fronteira num ponto: O pêndulo gravítico Laboratório Numérico 1

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

Modelação Numérica 2017 Aula 9, 15/Mar

Introdução à Programação / Programação I

Programação de Computadores

Programação I Aula 3 Primeiros programas

Métodos Numéricos Interpolação / Aproximação. Renato S. Silva, Regina C. Almeida

PUC-GOIÁS - Departamento de Computação

Aula 13. Séries undimensionais. Laboratório Numérico 1. Várias amostras da temperatura

Objetivo: Determinar a eficiência de um transformador didático. 1. Procedimento Experimental e Materiais Utilizados

Capítulo 4 - Equações Não-Lineares

Introdução à Programação / Programação I

MAT 0143 : Cálculo para Ciências Biológicas

Introdução à Programação Aula 3 Primeiros programas

Modelação Numérica 2017 Aula 18, 2/Maio

Física Geral (2012/2) Aula 9: Estimativas e erros em medidas indiretas: Ajuste de funções

Física Geral - Laboratório. Estimativas e erros em medidas indiretas: Ajuste de funções

Lucas Santana da Cunha de julho de 2018 Londrina

DOSAGEM DE CONCRETO EQUAÇÕES DAS LEI FUNDAMENTAIS DOS CONCRETOS. Professora: Mayara Custódio

Teoria da ligação química

Processo de Linearização de Gráficos

Informática para Ciências e Engenharias 2014/15. Teórica 7

REGRESSÃO E CORRELAÇÃO

ACH5531 Introdução à Computação

Sistemas Lineares. Marina Andretta/Franklina Toledo ICMC-USP. 4 de março de 2015

Programação I Aula 19 Aritmética com racionais Pedro Vasconcelos DCC/FCUP

Séries Temporais e Modelos Dinâmicos. Econometria. Marcelo C. Medeiros. Aula 12

Método de Quadrados Mínimos: Caso discreto

Processamento da Informação Teoria. Listas e Matrizes

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Prof. Dr. Lucas Barboza Sarno da Silva

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

Projeto A. Laboratório Numérico 2019

4 e 6/Maio/2016 Aulas 17 e 18

Introdução à Programação Aula 18 Método de eliminação de Gauss

Física IV. Aula 1. Baseado no material preparado por Sandro Fonseca Helena Malbouisson Clemencia Mora

Análise de Regressão Prof. MSc. Danilo Scorzoni Ré FMU Estatística Aplicada

Aula 19. Equações diferenciais independentes do tempo: problemas de condições fronteira (espacial) Laboratório Numérico 1

ANÁLISE DE REGRESSÃO

Física IV. Prática 1 Helena Brandão Malbouisson, sala 3018A slides (modificados) do prof. Sandro Fonseca de Souza

4 de outubro de MAT140 - Cálculo I - Método de integração: Frações Parciais

Introdução à Programação / Programação I

Processamento da Informação

1) Dê a fórmula da integral de no intervalo via método de Simpson.

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

AmigoPai. Matemática. Exercícios de Equação de 2 Grau

Caros Alunos, segue a resolução das questões de Estatística aplicadas na prova para o cargo de Auditor Fiscal da Receita Municipal de Teresina.

Prof. Dr. Lucas Barboza Sarno da Silva

PRÁTICA CONSTRUÇÃO DE GRÁFICOS E DETERMINAÇÃO DOS COEFICIENTES ANGULAR E LINEAR PELO MÉTODO GRÁFICO MMQ 4.

Transcrição:

AULA 3 Estruturas de controlo e Organização do Código. Determinação da constante de Planck por mínimos quadrados. Laboratório Numérico 1

Modularização do código PYTHON O código deve ser legível, comentado e reutilizável. Existem diversas estruturas básicas que ajudam: Funções (internas ao script, ou importadas) Estruturas de controlo if ; elif; else for while Laboratório Numérico 2

funções def func(x1,x2,x3): #input xsum=x1+x2+x3 xx=x1*x2*x3 return xsum,xx #output Soma,SS=func(1,2,4) print(soma,ss) >>7 8 Laboratório Numérico 3

Estrutura de execução condicional if if x==7: s=7 elif x>0: s=math.sqrt(x) elif x!=-10: s=math.sqrt(abs(x)) else: s=0 Laboratório Numérico 4

Ciclo com contador (iterador) for X=[0,1,2,3,4,5] #len(x)==6 S=0 for k in range(len(x)): S=S+X[k] #range(len(x))==[0,1,2,3,4,5] SS=0 for x in X: SS=SS+x Laboratório Numérico 5

Ciclo com condição while X=[0,1,2,3,4,5] k=0 S=0 while k<len(x): #len(x)==6 S=S+X[k] k=k+1 Laboratório Numérico 6

Problema Determinação experimental da constante de Planck E = h Experiência: Calcular o potencial de paragem de uma célula fotoeléctrica em função da frequência da radiação incidente: Energia do electrão = Energia do fotão Energia de arranque ev p = h W 2 incógnitas (h,w). Precisamos de 2 equações (2 medidas de e V p ). Mas é conveniente ter muitas medidas para controlar o erro experimental. Laboratório Numérico 7

Dados experimentais efeito fotoelétrico Comprimento de onda (nm) Frequência (10 12 Hz) VP (V) 400 749 1 414 724 0.99 429 699 0.89 444 674 0.79 462 649 0.68 480 624 0.57 500 599 0.47 522 574 0.37 545 549 0.28 571 524 0.17 600 499 0.07 ev p = h W Laboratório Numérico 8

Discussão (ev p = h W ) y = ax + b Com 1 medida o problema é subdeterminado: não é possível calcular h Com 2 medidas o problema tem solução única. No entanto, se as medidas não forem exactas os valores obtidos têm erro desconhecido Com mais de duas medidas temos um problema sobredeterminado: Nº equações > Nº incógnitas. Qualquer solução implica um erro. A solução que corresponde ao menor erro médio quadrático é interessante Laboratório Numérico 9

N medidas (x k,y k )(k=1,2,,n) Erro médio quadrático (função de (a,b)) N e 2 = 1 N y k ax k + b 2 k=1 Erro mínimo: a e2 = b e2 = 0 a = σ x ky k 1 N σ x k σ y k σ x k 2 1 N σ x k 2 b = 1 N y k a x k Laboratório Numérico 10

O que precisamos de fazer Definir variáveis com N valores (medidas experimentais) vectores Digitando os valores ou Lendo um ficheiro de dados Calcular somatórios Calcular os coeficientes Representar graficamente o resultado (pontos experimentais e curva de ajuste) Estimar o erro? Laboratório Numérico 11

Código(1/2) import numpy as np import matplotlib.pyplot as plt nu=1e12*np.array(749,724,699,674,649,624,599,574,549,524,499,dtype =float) Vp=np.array(1,0.99,0.89,0.79,0.68,0.57,0.47,0.37,0.2 8,0.17,0.07) e=1.609e-19 evp=e*vp Sxx=0;Sxy=0;N=len(nu) for k in range(n): Sxy=Sxy+nu[k]*eVp[k] Sxx=Sxx+nu[k]*nu[k] Sx=np.sum(nu) Sy=np.sum(eVp) Laboratório Numérico 12

Código (2/2) a=(sxy-sx*sy/n)/(sxx-sx**2/n) b=(sy-a*sx)/n h=a W=-b plt.scatter(nu,vp) fit=(h*nu-w)/e; plt.plot(nu,fit) plt.text(6.5e14,0.4,'h='+str(h)) plt.xlabel(r'$\nu$') plt.ylabel(r'$v_p$') plt.title('determinação da constante de Planck') print('h=',h) Laboratório Numérico 13

Resultado Laboratório Numérico 14

Estruturas de controlo: ciclo com contador for k in range(n): #k=0,1,,n-1 a=xk**2 X=1,10,100 for xx in X: a=xx**2 A linha inicial termina com : O fim da estrutura é definido por indentação Laboratório Numérico 15

Ciclo com contador vs operação vetorial np benchmark simples import numpy as np; import time N=10**6 x=np.ones((n),dtype=float) y=np.ones((n))*5 t0=time.perf_counter() Sxy=0 for k in range(len(x)): Sxy=Sxy+x[k]*y[k] t1=time.perf_counter() SSxy=np.sum(x*y) t2=time.perf_counter() Atenção: o tempo gasto é muito sensível ao valor de N print('ciclo=%10.7f npsum=%10.7f aceleração=%7.1f' % (t1- t0,t2-t1,(t1-t0)/(t2-t1))) >>ciclo= 0.6691751 npsum= 0.0048059 aceleração= 139.2 Laboratório Numérico 16

Leitura de um ficheiro ascii Dados=np.loadtxt('dados.dat ) nu=1.e12*dados[:,0] Vp=Dados[:,1] Dados.dat 7.49e+02 1.00e+00 7.24e+02 9.90e-01 6.99e+02 8.90e-01 6.74e+02 7.90e-01 6.49e+02 6.80e-01 6.24e+02 5.70e-01 5.99e+02 4.70e-01 5.74e+02 3.70e-01 5.49e+02 2.80e-01 5.24e+02 1.70e-01 4.99e+02 7.00e-02 Laboratório Numérico 17

De volta ao problema y = ax + b Vamos escrever uma função genérica para resolver o problema do ajuste de uma reta a um conjunto de dados por mínimos quadrados. Em relação à Aula 3, vamos acrescentar dois detalhes: A função considera os dois ajustes lineares: y = ax + b ou y = ax A função calcula uma medida da qualidade do ajuste linear, o coeficiente de correlação de Pearson Laboratório Numérico 18

Novos cálculos No caso y = ax, pode mostrar-se (exercício!) que a = σ x ky k σ x k x k Em ambos os casos, o coeficiente de correlação de Pearson é: r = σ x k y k 1 N σ x k σ y k σ x k 2 1 N σ x k 2 σ y 2 1 N σ y k 2 Precisamos de calcular todos os somatórios. Laboratório Numérico 19

Função linreg (sem ciclos for) import numpy as np #executar antes de chamar linreg def linreg(x,y,origin): n=len(x) sx=np.sum(x) sy=np.sum(y) sx2=np.sum(x*x) sy2=np.sum(y*y) sxy=np.sum(x*y) r=(sxy-sx*sy/n)/np.sqrt((sx2-sx*sx/n)*(sy2-sy*sy/n)) if origin: a=sxy/sx2 b=0. else: a=(sxy-sx*sy/n)/(sx2-sx*sx/n) b=(sy-a*sx)/n return(a,b,r) Laboratório Numérico 20

Utilização da função import matplotlib.pyplot as plt plt.close('all') nu=1e12*np.array([749,724,699,674,649,624,599,574,549,524,499],dtype=float) Vp=np.array([1,0.99,0.89,0.79,0.68,0.57,0.47,0.37,0.28,0.17,0.07]) e=1.609e-19; evp=e*vp (a,b,r)=linreg(nu,evp,false) h=a; W=-b plt.scatter(nu,vp,color='red ) #argumento por dicionário fit=(h*nu-w)/e; plt.plot(nu,fit,color='blue') plt.text(6.5e14,0.4,'h='+str(h)+'\n'+'r='+str(r)) plt.xlabel(r'$\nu$ );plt.ylabel(r'$v_p$') plt.title('determinação da constante de Planck') print('h=',h,'r=',r) Laboratório Numérico 21

Laboratório Numérico 22

y = ax + b vs y = ax O coeficiente de correlação não depende do fit Em certos problemas a reta de regressão tem que passar na origem, por razões físicas (por exemplo os valores negativos são inaceitáveis) Para um dado conjunto de dados as duas opções dão declives diferentes. A opção y = ax + b tem erro médio quadrático (tem mais graus de liberdade). Laboratório Numérico 23