Upload
trinhkhanh
View
216
Download
0
Embed Size (px)
Citation preview
Informática para Ciências e Engenharias (B)
2015/16
Teórica 11
Na aula de hoje
l Sistemas de bases de dados: • Interrogações mais complexas em SQL
• Envolvendo várias tabelas
l Simulação de modelos contínuos: • Integração de equações diferenciais.
• Exemplos de reacções químicas
SQL + MATLAB
Queries em SQL (várias tabelas)
l Tabela Filmes de uma base de dados DBvideos
Exemplo – Tabela de Filmes
l Tabela Clientes de uma base de dados DBvideos
Exemplo – Tabela de Clientes
l Tabela Alugueres com duas chaves externas: • FiIme_id, que a liga à tabela filmes • Cliente_id, que a liga à tabela clientes
• Aluguer_id é a sua chave primária
Exemplo – Tabela de Alugueres
Queries com várias Tabelas
l Exemplo de query mais complexa
Quais os títulos dos filmes alugados pelo Artur Meireles?
l Problema:
• Informação relevante organizada em várias tabelas • Filmes • Alugueres • Clientes
Quais os títulos dos filmes alugados pelo Artur Meireles?
Queries com várias Tabelas
Queries com várias Tabelas
Ligar 2 tabelas
l Podemos unir tabelas usando a condição WHERE • O campo A da tabela1 deve ser igual ao campo B da tabela 2
SELECT lista-de-campos FROM tabela1, tabela2 WHERE tabela1.campoA = tabela2.campoB ORDER BY campoC;
Queries com várias Tabelas
Ligar 2 tabelas
l Alternativa: Usar um JOIN • Se o nome do campo for igual nas duas tabelas basta indicar
o campo, não é preciso indicar a tabela (e.g. id_tabela2)
SELECT lista-de-campos FROM tabela1 JOIN tabela2 USING(id_tabela2) WHERE condição ORDER BY campoC;
Queries com várias Tabelas
Query:
l Quais os títulos dos filmes alugados? • As duas tabelas têm um
campo Filme_id
Queries com várias Tabelas
SELECT Titulo FROM Filmes, Alugueres WHERE Filmes.Filme_id = Alugueres.Filme_id;
(ou)
SELECT Titulo FROM Filmes JOIN Alugueres USING (Filme_id);
Quais os títulos dos filmes alugados?
Idade do Gelo Elizabeth Regresso ao Futuro Alien
Queries com várias Tabelas
Query (2 tabelas):
l Quais os títulos e datas de aluguer dos filmes alugados?
SELECT Titulo, Alugueres.Data_aluguer FROM Filmes JOIN Alugueres
USING (Filme_id);
Idade do Gelo|05/10/14 Elizabeth|05/12/14 Regresso ao Futuro|05/13/14 Alien|05/11/14
Queries com várias Tabelas
Query (2 tabelas):
l Quais os títulos e datas de aluguer dos filmes alugados?
• Nota: Não havendo ambiguidade pode omitir-se o nome da tabela.
SELECT Titulo, Alugueres.Data_aluguer FROM Filmes JOIN Alugueres
USING (Filme_id); Idade do Gelo|05/10/14 Elizabeth|05/12/14 Regresso ao Futuro|05/13/14 Alien|05/11/14
Queries com várias Tabelas
Query (3 tabelas):
l Quais os títulos dos filmes alugados e as pessoas que os alugaram?
SELECT Titulo, Nome FROM Filmes, Alugueres, Clientes WHERE Clientes.Cliente_id = Alugueres.Cliente_id AND Filmes.Filme_id = Alugueres.Filme_id;
Idade do Gelo|Joana Fonseca Elizabeth|Artur Meireles Regresso ao Futuro|Cavaco Silva Alien|Joana Fonseca
Queries com várias Tabelas
Query (contagem + wild cards):
l Quantos clientes têm Silva no nome?
Queries com Agregações
Query (contagem - agregação):
l Quantos clientes ...?
• Nota: Algumas variantes
SELECT COUNT (*) FROM tabela1 [JOIN...] WHERE condição;
SQL COUNT(campo) : conta não NULL no campo SQL COUNT(*) : conta registos (linhas) SQL COUNT(DISTINCT campo) : conta diferentes
Queries com Agregações
Query (contagem + wild cards):
l Quantos clientes têm Silva no nome?
SELECT COUNT (*) FROM Clientes WHERE Nome LIKE "%Silva%";
3
Queries com Agregações
Query (outras agregações - máximo / mínimo / somas):
l Qual a data do último aluguer?
SELECT max(Data_aluguer) FROM Alugueres;
2013/11/20
2013/11/11 2013/11/12 2013/11/20 2013/11/15
2013/11/11 2013/11/12 2013/11/20 2013/11/15
SQL + MATLAB
Integração Numérica Equações Diferenciais
Sistemas de Equações Diferenciais
l Muitos sistemas físicos/químicos/biológicos são modelados por equações diferenciais
l Exemplo: Reação Química • A + B → C • d[C]/dt = k [A] [B] • d[A]/dt = -k [A] [B] • d[B]/dt = -k [A] [B]
l Não podemos calcular directamente as concentrações • Só temos as derivadas e as condições iniciais; • e o valor de k, a constante cinética da reação
Sistemas de Equações Diferenciais
Simulação: Método de Euler
l Sabemos os valores das variáveis em t • E.g. concentrações
l Sabemos as derivadas em t • E.g. equações da cinética
l Estimamos variáveis em t+dt • com dt suficientemente pequeno podemos desprezar a
variação das derivadas e assumir que a derivada é aproximadamente constante entre t e t+dt.
Sistemas de Equações Diferenciais
Simulação: Método de Euler
l Inicio, t=0 • [A]0 [B]0 [C]0
l Passo 1 • Usar valores em t para calcular derivada • Usar derivada e valores em t para estimar os valores em t+dt:
• [A]t+dt = [A]t + [A]t’ * dt • [B]t+dt = [B]t + [B]t’ * dt • [C]t+dt = [C]t + [C]t’ * dt
Sistemas de Equações Diferenciais
Método de Euler
l Inicio, t=0 • [A]0 [B]0 [C]0
l Passo 1 • Usar valores em t para calcular derivada • Usar derivada e valores em t para estimar os valores em t+dt:
• [A]t+dt = [A]t + [A]t’ * dt
Valor actual (em t)
Derivada actual (em t)
Valor seguinte (em t+dt)
Simulação de Equações Diferenciais
l Exemplo: Reação Química • A + B → C
l Assinatura da função:
• Dados: • cis – concentrações iniciais de A/cis(1), B/cis(2) e C/cis(3) • dt – passo da simulação • tmax – tempo final da simulação • k – constante cinética da reacção
• Obter: • tcs – concentrações ao longo do tempo de A, B e C
function tcs=reacabc(cis,dt,tmax,k)
Simulação de Equações Diferenciais
Cria a matriz e guarda os valores iniciais. • nº de linhas = tmax/dt • valor inicial do tempo t = 0
Simulação de Equações Diferenciais
Ciclo que: 1. começa em dt (t=0 tem os valores iniciais), 2. passo de dt, e 3. termina em tmax.
Simulação de Equações Diferenciais
Quanto vai variar cada concentração: • variação = k [A] [B] dt
Simulação de Equações Diferenciais
Actualização das concentrações
Simulação de Equações Diferenciais
Guarda na matriz • Avança uma linha • Escreve os valores nessa
linha
Simulação de Equações Diferenciais
octave:20> cis=[1,1.5,0]; octave:21> k=1; octave:22> pontos=reacabc(cis,0.1,10,k); octave:23> plot(pontos(:,1),pontos(:,2:columns(pontos)))
Simulação de Reacções Reversíveis
l Generalização: • A + B ⇔ C
• Reacção reversível: kd e ki • Velocidade = [A][B]kd - [C]ki
• Caso geral • Veloc. = kd*prod(Rsesteq) - ki*prod(Psesteq) • Alterar as concentrações • derivada = veloc*esteq(Ps)-veloc*esteq(Rs) • cs = cs + derivada*dt
Simulação de Reacções Reversíveis
l Para simulação, • Recebem-se como entrada
• Estequiometrias (reagentes e produtos), • Concentrações iniciais • Kd, Ki, dt e tmax.
• Exemplo de Estequiometrias: • 2 vectores, reagentes e produtos
• A + B ⇔ 2C • eReag = [1, 1, 0] • eProd = [0, 0, 2]
Simulação de Reacções Reversíveis
l Para simulação, • Calculam-se, ao longo da simulação
• Velocidade: kd*prod(Rsesteq) - ki*prod(Psesteq) • As concentrações:
• derivada = veloc*esteq(Ps) - veloc*esteq(Rs) • cs = cs + derivada*dt
• Retorna-se como resultado • Matriz com tempo (1ª coluna) e concentrações por
iteração (para o gráfico).
Simulação de Reacções Reversíveis
(NOTA: Extra Matéria),
l O MATLAB/Octave disponibiliza operações “ponto a ponto” entre vectores • Para calcular o produto ponto a ponto entre dois vectores
pode usar-se o operador “.*” • Por exemplo
• [1,2,3].*[4,5,6] -> [1*4, 2*5, 3*6] = [4,10,12] • Estas operações são generalizadas a outros operadores
• [2,3,4].^[4,2,3]->[2^4,3^2,4^3] = [16,9,64]
l Estas operações serão usadas nas simulações seguinets, para tornar os programas mais “compactos”.
Simulação de Reacções Reversíveis
l Exemplo: • Estequiometrias
• A + B ⇔ 2C
• er = [1, 1, 0]
• ep = [0, 0, 2]
• Velocidades: • A1*B1*kd v directa
• C2*ki v inversa
l Assinatura da função: function tConcs = cinetica(eReag,eProd,cis,kd,ki,dt,tmax)
Vectores de dimensão igual ao número de espécies na reacção.
Simulação de Reacções Reversíveis
Cria a matriz e guarda os valores iniciais.
Simulação de Reacções Reversíveis
Ciclo da simulação
Simulação de Reacções Reversíveis
Velocidade da reacção no tempo t • O ponto indica a aplicação do operador
elemento a elemento • prod é o operador de multiplicação • (cis, eReag, eProd são vectores com a
mesma dimensão).
A1*B1*C0*kd v directa A0*B0*C2*ki v inversa
Simulação de Reacções Reversíveis
Vector derivada: • (o produto de um escalar por um
vector é um vector) • (+) produtos são gerados, • ( - ) reagentes são consumidos.
Simulação de Reacções Reversíveis
Actualizar as concentrações. • deriv e cis são vectores com o mesmo
comprimento. • (MATLAB opera sobre vectores e matrizes)
Simulação de Reacções Reversíveis
Guarda os valores na matriz. (Na linha seguinte)
Simulação de Reacções Reversíveis
l Teste
> kd=1; > ki=0.5; > cis=[1,2,0]; > er=[1,1,0]; > ep=[0,0,1]; > pontos=cinetica(er,ep,cis,kd,ki,0.1,5); > plot(pontos(:,1),pontos(:,2:columns(pontos)))
A + B ⇔ C
Sistemas de Reacções
l Mesma abordagem, • cada estequiometria é uma matriz
• uma linha por reacção • constantes cinéticas em vectores
• um valor por reacção
l Alterações: • Na iteração é preciso calcular primeiro todas as derivadas
tendo em conta todas as reacções (um ciclo pelas linhas das matrizes).
• Só depois de ter todas as derivadas é que se actualizam todas as concentrações.
Sistemas de Reacções
l Assinatura da função
function tConcs = cineticas(esReag,esProd,cis,kds,kis,dt,tmax)
Matrizes: • Uma coluna por espécie no sistema • Uma linha por reacção.
Sistemas de Reacções
l Assinatura da função
function tConcs = cineticas(esReag,esProd,cis,kds,kis,dt,tmax)
Vector com um elemento por espécie no sistema.
Sistemas de Reacções
l Assinatura da função
function tConcs = cineticas(esReag,esProd,cis,kds,kis,dt,tmax)
Vectores com um elemento por reacção no sistema.
Sistemas de Reacções
Gera a matriz e guarda o ponto inicial.
Sistemas de Reacções
Ciclo da simulação
Sistemas de Reacções
Ciclo para calcular as derivadas, • somando os contributos de todas as
reacções; • deriv tem um elemento por espécie.
Sistemas de Reacções
Actualização dos valores das concentrações. • Guarda na matriz das concentrações
Sistemas de Reacções
l Exemplo: • Oscilador químico (Lotka) • Não se conhece nenhuma assim na prática, mas é simples
de modelar.
A + X → 2X X + Y → 2Y Y → Q
Sistemas de Reacções
l Teste:
> ers=[1 1 0 0;0 1 1 0;0 0 1 0]; > eps=[0 2 0 0;0 0 2 0;0 0 0 1]; > kds=[0.05,1,1]; > kis=[0,0,0]; > cis=[50,1,1,0]; > t=cineticas(ers,eps,cis,kds,kis,0.01,50); > plot(t(:,1),t(:,2:columns(t)));
A + X → 2X X + Y → 2Y Y → Q
Sistemas de Reacções
l Teste
A + X → 2X X + Y → 2Y Y → Q
Resumo
l SQL • Juntar tabelas (JOIN, WHERE) • MAX, COUNT
l Integração numérica • Equações diferenciais
• Método de Euler, • calcular derivada e valores em t para • extrapolar para t+dt.
• Cinética • Estequiometria e constantes.
Dúvidas ?