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, 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, Objectivo Calcular concentrações de equilíbrio para um sistema de reacções químicas.

4 Ludwig Krippahl, 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, 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, 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 = e e e e e-09

7 Ludwig Krippahl, 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, 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, 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] e e-16

10 Ludwig Krippahl, 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, 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, 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, Objectivo (exemplo) octave:11> res=sistema(mat,esps,eks,cis,1e-8) Função sistema devolve: e e e e e-09 Na mesma ordem: CH3COOHH+ CH3COO-H2OOH-

14 Ludwig Krippahl, 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, 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, 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, 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, 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, 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, Parte 1 - resultado Dados: esteq=[-2, -1, 0, 2] cis= [2, 2, 1, 0] k=1 precisao=1e-8 Função devolve , que é o valor de x.

21 Ludwig Krippahl, Parte 1 - resultado Função devolve , 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, Parte 1 - algoritmo Calcular o valor de x que dá uma distância de zero ao equilíbrio 2A + B 2D

23 Ludwig Krippahl, 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, 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, Parte 1 - algoritmo Encontrar o zero de uma função. Mas precisamos do intervalo onde está o zero...

26 Ludwig Krippahl, 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, 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, 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, Parte 3 Criar a matriz de coeficientes estequimétricos a partir das matrizes de strings com reacções e espécies.

30 Ludwig Krippahl, 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, 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, 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, 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, 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, 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, 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, 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, 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 =

39 Ludwig Krippahl, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, Dúvidas durante o trabalho Aproveitem as aulas para tirar dúvidas. Horário de dúvidas. .

52 Ludwig Krippahl, 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