A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5.

Apresentações semelhantes


Apresentação em tema: "Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5."— Transcrição da apresentação:

1 Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5

2 Ludwig Krippahl, 2007 2 Na aula de hoje... Trabalho prático 1 Calcular concentrações de equilíbrio para um sistema de reacções químicas

3 Ludwig Krippahl, 2007 3 Objectivo Calcular concentrações de equilíbrio para um sistema de reacções químicas.

4 Ludwig Krippahl, 2007 4 Objectivo Calcular concentrações de equilíbrio para um sistema de reacções químicas. A função recebe: CH 3 COOH H + + CH 3 COO - H 2 O H + + OH - Concentrações iniciais Constantes

5 Ludwig Krippahl, 2007 5 Objectivo Calcular concentrações de equilíbrio para um sistema de reacções químicas. A função devolve: Concentrações de equilíbrio

6 Ludwig Krippahl, 2007 6 Objectivo Exemplo: octave:7> mat=['CH3COOH = H+ + CH3COO-';'H2O = H+ + OH-']; octave:8> eks=[1.78e-5,1.8e-16]; octave:9> esps=['CH3COOH';'H+';'CH3COO-';'H2O';'OH-']; octave:10> cis=[0.01,0,0,55.346,0]; octave:11> res=sistema(mat,esps,eks,cis,1e-8) res = 9.5869e-03 4.1309e-04 4.1308e-04 5.5346e+01 6.4431e-09

7 Ludwig Krippahl, 2007 7 Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Matriz de strings descrevendo o sistema de reacções: mat=['CH3COOH = H+ + CH3COO-';'H2O = H+ + OH-'] CH3COOH = H+ + CH3COO- H2O = H+ + OH-

8 Ludwig Krippahl, 2007 8 Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Matriz de strings com lista das espécies: esps=['CH3COOH';'H+';'CH3COO-';'H2O';'OH-'] CH3COOH H+ CH3COO- H2O OH-

9 Ludwig Krippahl, 2007 9 Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Vector com constantes de equilíbrio: eks=[1.78e-5,1.8e-16] 1.7800e-05 1.8000e-16

10 Ludwig Krippahl, 2007 10 Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Nota: k=1.8e-16 para auto dissociação da água porque inclui [H2O]:

11 Ludwig Krippahl, 2007 11 Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Vector com concentrações iniciais (mesma ordem que na lista de espécies) cis=[0.01,0,0,55.346,0]

12 Ludwig Krippahl, 2007 12 Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Precisão do cálculo (10 -8 ) Nota: XeY é o mesmo que X 10 Y

13 Ludwig Krippahl, 2007 13 Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Função sistema devolve: 9.5869e-03 4.1309e-04 4.1308e-04 5.5346e+01 6.4431e-09 Na mesma ordem: CH3COOHH+ CH3COO-H2OOH-

14 Ludwig Krippahl, 2007 14 Execução (resumo) Parte 1: equilíbrio de uma reacção Parte 2: equilíbrio de um sistema Parte 1 e 2 lidam só com argumentos numéricos: estequiometria, constantes... Parte 3: converter strings em matriz de estequiometria Parte 4: juntar tudo.

15 Ludwig Krippahl, 2007 15 Parte 1 – estequiometria Reacção genérica: 2A + B 2D Desloca-se x para o equilíbrio: [A]=C i A-2x [B]=C i B-1x [D]=C i D+2x

16 Ludwig Krippahl, 2007 16 Parte 1 – estequiometria Reacção genérica: 2A + B 2D Usar estes coeficientes: [A]=C i A-2x [B]=C i B-1x [D]=C i D+2x

17 Ludwig Krippahl, 2007 17 Parte 1 – estequiometria Reacção genérica: 2A + B 2D Vector: [-2, -1, 2] [A]=C i A-2x [B]=C i B-1x [D]=C i D+2x

18 Ludwig Krippahl, 2007 18 Parte 1 – estequiometria Reacção genérica: 2A + B 2D Se também há C: [-2, -1, 0, 2] [A]=C i A-2x [B]=C i B-1x [C]=C i C +0x [D]=C i D+2x

19 Ludwig Krippahl, 2007 19 Parte 1 – concentrações Concentrações iniciais dadas por outro vector, com a mesma dimensão, pela mesma ordem (A, B, C, D): cis= [2, 2, 1, 0]

20 Ludwig Krippahl, 2007 20 Parte 1 - resultado Dados: esteq=[-2, -1, 0, 2] cis= [2, 2, 1, 0] k=1 precisao=1e-8 Função devolve 0.54660, que é o valor de x.

21 Ludwig Krippahl, 2007 21 Parte 1 - resultado Função devolve 0.54660, que é o valor de x: [A]=C i A-2x [B]=C i B-1x [C]=CiC +0x [D]=C i D+2x

22 Ludwig Krippahl, 2007 22 Parte 1 - algoritmo Calcular o valor de x que dá uma distância de zero ao equilíbrio 2A + B 2D

23 Ludwig Krippahl, 2007 23 Parte 1 - algoritmo Distância ao equilíbrio: positivo se reagentes a mais negativo se produtos a mais zero no equilíbrio

24 Ludwig Krippahl, 2007 24 Parte 1 - algoritmo Basta encontrar o valor de x para o qual a distância se anula, sabendo que: concentrações = cis+x*coeficientes

25 Ludwig Krippahl, 2007 25 Parte 1 - algoritmo Encontrar o zero de uma função. Mas precisamos do intervalo onde está o zero...

26 Ludwig Krippahl, 2007 26 Parte 1 – algoritmo (limites) 2A + B 2D Desloca-se x para o equilíbrio: [A]=C i A-2x [B]=C i B-1x [D]=C i D+2x Quais são os limites de x? O menor de C i A/2, C i B -C i D/2

27 Ludwig Krippahl, 2007 27 Parte 1 – algoritmo (limites) Quais são os limites de x? Positivo: o menor valor da concentração dos reagentes a dividir pelos coeficientes (atenção: os coeficientes dos reagentes são guardados como negativos). Negativo: o maior valor (é negativo) da concentração dos produtos a dividir pelo simétrico dos coeficientes (os coeficientes dos produtos são positivos na matriz)

28 Ludwig Krippahl, 2007 28 Parte 2 - algoritmo Dado um conjunto de reacções definido numa matriz (uma por linha): Calcular o x para a primeira, actualizar concentrações. Usar essas concentrações para a segunda, etc.. Guardar o maior valor absoluto de x Parar quando for menor que a precisão

29 Ludwig Krippahl, 2007 29 Parte 3 Criar a matriz de coeficientes estequimétricos a partir das matrizes de strings com reacções e espécies.

30 Ludwig Krippahl, 2007 30 Parte 3 - reacções O sinal + com um espaço antes e um espaço depois separa as espécies. Os espaços distinguem este uso do sinal + do caso em que faz parte do nome da espécie. E.g.: H+ + OH-

31 Ludwig Krippahl, 2007 31 Parte 3 - reacções O sinal + com um espaço antes e um espaço depois separa as espécies. Os espaços distinguem este uso do sinal + do caso em que faz parte do nome da espécie. E.g.: H+ + OH- Nome da espécie (não tem espaço antes do +)

32 Ludwig Krippahl, 2007 32 Parte 3 - reacções O sinal + com um espaço antes e um espaço depois separa as espécies. Os espaços distinguem este uso do sinal + do caso em que faz parte do nome da espécie. E.g.: H+ + OH- Separa espécies (tem espaços antes e depois do +)

33 Ludwig Krippahl, 2007 33 Parte 3 - reacções O sinal = que separa reagentes e produtos também tem um espaço antes e um espaço depois. E.g.: H2O = H+ + OH-

34 Ludwig Krippahl, 2007 34 Parte 3 - reacções Números no inicio de cada espécie indicam a estequiometria: 2NH4Cl + 2CaO = CaCl2 + Ca(OH)2 + 2NH3

35 Ludwig Krippahl, 2007 35 Parte 3 - reacções Números no inicio de cada espécie indicam a estequiometria: 2NH4Cl + 2CaO = CaCl2 + Ca(OH)2 + 2NH3 Quando não há número o coeficiente estequiométrico é 1.

36 Ludwig Krippahl, 2007 36 Parte 3 - espécies A lista de espécies é dada por uma matriz de strings. E.g.: NH4Cl CaO CaCl2 Ca(OH)2 NH3 Atenção que o Octave alinha as strings preenchendo com espaços.

37 Ludwig Krippahl, 2007 37 Parte 3 - espécies É preciso encontrar a espécie na lista para saber em que posição vem. A ordem da lista determina a ordem dos coeficientes de estequiometria. Para isso é preciso comparar strings: strcmp

38 Ludwig Krippahl, 2007 38 Parte 3 – comparar strings octave:7> strcmp('texto','texto') ans = 1 octave:8> strcmp('texto','outro texto') ans = 0 octave:9> 'texto'=='outro texto' error: operator ==: nonconformant arguments. octave:9> 'texto'=='texto' ans = 1 1 1 1 1

39 Ludwig Krippahl, 2007 39 Parte 3 – comparar strings Cuidado com os espaços: octave:10> strcmp('texto','texto ') ans = 0 Usar o deblank: remove espaços do fim

40 Ludwig Krippahl, 2007 40 Parte 3 – comparar strings Cuidado com os espaços: Usar deblank: octave:14> ['texto ','|'] ans = texto | octave:15> [deblank('texto '),'|'] ans = texto|

41 Ludwig Krippahl, 2007 41 Parte 3 – algoritmo (para cada reacção) Partir em reagentes e produtos Partir cada um em espécies Separar os nomes e os coeficientes de estequiometria. Encontrar a posição de cada reagente e produto na matriz de espécies Criar o vector de estequiometria (com 0 nos que não participam)

42 Ludwig Krippahl, 2007 42 Parte 3 – exemplo Reacções CH3COOH = H+ + CH3COO- H2O = H+ + OH- Lista CH3COOH H+ CH3COO- H2O OH- Resultado -1, 1, 1, 0, 0 0, 1, 0,-1, 1

43 Ludwig Krippahl, 2007 43 Parte 3 – exemplo Reacções CH3COOH = H+ + CH3COO- H2O = H+ + OH- Lista CH3COOHprimeiro da lista H+ CH3COO- H2O OH- Resultado -1, 1, 1, 0, 0 0, 1, 0,-1, 1

44 Ludwig Krippahl, 2007 44 Parte 3 – exemplo Reacções CH3COOH = H+ + CH3COO- H2O = H+ + OH- Lista CH3COOH H+segundo da lista CH3COO- H2O OH- Resultado -1, 1, 1, 0, 0 0, 1, 0,-1, 1

45 Ludwig Krippahl, 2007 45 Parte 3 – exemplo Reacções CH3COOH = H+ + CH3COO- H2O = H+ + OH- Lista CH3COOH H+ CH3COO-terceiro H2O OH- Resultado -1, 1, 1, 0, 0 0, 1, 0,-1, 1

46 Ludwig Krippahl, 2007 46 Parte 3 – exemplo Reacções CH3COOH = H+ + CH3COO- H2O = H+ + OH- Lista CH3COOH H+ CH3COO- H2Oquarto OH- Resultado -1, 1, 1, 0, 0 0, 1, 0,-1, 1

47 Ludwig Krippahl, 2007 47 Parte 3 – exemplo Reacções CH3COOH = H+ + CH3COO- H2O = H+ + OH- Lista CH3COOH H+ CH3COO- H2O OH-quinto Resultado -1, 1, 1, 0, 0 0, 1, 0,-1, 1

48 Ludwig Krippahl, 2007 48 Parte 4 – juntar tudo Recebe as matrizes de strings com reacções e espécies, os vectores com constantes de equilíbrio e concentrações iniciais, e valor para a precisão. Devolve a constante de equilibrio. Chamar função da parte 3, usar o resultado para a função da parte 2, devolver o resultado desta.

49 Ludwig Krippahl, 2007 49 Execução Grupos de 2 alunos. 2 aulas práticas + o tempo que for preciso. Em cada aula entregam uma ficha com o progresso até essa altura. Entrega da versão final: até 23 de Abril às 9:00 am.

50 Ludwig Krippahl, 2007 50 Fraudes Não tirem dúvidas com os colegas. Não copiem. Os trabalhos vão ser comparados, incluindo as fichas com as versões intermédias. Copiar prejudica quem copia e quem deixa copiar.

51 Ludwig Krippahl, 2007 51 Dúvidas durante o trabalho Aproveitem as aulas para tirar dúvidas. Horário de dúvidas. Email.

52 Ludwig Krippahl, 2007 52 Dúvidas


Carregar ppt "Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5."

Apresentações semelhantes


Anúncios Google