56
Informática para Ciências e Engenharias (B) 2016/17 Teórica 10

Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Informática para Ciências e Engenharias (B)

2016/17

Teórica10

Page 2: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Introdução aos sistemas de bases de dados:

•  Interrogações mais complexas em SQL.

l  Simulação de modelos contínuos:

•  Integração de equações diferenciais.

•  Exemplo: reações químicas

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 2

Sumário

Page 3: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Queries com várias Tabelas

l  Geralmente as perguntas às base de dados envolvem mais de uma tabela.

l  Exemplo de query mais complexa

l  Quais os títulos dos filmes alugados pelo Artur Meireles?

l  Neste caso, a informação relevante está organizada em várias tabelas

•  Filmes •  Alugueres •  Clientes

17Maio2017 310:SQL(váriastabelas);SimulaçãomodelosconBnuos

Page 4: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Tabela de Filmes de uma base de dados DBvideos

Exemplo – Tabela de Filmes

17Maio2017 410:SQL(váriastabelas);SimulaçãomodelosconBnuos

Page 5: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Tabela de Clientes de uma base de dados DBvideos

Exemplo – Tabela de Clientes

17Maio2017 510:SQL(váriastabelas);SimulaçãomodelosconBnuos

Page 6: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A tabela Alugueres tem 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

17Maio2017 610:SQL(váriastabelas);SimulaçãomodelosconBnuos

Page 7: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Quais os títulos dos filmes alugados pelo Artur Meireles?

Queries com várias Tabelas

17Maio2017 710:SQL(váriastabelas);SimulaçãomodelosconBnuos

Page 8: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Ligar 2 tabelas

l  Podemos unir tabelas usando a condição WHERE da instrução SELECT

•  O campo A da tabela1 deve ser igual ao campo B da tabela 2

•  Opcionalmente a lista de respostas pode vir ordenada pelo campo C

SELECT lista-campos FROM tabela1, tabela2 WHERE tabela1.campoA = tabela2.campoB ORDER BY campoC;

17Maio2017 810:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com várias Tabelas

Page 9: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query:

l  Quais os títulos dos filmes alugados?

•  As duas tabelas têm um campo Filme_id

17Maio2017 910:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com várias Tabelas

Page 10: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Ligar 2 tabelas

l  Quais os títulos dos filmes alugados?

•  As duas tabelas têm um campo Filme_id

db >> SELECT Filmes.Titulo ...>> FROM Filmes, Alugueres ...>> WHERE Filmes.Filme_id = Alugueres.Filme_id; Idade do Gelo ElizabethRegresso ao FuturoAliendb >>

17Maio2017 1010:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com várias Tabelas

Page 11: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

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-campos FROM tabela1 JOIN tabela2 USING(id_tabela2) WHERE condição extraORDER BY campoC;

17Maio2017 1110:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com várias Tabelas

Page 12: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (2 tabelas):

l  Quais os títulos dos filmes alugados?

•  As duas tabelas têm um campo Filme_id

db >> SELECT Titulo...>> FROM Filmes JOIN Alugueres...>> USING (Filme_id); Idade do Gelo ElizabethRegresso ao FuturoAliendb >>

17Maio2017 1210:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com várias Tabelas

Page 13: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (2 tabelas):

l  Quais os títulos e datas de aluguer dos filmes alugados?

•  As duas tabelas têm um campo Filme_id

db >> SELECT Titulo, Alugueres.Data_aluguer...>> FROM Filmes JOIN Alugueres...>> USING (Filme_id); Idade do Gelo|05/10/14Elizabeth|05/12/14Regresso ao Futuro|05/13/14Alien|05/11/14 db >>

17Maio2017 1310:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com várias Tabelas

Page 14: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

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.

17Maio2017 1410:SQL(váriastabelas);SimulaçãomodelosconBnuos

db >> SELECT Titulo, Alugueres.Data_aluguer...>> FROM Filmes JOIN Alugueres...>> USING (Filme_id); Idade do Gelo|05/10/14Elizabeth|05/12/14Regresso ao Futuro|05/13/14Alien|05/11/14 db >>

Queries com várias Tabelas

Page 15: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (3 tabelas):

l  Quais os títulos dos filmes alugados e que pessoas os alugaram?

17Maio2017 1510:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com várias Tabelas

Page 16: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (3 tabelas):

l  Quais os títulos dos filmes alugados e que pessoas os alugaram?

17Maio2017 1610:SQL(váriastabelas);SimulaçãomodelosconBnuos

db >> 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 MeirelesRegresso ao Futuro|Marcelo Rebelo de SousaAlien|Pedro Passos Coelhodb >>

Queries com várias Tabelas

Page 17: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Por vezes pretendemos obter como resposta não o valor dos campos mas sim uma determinada “agregação” desses campos.

l  As agregações mais comuns são

•  Contagens (quantos registos satisfazem a query?

•  Somas (qual a soma/ produto dos campos seleccionados)

•  Nota: Não há produtos que podem ser obtidos com a conversão via logaritmos:

exp(sum(ln(*)))

•  Máximos e Mínimos (qual o maior/menor campo seleccionado)

•  Em campos de texto a ordem é lexicográfica

17Maio2017 1710:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com Agregações

Page 18: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (contagem - agregação):

l  Quantos filmes foram alugados?

l  Nota: Algumas variantes

db >> SELECT Count (Aluguer_Id) FROM Filmes; 4db >>

SELECT COUNT(campo) : conta não NULL no campoSELECT COUNT(*) : conta registos (linhas)SELECT COUNT(DISTINCT campo) : conta diferentes

17Maio2017 1810:SQL(váriastabelas);SimulaçãomodelosconBnuos

Queries com Agregações

Page 19: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (contagem + wild cards):

l  Quantos clientes têm Sousa no nome?

17Maio2017 1910:SQL(váriastabelas);SimulaçãomodelosconBnuos

db >> SELECT Count(*) FROM Clientes ...>> WHERE Nome LIKE "%Sousa%”; 2db >>

Queries com Agregações

Page 20: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (contagem - sem repetições):

l  Em quantas datas foram feitos alugueres?

17Maio2017 2010:SQL(váriastabelas);SimulaçãomodelosconBnuos

db >> SELECT Count(Data_Aluguer)FROM Alugueres; 4db >> SELECT Count(DISTINCT Data_Aluguer)FROM Alugueres; 3db >>

Queries com Agregações

Page 21: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Query (outras agregações – mínimo):

l  Qual a data do primeiro aluguer

l  Notaraimportânciadaformacomoseescrevemdatasdeformaapoderusarasfunçõesmax/min

17Maio2017 2110:SQL(váriastabelas);SimulaçãomodelosconBnuos

db >> SELECT Min(Data_Aluguer) FROM Alugueres; 2013/11/11db >>

Queries com Agregações

Page 22: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Equações diferenciais

•  É comum (e prático) especificar sistemas dinâmicos com equações diferenciais

•  Cinética de reações

•  Crescimento de micro-organismos

•  Propagação de epidemias

•  Basta quantificar a variação de cada variável em função do estado do sistema

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 22

Sistemas de Equações Diferenciais

Page 23: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Exemplo:

•  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 diretamente as concentrações

•  Só temos as derivadas e as condições iniciais.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 23

Reacção Química Irreversível

Page 24: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

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.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 24

Método de Euler

Page 25: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Início, t=0

•  [A]0 [B]0 [C]0

l  Procedimento:

•  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

A + B → C

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 25

ValorCorrente

PróximoValor

DerivadaCorrente

Reacção Química Irreversível

Page 26: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A simulação de uma reação química da forma A+B → C, pode ser efectuada por integração da respectiva equação diferencial.

l  Para esse efeito deverão ser dados inicialmente •  cis – vector concentrações iniciais de A, B e C •  dt – passo da simulação •  tmax – tempo final da simulação •  k – constante cinética da reacção

l  Sendo obtido •  tcs – concentrações dos componentes A, B e C ao longo do

tempo, i.e. no intervalo 0 .. Tmax.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 26

Reacção Química Irreversível

Page 27: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A implementação genérica da simulação pode ser especificada pela função com assinatura e documentação indicadas abaixo:

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 27

function tcs = reacabc(cis,dt,tmax,k) % tcs = reacabc(cis,dt,tmax,k) % Simula a reaccao A+B -> C. Devolve uma matriz com % as concentracoes em funcao do tempo. Recebe as % concentracoes iniciais, o passo, o tempo maximo % e a constante cinetica da reaccao. ... end

Reacção Química Irreversível

Page 28: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 28

function tcs = reacabc(cis,dt,tmax,k) % ... tcs = zeros(round(tmax/dt),4); % dimensiona a matriz de saída ix = 1; concs = cis; tcs(ix,:)=[0,concs]; % valores em t=0 % ciclo para calcular as concentrações ao longo do tempo (até tmax) for t = dt : dt : tmax % producao de C no intervalo resultante da reação de A com B abk = concs(1)* concs(2)* k * dt; %velocidade da reaccao * passo concs(1) = concs(1) – abk; % conc. de A no instante seguinte concs(2) = concs(2) - abk; % conc. de B no instante seguinte concs(3) = concs(3) + abk; % conc. de C no instante seguinte % as novas concentrações são guardadas na linha seguinte de tcs ix = ix + 1; tcs(ix,:) = [t, concs]; end end

Reacção Química Irreversível

Page 29: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A função pode ser testada, especificando os valores dos seus argumentos, como em:

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 29

>> V = [10, 20, 15, 35, 5]; >> cis=[1,1.5,0] >> dt = 0.1 >> tmax = 10 >> k=1 >> pontos = reacabc(cis,dt,tmax,k); >> X = pontos(:,1); >> ABC = pontos(:,2:columns(pontos))) >> id = figure; >> plot(X, ABC) >> legend ('A', 'B', 'C'); >> saveas(id,'abc.pdf');

Reacção Química Irreversível

Page 30: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 30

l  resultando na figura ‘abc.pdf’

Reacção Química Irreversível

Page 31: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A simulação de uma reação química reversível da forma

A+B ⇔ C,

pode ser igualmente efectuada por integração da respectiva equação diferencial. Neste caso a velocidade da reação é modelada através da subtração das velocidades direta e inversa, dada pela equação

vel = [A] [B] kd - [C] ki

em que Kd e Ki são as constantes cinéticas das reações direta e inversa, respectivamente.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 31

Reações Reversíveis

Page 32: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A simulação de uma reação química reversível pode ser generalizada tendo em conta as coeficientes de estequiometria dos reagentes e dos produtos. Por exemplo, para a reação

2A + 3B ⇔ C + 4D,

a velocidade da reação é modelada através da equação

vel = [A]2 [B]3 kd - [C]1 [D]4 ki

em que Kd e Ki são as constantes cinéticas da reação, direta e inversa, respectivamente.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 32

Reações Reversíveis

Page 33: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Uma vez obtida a velocidade de reação a taxa de variação de cada reagente ou produto é obtida pela multiplicação dessa velocidade pelo seu coeficiente de estequiometria.

l  Por exemplo, no caso anterior 2A + 3B ⇔ C + 4D, vel = [A]2 [B]3 kd - [C]1 [D]4 ki

as variações dos reagentes são negativas (os reagentes são consumidos) e dadas por

dA/dt = -2 * vel e dB/dt = -3 * vel

enquanto que as variações dos produtos são positivas (os produtos são produzidos)

dC/dt = +1 * vel e dD/dt = +4 * vel

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 33

Reações Reversíveis

Page 34: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Na prática, as equações anteriores podem ser mais convenientemente implementadas através de operações vetoriais. Assim para a reação reversível

2A + 3B ⇔ C + 4D

com as concentrações dos produtos representadas pelo vetor concs = [A, B, C, D]

podemos considerar os seguintes vetores de coeficientes estequiométricos (para reagentes e produtos): eReag = [2,3,0,0] e eprod = [0,0,1, 4]

que permitem obter as velocidades e as derivadas dos vários reagentes e produtos através de operações vetoriais.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 34

Reações Reversíveis

Page 35: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A velocidade da reação pode ser obtida através das concentrações dos reagentes e dos produtos elevados às suas estequiometrias. Dados

vel = [A]2 [B]3 kd - [C] [D]4 ki,

eReag = [2,3,0,0] e eprod = [0,0,1, 4]

temos

vel = kd*prod([A,B,C,D].^eReag) – ki*prod([A,B,C,D].^ eProd)

= kd*prod([A,B,C,D].^[2,3,0,0]) – ki*prod([A,B,C,D].^ [0,0,1,4])

= kd*prod([A2,B3,C0,D0] – ki*prod([A0,B0,C1,D4])

= kd * A2 * B3 – ki * C1 * D4

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 35

Reações Reversíveis

Page 36: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Exemplo:

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 36

>> concs = [3, 2, 5, 2]; >> eReag = [2, 3, 0, 0]; >> eProd = [0, 0, 1, 4]; >> kd = 1/3; >> ki = 1/4; >> vr = concs .^eReag ve = 9 8 1 1 >> vp = concs .^Prod vp = 1 1 5 16 >> prodvr = prod(vr) prodve = 72 >> prodvp = prod(vp) pve = 80 % velocidade = velocidade direta – velocidade inversa >> vel = kd * prodvr – ki * prodvp vel = 4 % 72/3 – 80/4

Reações Reversíveis

Page 37: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A variação (derivada) da concentração de cada reagente e produto da reação pode ser obtida através das multiplicação dos seus índices de estequiometria pela velocidade da reação obtida anteriormente. No exemplo da reação anterior

2A + 3B ⇔ C + 4D temos os índices

eReag = [2,3,0,0] e eprod = [0,0,1, 4]

e portanto as derivadas das concentrações dA/dt = - 2*vel; dB/dt = - 3*vel; dC/dt = +1*vel; e dD/dt = +4*vel

podem ser obtidas num vetor deriv através da operação vetorial deriv = vel * eProd - vel * eReag

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 37

Reações Reversíveis

Page 38: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Exemplo:

l  Uma vez compreendidas estas operações vetoriais a simulação de uma reação reversível pode ser implementada de forma semelhante à estudada anteriormente.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 38

>> concs = [3, 2, 5, 2]; >> eReag = [2, 3, 0, 0]; >> eProd = [0, 0, 1, 4]; >> ... % velocidade = velocidade direta – velocidade inversa >> vel = kd * prodvr – ki * prodvp vel = 4 % 72/3 – 80/4 >> deriv = vel * eProd – vel * eReag deriv = -8 -12 4 16 % 4 *[0 0 1 4] – 4 *[2 3 0 0]

Reações Reversíveis

Page 39: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A simulação de uma reação reversível, efectuada pelo método de Euler, requer os seguintes dados iniciais. •  eReag – coeficientes de estequiometria dos reagentes •  eProd – coeficientes de estequiometria dos produtos •  cis – vector concentrações iniciais dos reagentes e produtos •  kd – constante cinética da reação direta •  ki – constante cinética da reação inversa •  dt – passo da simulação •  tmax – tempo final da simulação

l  Sendo obtido •  tcons – matriz de concentração dos vários reagentes e produtos,

(um por linha) ao longo do tempo, i.e. no intervalo 0 .. Tmax.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 39

Reações Reversíveis

Page 40: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A implementação genérica da simulação pode ser especificada pela função com assinatura e documentação indicadas abaixo, semelhante à anteriormente estudada:

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 40

function tConcs = cinetica(eReag, eProd, cis, kd, ki, dt, tmax) % simula uma reaccao quimica a partir dos coeficientes de % estequiometria, concentracoes iniciais, constantes % cineticas, passo de integracao e tempo da simulacao. % Devolve uma matriz com o tempo e as concentracoes. ... end

Reações Reversíveis

Page 41: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 41

function tConcs = cinetica(eReag, eProd, cis, kd, ki, dt, tmax) % ... % cria a matriz e define o ponto inicial % a primeira coluna corresponde ao vetor dos tempos tConcs = zeros(round(tmax/dt),length(cis)+1); % cria a matriz ix = 1; concs = cis; tConcs(ix,:)=[0,concs]; % concentracao inicial no tempo = 0 % ciclo da simulação pelo metodo de Euler for t = dt : dt : tmax vel = prod(concs.^eReag)* kd - prod(concs.^eProd) * ki; deriv = vel * eProd – vel * eReag; concs = concs + deriv * dt; % calcula os valores seguintes ix = ix + 1; tConcs(ix,:) = [t, concs]; % guarda os valores seguintes end end

Reações Reversíveis

Page 42: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A função pode ser testada, especificando os valores dos seus argumentos, como em:

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 42

>> kd = 1; >> ki = 0.5; >> cis = [1,2,0]; >> er = [1,1,0]; % A + B <-> C >> ep = [0,0,1]; % A + B <-> C >> dt = 0.1; >> tmax = 5; >> pontos = cinetica(er,ep,cis,kd,ki,dt,tmax); >> id = figure; >> plot(pontos(:,1),pontos(:,2:columns(pontos))); >> saveas(id,'xyz.pdf');

Reações Reversíveis

Page 43: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 43

l  resultando na figura ‘xyz.pdf’

Reações Reversíveis

Page 44: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A simulação de um sistema de reações químicas reversíveis pode ser obtida por generalização do caso de uma só reação.

l  Para isso deve usar-se duas matrizes de estequiometrias, com uma linha para cada reação.

l  Por outro lado, deverá obter-se um vetor (coluna) de velocidades, uma linha por cada reação.

l  A velocidade de cada reação é obtida como anteriormente, linha a linha.

l  Igualmente se generaliza a derivada, como a soma das derivadas obtidas em cada uma das reações.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 44

Sistema de Reações Reversíveis

Page 45: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Os parâmetros usados num sistema de reações reversíveis, requer dados iniciais semelhantes mas generalizados a matrizes e vetores com várias linhas, uma por cada reação. •  esReag – matriz de coeficientes de estequiometria dos reagentes •  esProd – matriz de coeficientes de estequiometria dos produtos •  cis – vector concentrações iniciais dos reagentes e produtos •  kds – vetor de constantes cinéticas para cada reação direta •  kis – vetor de constantes cinéticas para cada reação direta •  dt – passo da simulação •  tmax – tempo final da simulação

l  Sendo obtido •  tcons – matriz de concentração dos vários reagentes e produtos,

(um por linha) ao longo do tempo, i.e. no intervalo 0 .. Tmax.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 45

Sistema de Reações Reversíveis

Page 46: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A implementação genérica da simulação pode ser especificada pela função com assinatura e documentação indicadas abaixo, semelhante à anteriormente estudada.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 46

function tConcs = cinetica(esReag, esProd, cis, kds, kis, dt, tmax) % Simula um conjunto de reaccoes quimicas. Recebe matrizes com % coeficientes estequiometricos, concentracoes iniciais, constantes % cineticas, passo de integracao e tempo da simulacao. % Devolve uma matriz com o tempo e as concentracoes. ... end

Sistema de Reações Reversíveis

Page 47: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A função pode ser implementada a partir do código anterior, fazendo-se as adaptações abaixo indicadas:

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 47

Sistema de Reações Reversíveis

vel = prod(concs.^eReag)* kd - prod(concs.^eProd) * ki; deriv = vel * eProd – vel * eReag;

deriv = zeros(1,length(concs)); for r = 1:size(esReag,1) % para cada reação obter eReag = esReag(r,:); % os coeficientes dos reagentes eProd = esProd(r,:); % os coeficientes dos produtos kd = kds(r); % a constante cinética direta ki = kis(r); % a constante cinética inversa % obtendo-se a velocidade de cada reação vel = prod(concs.^eReag) * kd -prod(concs.^eProd) * ki; % a derivada é obtida por soma das derivadas das reações deriv = deriv + vel * eProd – vel * eReag; end

Page 48: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  A inicialização das variáveis é idêntica à feita na função anterior, para uma só reação.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 48

function tConcs = cineticas(esReag,esProd,cis,kds,kis,dt,tmax) % ... % cria a matriz de concentrações e define o ponto inicial % a primeira coluna corresponde ao vetor dos tempos tConcs = zeros(round(tmax/dt),length(cis)+1); % cria a matriz ix = 1; concs = cis; tConcs(ix,:)=[0,concs]; % concentracao inicial no tempo = 0 for t = dt:dt:tmax % ciclo da simulação pelo metodo de Euler ... end concs = concs + deriv * dt; ix = ix + 1; tConcs(ix,:)=[t, concs]; end

Sistema de Reações Reversíveis

Page 49: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  O ciclo de simulação inclui as adaptações já analisadas.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 49

function tConcs = cineticas(esReag,esProd,cis,kds,kis,dt,tmax) ... for t = dt:dt:tmax % ciclo da simulação pelo metodo de Euler deriv = zeros(1,length(concs)); for r = 1:size(esReag,1) % para cada reação obter: eReag = esReag(r,:); % os coeficientes dos reagentes eProd = esProd(r,:); % os coeficientes dos produtos kd = kds(r); % a constante cinética direta ki = kis(r); % a constante cinética inversa % obtendo-se a velocidade de cada reação vel = prod(concs.^eReag) * kd -prod(concs.^eProd) * ki; % a derivada é obtida por soma das derivadas das reações deriv = deriv + vel * eProd – vel * eReag; end ... end

Sistema de Reações Reversíveis

Page 50: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Tal como anteriormente, esta função pode ser testada, especificando os valores dos seus argumentos, para um sistema de reações.

l  Podemos exemplificar com um oscilador químico (Lotka), simples de modelar, através das reações (não reversíveis)

A + X → 2X X + Y → 2Y Y → Q

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 50

Oscilador químico (Lotka)

Page 51: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

A + X → 2X X + Y → 2Y Y → Q

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 51

>> ers = [1 1 0 0; 0 1 1 0 ; 0 0 1 0]; % [A, X, Y, Q] >> eps = [0 2 0 0; 0 0 2 0 ; 0 0 0 1]; >> kds = [0.05,1,1]; >> kis = [0,0,0]; % reação não reversivel >> cis =[50,1,1,0]; >> dt = 0.01; >> tmax = 50; >> res = cineticas(ers,eps,cis,kds,kis,dt,tmax); >> id = figure; >> plot(res(:,1),res(:,2:columns(res))); >> legend ('A', ’X', ’Y', ’Q' ); >> saveas(id,’lotka_1.pdf');

Oscilador químico (Lotka)

Page 52: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 52

l  resultando na figura ‘lotka_1.pdf’ A + X → 2X X + Y → 2Y Y → Q

Oscilador químico (Lotka)

Page 53: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  Podemos realçar os produtos oscilantes (X e Y) apenas fazendo o gráfico da sua evolução, como testado abaixo.

A + X → 2X X + Y → 2Y Y → Q

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 53

>> ers = [1 1 0 0; 0 1 1 0 ; 0 0 1 0]; % [A, X, Y, Q] >> eps = [0 2 0 0; 0 0 2 0 ; 0 0 0 1]; >> kds = [0.05,1,1]; >> kis = [0,0,0]; % reação não reversivel >> cis =[50,1,1,0]; >> dt = 0.01; >> tmax = 50; >> res = cineticas(ers,eps,cis,kds,kis,dt,tmax); >> id = figure; >> plot(res(:,1),res(:,3:4)); % apenas colunas de X e Y >> legend (’X', ’Y’ ); % legenda de X e de Y >> saveas(id,’lotka_2.pdf');

Oscilador químico (Lotka)

Page 54: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 54

l  resultando na figura ‘lotka_2.pdf’ A + Y → 2X X + Y → 2Y Y → Q

Oscilador químico (Lotka)

Page 55: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

l  SQL •  Juntar tabelas (SELECT, JOIN, WHERE) •  Agregações (MAX, COUNT)

l  Integração numérica •  Equações diferenciais

•  Método de Euler, calcular derivada em t, usar valores em t e extrapolar para t+dt.

•  Cinética, exemplo •  Estequiometria e constantes.

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 55

Resumo

Page 56: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T10/iceb_t10.pdf · Informática para Ciências e Engenharias (B) 2016/17 Teórica 10. l

Para Consultar

l  SQL •  http://www.sqlitetutorial.net/

•  Exemplos de SQL com sqlite

l  Integração numérica •  Capítulos 8 e 9 do livro

•  (bastante mais avançado do que exigimos)

17Maio2017 10:SQL(váriastabelas);SimulaçãomodelosconBnuos 56