PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

39
DEPARTAMENTO DE Matem´aticaAplicada UNIVERSIDAD COMPLUTENSE DE MADRID PR ´ ACTICAS. C ´ ALCULO COMPUTACIONAL EN QU ´ IMICAS Licenciatura de Ciencias Qu´ ımicas Prof.: Rosa Pardo San Gil David Usero

Transcript of PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Page 1: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

DEPARTAMENTO DE

Matematica Aplicada

UNIVERSIDAD COMPLUTENSE DE MADRID

PRACTICAS.CALCULO COMPUTACIONAL EN QUIMICAS

Licenciatura de Ciencias QuımicasProf.: Rosa Pardo San Gil

David Usero

Page 2: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Matrices Practica 1

1. Introduccion

En esta practica vamos a profundizar un poco en las capacidades de Matlab para trabajar con matrices. Veremosen primer lugar algunas operaciones y comandos basicos y no tan basicos que tiene el programa para trabajar conmatrices.

2. Matrices en Matlab

Para introducir una matriz en Matlab se procede de la forma siguiente. Si por ejemplo tenemos la matriz

A =(

1 2 3 45 6 7 8

)

se introduce como:

>>A=[1 2 3 4; 5 6 7 8]

A =1 2 3 45 6 7 8

O bien,

>>A=[1,2,3,4;5,6,7,8];

Observemos que unas matrices especiales son los vectores, de esta forma, el vector fila v = (1.0, 1.1,1.2,1.3, . . . ,1.9,2.0), se escribe en Matlab como

>>v=[1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]

3. Operaciones y comandos para Matrices

Hemos visto como se introducen las matrices en Matlab. Veamos un ejemplo para introducir algunos de loscomandos basicos:

Ejemplo 1 Operaciones ElementalesDefinimos dos matrices:

>>A=[2 1;3 2]A =

2 13 2

>>B=[3 4;-1 5]B =

3 4-1 5

• Para sumar las dos matrices:

>>A+Bans =

5 52 7

• Para multiplicar una matriz por un escalar:

Page 3: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

>>3*Aans =

6 39 6

• Producto de matrices:

>>C=A*BC =

5 137 22

Siempre que los tamanos de las matrices sean los adecuados. Para saber cual es el tamano de una matriz conla que estamos trabajando,

>>size(A)ans =

2 2

Que quiere decir, evidentemente, 2 filas y 2 columnas.• Para calcular la matriz transpuesta:

>>A’ans =

2 31 2

Ejercicio 1 Utilizando las matrices definidas en el ejemplo anterior, comprobar que (AB)t = BtAt. (At es latranspuesta de A).

Ejemplo 2 Operaciones termino a termino: .* ./ .^Matlab tiene tres operaciones, que las llamaremos operaciones con punto, que permiten

i) multiplicar matrices termino a termino: .*ii) dividir matrices termino a termino: ./ii) elevar los terminos de una matriz a una cierta potencia: .^

Si v es el vector definido en la Seccion 2, explorar que hace la orden

>>v.^2

Por otra parte, si A y B son las matrices definidas anteriormente, explorar que hacen las ordenes

>>A.*B>>A./B

Estas operaciones con punto son esenciales en el calculo numerico y se utilizan para representar funcionesnumericamente.

Ejemplo 3 Matrices especiales con Matlab• Para generar la matriz identidad cuadrada,

>>eye(3)ans =

1 0 00 1 00 0 1

¿Por que habran elegido el nombre eye?• Una matriz 3× 2 llena de unos,>>ones(3,2)• Y si queremos que este llena de ceros,>>zeros(3,2)• Para generar una matriz con numeros aleatorios uniformemente distribuidos entre 0 y 1,>>rand(3,2)Si se usa el comando randn los numeros aleatorios son normalmente distribuidos, siguiendo la Normal Estandar

N(0, 1).

Page 4: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Ejemplo 4 Rango, Inversa y Determinante• Definimos la matriz,

>>X=[2 3 4; 1 -1 0]X =

2 3 41 -1 0

Para calcular su rango,

>>rank(X)ans =

2

• Supongamos que tenemos definida la siguiente matriz,

H =8 1 63 5 74 9 2

Para calcular su inversa,

>>inv(H)ans =

0.1472 -0.1444 0.0639-0.0611 0.0222 0.1056-0.0194 0.1889 -0.1028

Y si queremos ver el resultado en forma racional,

>>format rational>>inv(H)ans =

53/360 -13/90 23/360-11/180 1/45 19/180-7/360 17/90 -37/360

(Para ver todas las opciones del comando format hacer help format)• Para calcular el determinante de la matriz anterior H,

>>det(H)ans =

-360

Ejercicio 2 Generar una matriz cualquiera, por ejemplo 25×25, y calcular su inversa, su rango y su determinante.(¡No imprimirla!) ¿Que ocurre con el determinante de la matriz y el de su inversa?

Ejemplo 5 Los comandos especiales rref y rrefmovie• El comando rref produce la forma reducida escalonada por filas de una matriz usando la eliminacion de

Gauss-Jordan, es decir, haciendo ceros por debajo y por encima de la diagonal principal sin mover las columnas.Por ejemplo, definimos la matriz,

>>A=[-1 2 -1;2 1 2;2 4 2]

A =

-1 2 -12 1 22 4 2

Ahora escribimos el comando aplicado a la matriz,

Page 5: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

>>R=rref(A)

R =

1 0 10 1 00 0 0

Ejercicio 3 a) Calcular el rango de la matriz siguiente utilizando el comando rref

A =

16 2 3 135 11 10 89 7 6 124 14 15 1

b) Si una matriz H es cuadrada y no singular, es decir det(H) 6= 0, ¿cual sera la matriz R = rref(H)?c) ¿Como podemos utilizar estos comandos para calcular la inversa de una matriz invertible? Aplicarlo a la

matriz,

B =

8 1 63 5 74 9 2

Para verificar el resultado se puede calcular la inversa directamente con inv(B).

4. Matrices “dispersas”

Ejemplo 6 A veces usamos matrices con muchos ceros. MatLab tiene una forma de trabajar con ellas usandomenos bytes con el comando sparse. Veamoslo con un ejemplo:

Introducimos una matriz:>>A=[0 0 0 3;0 0 -1 2;3 0 0 1;0 0 0 -2];- Para convertirla a matriz dispersa>>s=sparse(A)Si preguntamos ‘‘whos" vemos que s ocupa menos que A.- Para recuperar la matriz inicial>>full(s)

Se pueden generar directamente matrices “sparse”:>>sparse(i,j,s,m,n)donde: i,j son los subındices de los elementos no nulos (i,j son vectores)s es un vector con los valores de los elementos no nulos(m,n) es el tamano de la matriz.De modo que, en el ejemplo anterior, para generar s deberıamos escribir:>>i=[1 2 2 3 3 4];>>j=[4 3 4 1 4 4];>>s=[3 -1 2 3 1 -2];>>m=4;n=4;

>>sparse(i,j,s,m,n)#

Y obtenemos s. Para obtener la matriz inicial >>full(s)

Ejercicio 4 Utilizando el comando sparse, generar la matriz 20× 20

0 1 0 0 . . . 0 0−1 0 1 0 . . . 0 00 −1 0 1 . . . 0 0...

. . ....

0 0 0 0 . . . 0 10 0 0 0 . . . −1 0

(Visualizarla para comprobar que esta bien.)

Page 6: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Sistemas de ecuaciones lineales Practica 2

En esta practica vamos a ver como se pueden resolver sistemas de ecuaciones lineales utilizando Matlab.

1. Sistemas de ecuaciones lineales

Un sistema de ecuaciones lineales,

a11x1 + a12x2 + . . . + a1nxn = b1

a21x1 + a22x2 + . . . + a2nxn = b2

...am1x1 + am2x2 + . . . + amnxn = bm

con m ecuaciones y n incognitas se puede escribir en forma matricial,

Ax = b

donde,

A =

a11 a12 . . . a1n

a21 a22 . . . a2n

...am1 am2 . . . amn

; x =

x1

x2

...xn

y b =

b1

b2

...bm

Vamos a ver mediante algunos ejemplos y ejercicios como se pueden resolver los sistemas de ecuaciones linealesutilizando algunos de los comandos de Matlab descritos anteriormente.

Ejemplo 1 Consideremos el sistema,

2x− y + z = 3x + y = 3

y − 3z = −7

entonces, siguiendo la notacion anterior,

A =

2 −1 11 1 00 1 −3

, x =

xyz

y b =

33−7

Como se trata de un sistema con solucion unica, ya que el determinante de A es distinto de cero,

>>det(A)ans =

-8

Una forma de resolver el sistema es escribir la matriz orlada (o ampliada)

>>Ab=[A b]

y hacer rref(Ab) con lo que obtenemos

1 0 0 10 1 0 20 0 1 3

es decir, la solucion es x = 1, y = 2, z = 3.Otra forma de resolver el sistema consiste en despejar x,

x = A−1b,

sin mas que escribir

Page 7: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

>>x=inv(A)*bx =

123

Hay otra forma de hacerlo, utilizando lo que en Matlab se denomina como division matricial a la izquierda:

>>x=A\bx =

123

En este caso, el resultado es el mismo, pero es diferente la forma en la que trabaja el ordenador. En este segundocaso el metodo que utiliza es el de la factorizacion LU, que es una modificacion de la eliminacion gaussiana.

Vamos a ver como resuelve Matlab, internamente, el sistema cuando se utiliza la opcion: >>x=A\b. El procesose puede dividir en tres etapas:

1) Calcula una matriz triangular inferior L, una matriz triangular superior U y una matriz de permutacion Ptales que PA = LU . P es simplemente la matriz identidad I con sus filas cambiadas de orden.

2) Resuelve Ly = Pb.3) Por ultimo, se resuelve Ux = y.La primera etapa es lo que se conoce con el nombre de factorizacion LU y es el paso mas importante.Por lo tanto, en Matlab serıa equivalente utilizar:

>>x=A\b

que utilizar el siguiente proceso:

>>[L,U,P]=lu(A); % Este es el comando que calcula las matrices L, U, P>>B=P*b;>>y=L\B;>>x=U\y

Ejercicio 1 Resolver el siguiente sistema utilizando los tres procedimientos anteriormente descritos y comprobarque se obtiene la misma solucion.

1 1 0 32 1 −1 13 −1 −1 2−1 2 3 −1

x1

x2

x3

x4

=

41−34

Ejercicio 2 El metodo >>x=A\b funciona si hay distinto numero de ecuaciones que incognitas utilizando el metodode los mınimos cuadrados.

Sea A una matriz m× n, el metodo busca x que minimiza

f(x) = ‖Ax− b‖2 =∑

i

((Ax)i − bi)2 =

i

j

aijxj

2

− 2bi

j

aijxj + b2i

,

para ello calculamos sus derivadas parciales

∂f

∂xk= 2

i

j

aijxj

aik − 2

i

biaik, k = 1, · · · , n

y ∂f∂xk

= 0, ∀k = 1, · · · , n si y solo si∑

ij

aijaikxj =∑

i

biaik, ∀k = 1, · · · , n

es decir >>x=A\b resuelve el sistema lineal AT Ax = AT b, que ahora tiene el mismo numero de ecuaciones n quede incognitas n y minimiza la distancia ‖Ax− b‖.

Page 8: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Cuando el rango de A es k < n, o hay menos ecuaciones que incognitas, m < n, tenemos un sistema coninfinitas soluciones (o ninguna), Matlab nos da una solucion que tiene ceros para algunas de las incognitas, almenos n− k.

Aplicando lo anterior encontrar las soluciones de los sistemas

a)

x + y = 1x− y = 12x + y = 2

b)

{x + y + z = 3x− y + z = 2

Ejercicio 3 Con otro comando, >>x=pinv(A)*b se obtiene una solucion del sistema por el metodo de los mınimoscuadrados tal que la norma euclıdea de x es la mas pequena de todas las posibles. ¿Es siempre unica esta solucioncon longitud mınima? Investigar que hace el comando >>pinv(A) para los ejemplos anteriores

Ejercicio 4 Si resolvemos el siguiente sistema con Matlab

x + y = 12x + 2y = 23x + 3y = 3

{x + 2y + 3z = 1x + 2y + 3z = 5

1. Utiliza los metodos A\b y pinv(A)*b para resolver los sistemas

2. Resuelve el sistema AT Ax = AT b con los dos metodos anteriores

3. Utiliza el comando rref para resolver los dos sistemas anteriores

4. ¿Que hemos obtenido con los comandos A\b y pinv(A)*b?

Ejercicio 5 Estudiar el sistema

x + y + z = 1x− y − z = 23x + 3y + 3z = 1−x− y + z = 1

¿Que obtenemos con los comandos A\b y pinv(A)*b? ¿Es correcto?¿Que responde Matlab al comando rref([A,b])?¿Y a los comandos x=inv(A)*b, lu(A)?¿Que conclusion sacas de esto?

Ejercicio 6 Crear las matrices A=rand(200) y b=rand(200,1). Vamos a resolver el sistema Ax = b con MatLabde varias formas, y vamos a contar el tiempo de CPU que se utiliza para resolver el sistema utilizando cuatrometodos. Para ello vamos a utilizar el comando cputime. Primero poner el contador a cero. Segundo resolver elsistema de una de las formas y tercero contar el tiempo, escribiendo

>>t=cputime; rref([A b]); trref=cputime-ty repetir la operacion resolviendolo de otra forma.>>t=cputime; metodo; tmet=cputime-t¿En cual de los tres casos se utilizan menos tiempo de cpu?

i) >>t=cputime; x=rref([A b]); trref=cputime-t

ii) >>t=cputime; x=pinv(A)*b; tpinv=cputime-t

iii) >>t=cputime; x=inv(A)*b; tinv=cputime-t

iv) >>t=cputime; x=A\b; t=cputime-t

Comprobar que

t<tinv<tpinv<trref

Nota: De aquı se concluye que, en general, para resolver sistemas, resulta mas conveniente utilizar la divisionmatricial a la izquierda, x=A\b. No resulta conveniente utilizar la pseudoinversa salvo que realmente estemos bus-cando la solucion de norma mınima.

Page 9: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

2. Sistemas homogeneos y su aplicacion al ajuste de reacciones quımi-cas

Un sistema de ecuaciones lineales

a11x1 + a12x2 + . . . + a1nxn = b1

a21x1 + a22x2 + . . . + a2nxn = b2

...am1x1 + am2x2 + . . . + amnxn = bm

con m ecuaciones y n incognitas se llama homogeneo, si todas las constantes b1, b2,...,bm son cero. Es decir, elsistema general homogeneo esta dado por

a11x1 + a12x2 + . . . + a1nxn = 0a21x1 + a22x2 + . . . + a2nxn = 0...am1x1 + am2x2 + . . . + amnxn = 0

En un sistema homogeneo, siempre existe la solucion trivial (o solucion cero):

x1 = x2 = ... = xn = 0

Por tanto, en un sistema homogeneo caben dos posibilidades:- o bien solo existe la solucion trivial;- o bien existe un numero infinito de soluciones, ademas de la trivial, llamadas soluciones no triviales.

Ejemplo 2 Un sistema homogeneo que tiene solo la solucion trivial:

3x1 + 4x2 + 6x3 = 04x1 + 5x2 + 6x3 = 03x1 + x2 − 2x3 = 0

Si escribimos la matriz ampliada

3 4 6 04 5 6 03 1 −2 0

,

y aplicamos el comando rref, obtendremos

1 0 0 00 1 0 00 0 1 0

,

lo que quiere decir que la unica solucion es la trivial,

x1 = x2 = x3 = 0.

Ejemplo 3 Un sistema homogeneo con un numero infinito de soluciones:

x1 + 2x2 − x3 = 03x1 − 3x2 + 2x3 = 0−x1 − 11x2 + 6x3 = 0

Haciendo lo mismo que en el ejemplo anterior (y poniendo el resultado en formato racional, format rational,)obtenemos

1 019

0

0 1−59

0

0 0 0 0

,

Page 10: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

lo que quiere decir que, son soluciones todas las ternas de numeros reales de la forma(−1

9x3,

59x3, x3

),

para cualquier valor de x3. En particular, para x3 = 0, obtenemos la solucion trivial; para x3 = 1, obtenemos lasolucion (−1

9,59, 1

),

para x3 = 9π, la solucion(−π, 5π, 9π).

Ejemplo 4 Un sistema homogeneo con mas incognitas que ecuaciones tiene un numero infinito de soluciones:Resolvemos el sistema: {

x1 + x2 − x3 = 04x1 − 2x2 + 7x3 = 0

como en los ejemplos anteriores, escribiendo la matriz ampliada y haciendo rref, para obtener

1 056

0

0 1−116

0

,

lo cual quiere decir que son soluciones todas las ternas de numeros reales de la forma(−5

6x3,

116

x3, x3

), ∀x3 ∈ IR

Observacion: Si en estos tres ejemplos hubieramos escrito la matriz sin ampliar y hubieramos hecho rref,habrıamos visto las soluciones mas rapidamente:

En el primer ejemplo, puesto que el determinante de la matriz del sistema no era nulo, el resultado era la matrizidentidad (solucion unica.) En el segundo caso, aparece una fila de ceros. Y en el tercer caso, ¿que sucede?: lo quesucede siempre que hay un sistema homogeneo con mas incognitas que ecuaciones, que tiene un numero infinito desoluciones.

Ejercicio 7 Resolver el sistema homogeneo

x1 − 2x2 + x3 + x4 = 03x1 + 2x3 − 2x4 = 0

4x2 − x3 − x4 = 05x1 + 3x3 − x4 = 0

Ejercicio 8 Resolver el sistema

25x1 − 16x2 + 13x3 + 33x4 − 57x5 = 0−16x1 + 3x2 + x3 12x5 = 0

−8x2 + 16x4 − 26x5 = 0

Este estudio de los sistemas homogeneos se puede aplicar al ajuste de reacciones quımicas:

Ejemplo 5 Para ajustar la reaccion

Fe2O3(s) + C(s) −→ Fe(l) + CO(g)

que se produce cuando calentamos mineral de oxido de hierro con un exceso de carbono para obtener hierro puro,procedemos de la siguiente manera:

Fe : 2x1 = x3

O : 3x1 = x4

C : x2 = x4

Page 11: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Es decir, se trata de resolver el siguiente sistema homogeneo de 3 ecuaciones con 4 incognitas (que, comoacabamos de ver, siempre tiene solucion no trivial):

2x1 − x3 = 03x1 − x4 = 0

x2 − x4 = 0(1)

O lo que es lo mismo, si consideramos x4 como un parametro (x4 = λ) tratamos de resolver el siguiente sistemade 3 ecuaciones con 3 incognitas

2x1 − x3 = 03x1 = λ

x2 = λ

obteniendo la solucionx4 = λ, x2 = λ, x1 =

λ

3, x3 = 2

λ

3De modo, que podemos decir que el sistema tiene las infinitas soluciones:

x1 =λ

3, x2 = λ, x3 = 2

λ

3, x4 = λ

para cualquier valor de λ ∈ IR.En nuestro caso, solo nos interesa la solucion de numeros enteros positivos x1, x2, x3, x4 que no tengan divisor

comun diferente de 1, es decir, para λ = 3:

x1 = 1, x2 = 3, x3 = 2, x4 = 3,

de modo que la reaccion ajustada esFe2O3 + 3C −→ 2Fe + 3CO

Ejercicio 9 Ajustar las siguientes reacciones quımicas:

1. CO2 + H2O −→ C6H12O6 + O2

2. AgNO3 + K2CrO4 −→ Ag2CrO4 + KNO3

3. Mg + HCl −→ MgCl2 + H2

Ejercicio 10 Ajustar la siguiente reaccion quımica en la que el permanganato de cromo oxidarıa violentamente ala azida de plomo:

Pb(N3)2 + Cr(MnO4)2 −→ Cr2O3 + MnO2 + Pb3O4 + NO

Ejercicio 11 Ajustar la siguiente serie de reacciones quımicas que se utilizan para producir clorato de sodio:

1. KMnO4 + HCl −→ KCl + MnCl2 + H2O + Cl2

2. Cl2 + Ca(OH)2 −→ Ca(ClO3)2 + CaCl2 + H2O

3. Ca(ClO3)2 + Na2SO4 −→ CaSO4 + NaClO3

Page 12: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Polinomios. Practica 3

1. Introduccion

Matlab maneja los polinomios como vectores cuyas componentes son los coeficientes del polinomio. Para intro-ducir un polinomio

P (x) = x3 − 2x2 + 1,

escribimos>>p=[1 -2 0 1]

Para visualizarlo con la variable independiente:>>poly2sym(p,’x’)

Para evaluarlo en un punto:>>polyval(p,4)

Tambien es posible evaluar el polinomio en una matriz:>>A=[4 4;1 0];>>polyval(p,A)>>polyvalm(p,A)

Ejercicio 1 Hemos visto que un polinomio puede evaluarse en una matriz utilizando dos comandos: polyval ypolyvalm. ¿Que hace exactamente cada uno de estos comandos? ¿Se pueden aplicar a cualquier matriz sea o nocuadrada? ¿Por que?

2. Operaciones

Ejemplo 1 Sean los polinomios P (x) = 4x5 − 8x2 − 10x + 2 y Q(x) = x2 − x + 1>>p=[4 0 0 -8 -10 2];q=[1 -1 1];

Para multiplicarlos:>>m=conv(p,q),poly2sym(m,’x’)

Para dividir P (x) entre Q(x):>>[c,r]=deconv(p,q)>>cociente=poly2sym(c,’x’)>>resto=poly2sym(r,’x’)

Ejercicio 2 ¿Que habra que hacer para sumar dos polinomios? Sumar los polinomios P (x) = x3 − 3x2 − 5x + 2 yQ(x) = 4x5 − 3x2 + 8x + 2.

Sugerencia: Sea >>p=[1 -3 -5 2]; reescribe p para igualar el tamano de los vectores p q y ası poder sumarlos>>p=[zeros(...) p];

Ejercicio 3 Dividir el polinomio P (x) = x5 − 8x4 − 10x3 + 10x2 − x + 6 entre Q(x) = x + 3. Comprobar que

Dividendo = Divisor·Cociente + Resto

Verificar que se cumple el teorema del resto, es decir, que el resto de dividir P (x) entre (x− a) es igual a P (a).

3. Raıces

Para calcular las raıces del polinomio

P (x) = x5 − 2x4 − 10x3 + 20x2 + 9x− 18

introducimos el polinomio,

Page 13: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

>>p=[1 -2 -10 20 9 -18];y escribimos:>>r=roots(p)

Tambien es posible reconstruir el polinomio a partir de sus raıces:>>p=poly(r);poly2sym(p,’x’)

Ejemplo 2 Raıces enesimas de la unidad. Se llaman raıces enesimas de la unidad a las soluciones (complejas)de la ecuacion

zn = 1

Para calcular las raıces quintas de la unidad, tenemos que calcular las raıces del polinomio P (x) = x5 − 1.Introducimos el polinomio:>>p=[1 0 0 0 0 -1]Calculamos las raıces:r=roots(p)Estas raıces se pueden representar utilizando el comando>>compass(r)

Ejercicio 4 Calcular y dibujar las raıces sextas de la unidad.

Ejercicio 5 Escribir un programa de tipo function que, tomando como dato de entrada el valor de n, calcule ydibuje las raıces enesimas de la unidad.

Con el programa anterior, calcular y dibujar el caso n = 8.

4. Graficas de polinomios

Ejemplo 3 Dibujar la grafica del polinomioy = x3 − x

en el intervalo [−2, 2].

Introducimos el polinomio:>>p=[1 0 -1 0];Generamos una tabla de valores para x:>>x=linspace(-2,2,1000);sustituimos en el polinomio:>>y=polyval(p,x);y representamos los puntos con el comando>>plot(x,y)

Ejercicio 6 Escribir un programa de tipo function que , tomando como dato de entrada el valor de n, dibuje lagrafica de la curva y = xn en el intervalo [−1, 1].

Con el programa anterior, dibujar y = x10 y el caso y = x13.

Page 14: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Graficas 2D. Practica 4

1. Introduccion

Con el programa MATLAB podemos dibujar graficas de curvas y funciones en el plano en multiples formatosy con diferentes presentaciones. Funciones en coordenadas cartesianas, dadas en forma explıcita, es decir, de laforma y = f(x); sin embargo, no se pueden dibujar directamente curvas en forma implıcita, es decir, de la formag(x, y) = 0. Tambien curvas en forma parametrica, es decir, de la forma ~r(t) = (x(t), y(t)) con a ≤ t ≤ b. Y tambiencurvas en coordenadas polares, de la forma r = r(θ) con θ1 ≤ θ ≤ θ2.

2. Comandos basicos para graficos 2D

Para dibujar una grafica 2D con MATLAB se puede utilizar el comando ezplot, por ejemplo,>>ezplot(’sin(x))Tambien se puede generar una tabla de valores para la x y para la y de la funcion a dibujar, por ejemplo,>>x=linspace(0,2*pi,30);>>y=sin(x);A continuacion utilizar un comando para dibujar, que puede ser,>>plot(x,y)El color y el estilo de las lıneas que se utilizan para hacer las graficas se pueden modificar, por ejemplo, con el

comando>>plot(x,y,’r:’)obtenemos la grafica en color rojo y punteada, en lugar de con lınea continua. Para ver los colores y estilos

disponibles consultar el comando plot:>>help plot

3. Coordenadas cartesianas

Ejemplo 1 Dibujar la grafica de la funcion

y =

x2 si x < 00 si 0 < x < 1√

3(x− 1) si x > 1

Creamos una tabla de valores:>>x=linspace(-3,3,1000);>>y=x.^2.*(x<0)+0*((x>0)&(x<1))+sqrt(3*(x-1)).*(x>1);Y ahora utilizamos alguno de los comandos de dibujo, por ejemplo,>>plot(x,y,’m’)que producira una grafica en color magenta.

Ejercicio 1 Dibujar las graficas de las siguientes funciones eligiendo, en cada caso, una tabla de valores adecuadapara que aparezcan los aspectos mas representativos de la funcion:

a) f(x) =

{x2 si x < 0−1 si x ≥ 0

b) f(x) =

−x si x < −11 si 0 < x < 2−x2 si x > 2

c) f(x) =

√1− x si x < −1

1− x2 si −1 < x < 1√x− 1 si x > 1

Page 15: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

4. Ecuaciones parametricas

Ejemplo 2 Dibujar la grafica de la curva

~r(t) = (cos(t), sen(t)) ; −π ≤ t ≤ π

En primer lugar generamos los valores de t en el intervalo indicado,t=linspace(-pi,pi,100);Y ahora lo podemos dibujar:>>plot(cos(t),sin(t))

Ejercicio 2 Dibujar las curvas en parametricas siguientes, a)~r(t) = (2 cos3 t, 2 sen3 t); −π ≤ t ≤ π

b)~r(t) = (3 sen t, 2 sen(2t)); −π ≤ t ≤ π

c)~r(t) =(

t

π

(12(

t

π)2 − 9

),

(((

t

π)2 − 1)16(

t

π)2 + 2

)); −3 ≤ t ≤ 3

d)~r(t) =(

32

cos t(cos t + 1), 2 sen(2t))

; −π ≤ t ≤ π

e)~r(t) = (sen(2t) + sen t,− cos(2t)− cos t); −π ≤ t ≤ π

5. Coordenadas polares

Ejemplo 3 Dibujar la grafica de

r = 2− 4 cos(θ), −π ≤ θ ≤ π

En primer lugar generamos los valores del angulo tetha:>>tetha=linspace(-pi,pi,100);Calculamos los valores de r:>>r=2-4*cos(tetha);Y dibujamos la grafica,>>polar(tetha,r)

Ejercicio 3 Dibujar las graficas de las siguientes funciones, dadas en coordenadas polares:a)r = 7− 7 sen(θ); −π ≤ θ ≤ π

b)r = 3− 6 sin(θ); −π ≤ θ ≤ π

c)r = sen(6θ); −π ≤ θ ≤ π

d)r = cos(8θ); −π ≤ θ ≤ π

Page 16: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Graficas 3D Practica 5

Con MATLAB se pueden hacer graficas de funciones de dos variables en el espacio, es decir, funciones de laforma z = f(x, y) (forma explıcita). Tambien se pueden dibujar, en el espacio, curvas y ciertas superficies.

1. Curvas en el espacio

Se generan de una manera similar a las curvas en el plano, con la diferencia de que aquı se utiliza el comandoplot3

Ejemplo 1 Dibujar la curva~r(t) = (sen(t), cos(t), t) 0 ≤ t ≤ 4π

y sobre ella los vectores velocidad.Generamos los valores de t:>>t=linspace(0,4*pi,500);Y ahora podemos utilizar el comando plot3 que nos da el dibujo completo:>>plot3(sin(t),cos(t),t)

Ejercicio 1 Representar las curvas siguientes en los intervalos indicados:a)~r(t) = (2 cos3 t, 2 sen3 t, t) − 4 ≤ t ≤ 3.

d)~r(t) = (et4 sen(2t), e

t4 cos(2t),

t

4) − 10 ≤ t ≤ 4,8.

2. Graficos de funciones z = f(x, y)

Para dibujar graficos de funciones de dos variables z = f(x, y), al igual que para funciones de una variable, enprimer lugar hay que generar tablas de valores para las variables x e y. En realidad ahora lo que tenemos que haceres generar un mallado sobre un rectangulo del plano XY . Para eso se utiliza el comando meshgrid.

Ejemplo 2 Dibuja la grafica de la funcion

z = e−x2−y2

en la region del plano D = {(x, y)/− 2 ≤ x ≤ 2, − 3 ≤ y ≤ 3}Habra que efectuar los pasos siguientes:Generamos el mallado>>[x,y]=meshgrid(-2:.2:2,-3:.2:3);Sustituimos en la funcion para calcular los valores de z:>>z=exp(-x.^2-y.^2);Y ahora podemos dibujar el grafico con alguno de los siguientes comandos:>>plot3(x,y,z)>>mesh(x,y,z)>>surf(x,y,z)Para conseguir efectos de sombreados y colores diferentes se pueden consultar todas las posibilidades de los

comandos colormap y shading. Algo que resulta tambien interesante es anadir una escala de colores al dibujoque nos permite conocer las alturas (coordenada z) de los diferentes puntos de la grafica; esto se consigue con elcomando colorbar (despues de dibujada la grafica).

Las longitudes de los ejes coordenados tambien se pueden modificar con el comando:>>axis([xmin xmax ymin ymax zmin zmax])

Ejemplo 3 Representar la grafica de la funcion

z = x2 + y2

Dibujando algunas curvas de nivel.Creamos el mallado:>>[x,y]=meshgrid(-2:.1:2);

Page 17: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Sustituımos en la funcion, para calcular los valores de z:>>z=x.^2+y.^2;Ahora podemos dibujar la grafica utilizando alguna de los comandos descritos en el punto relativo a los comandos

basicos de 3D.Las curvas de nivel se pueden hacer utilizando alguno de los comandos siguientes:>>contour(x,y,z,10) % dibuja 10 curvas de nivel>>contour(x,y,z,1.38) % dibuja la curva de nivel z=1.38>>contour3(x,y,z,10) % dibuja 10 curvas de nivel en el espacio

Ejercicio 2 Escribir un fichero tipo script con nombre missuperficies.m que represente las graficas de lassiguientes funciones de 2 variables, utilizando alguno de los comandos descritos anteriormente.

a)z = −√|xy|

b)z = e−(x2+y2)

Ejercicio 3 Escribir un fichero tipo script con nombre miscurvasdenivel2D.m que dibuje las curvas de nivel delas funciones del ejercicio anterior, utilizando alguno de los comandos descritos anteriormente.

3. Superficies pVT

Las ecuaciones de estado de los gases son, desde un punto de vista matematico, ecuaciones tipo z = f(x, y)en las que las variables cartesianas (x, y, z) son sustituidas por las variables termodinamicas temperatura (T ),volumen molar (v = V/n) y presion (p).

Ejemplo 4 La ecuacion de los gases ideales

p =R T

v

puede dibujarse de manera analoga a como lo hemos hecho con otras funciones anteriormente. Primero deberemosgenerar un mallado:

>>[T,v]=meshgrid(0:4:200,2:2:20);A continuacion sustituimos los valores en la funcion para calcular los valores de la presion:>>p=0.082*T./v;Y por ultimo pintamos la grafica resultante con el comando mesh o con cualquier otro:>>mesh(v,T,p)

3.1. Isotermas del Gas Ideal

En muchas ocasiones las superficies p v T del gas no son las mas interesantes debido a la dificultad de ver elcomportamiento segun las variables. Por este motivo se suelen utilizar diagramas en dos dimensiones en los quese muestran las variaciones de la presion (eje Y ) respecto al volumen molar (eje X) para valores constantes de latemperatura. A estas curvas se las denomina isotermas.

Obtenidos los valores de las variables termodinamicas p, v y T con la ecuacion de estado resulta muy sencilloen MATLAB dibujar las isotermas. Basta recordar que el comando contour(x,y,z,N) dibujaba N curvas en elplano (x, y) para valores de z constantes. Ası se procede de la siguiente manera:

>>contour(v,p,T,10)El resultado sera una grafica con 10 isotermas en las que se observa la variacion de la presion (eje Y ) respecto

a la variacion del volumen molar (eje X) para valores constantes de la temperatura.Variando los parametros del mallado podremos cambiar la region de la grafica dibujada, siempre manteniendolos

dentro de los lımites admisibles. (Nunca usar temperaturas negativas, etc.)

Ejercicio 4 Cambia el orden en el que se escriben los argumentos en el comando contour() . ¿Que obtienessi escribes contour(v,T,p,10)? ¿Y que obtienes si escribes contour(T,p,v,10)? ¿Cual es su significado ter-modinamico?

3.2. Otras ecuaciones de Estado

La ecuacion de estado de los gases ideales, si bien resulta muy facil de manejar, no es una ecuacion validapara ningun gas. Por lo general las moleculas de cualquier gas siempre van a sufrir interaccion entre ellas, y estooriginara que su comportamiento se desvıe del correspondiente a un gas ideal.

Para obtener comportamientos mas parecidos al de los gases reales se han propuesto numerosas ecuaciones deestado que en su formulacion incluyen, en cierta medida, este tipo de interacciones.

Page 18: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

La mas conocida fue introducida por J. D. Van der Waals en 1873:

p =RT

v − b− a

v2,

donde a y b son dos constantes positivas cuyo valor se puede ajustar y dependen del gas. Los mejores valores seobtienen tomando:

a =27R2T 2

c

64pc

b =RTc

8pc

donde Tc y pc son los valores de la temperatura y la presion en el punto crıtico. El parametro b se denominaparametro de repulsion y representa un volumen mınimo del gas, por debajo del cual resulta imposible comprimirlodebido al tamano de sus moleculas, mientras que el parametro a se denomina parametro de atraccion y nos da unacorreccion de la ecuacion del gas ideal debido a la atraccion entre sus moleculas.

Otra ecuacion muy utilizada fue introducida en 1949 por O. Redlich y N. S. Kwong

p =RT

v − b− a

v(v + b)T 1/2

donde de nuevo a y b son constantes cuyo valor depende del gas y cuyo mejor valor es:

a =0,42748R2T

5/2c

pc

b =0,08664RTc

pc

siendo Tc y pc los valores de la temperatura y la presion en el punto crıtico. La principal diferencia con la ecuacionanterior esta en que el termino que incluye la interaccion con las demas partıculas del gas tiene ademas unadependencia con la temperatura.

Ejercicio 5 En la tabla siguiente se muestran los valores crıticos de la temperatura, presion y volumen molar paradiferentes sustancias.

Sustancia Tc (K) pc (atm) vc (l/mol)Dioxido de Carbono (CO2) 304.2 72.9 0.094Oxıgeno (O2) 154.4 49.7 0.074Agua (H2O) 647.4 218.3 0.056Helio (He) 5.2 2.26 0.060

Crea un programa function que realice los sigientes calculos: para cada una de las sustancias anteriores, obtenlos parametros a y b de la ecuacion de Van der Waals y dibuja una grafica con 8 isotermas. Compara las isotermasobtenidas con las correspondientes a la ecuacion de los gases ideales, ¿que diferencias hay?.

Ejercicio 6 Repite el ejercicio anterior para la ecuacion de Redlich-Kwong.

Ejercicio 7 Tomando como valores los de vc y Tc de la tabla anterior se puede evaluar la presion en cada una delas tres ecuaciones de estado anteriores. De esta manera es posible obtener una estimacion teorica para pc en cadaecuacion.

Haz los calculos para el CO2, el O2, el H2O y el He. Rellena la tabla siguiente comparandolos con el exper-imental. ¿Porque no se obtiene el valor de pc experimental? (a pesar de que ha sido usado para calcular a y b).¿Que ecuacion estima mejor cada uno de los valores experimentales?. ¿Cual de las ecuaciones lo estima peor?.¿Sabes decir porque?.

Sustancia pc Exp. pc Gas Id. pc V-W pc R-KCO2 72.9O2 49.7

H2O 218.3He 2.26

Page 19: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

4. Orbitales del atomo de Hidrogeno

El movimiento de un electron alrededor de un nucleo de Hidrogeno viene descrito, siguiendo un planteamientocuantico, por unas funciones de onda Ψn,l,m(x, y, z) cuya norma al cuadrado describe la probabilidad de encontrardicho electron en un punto del espacio (x, y, z) y dentro de un determinado orbital determinado por los numeroscuanticos n, l, m.

Al numero cuantico n se le llama numero cuantico principal y determina el nivel de energıa correspondiente alelectron En = −1/(2n2). Conviene recordar que a diferencia de la descripcion clasica, un electron no puede tenercualquier energıa dentro de ese potencial sino solo algunos valores puntuales que forman el espectro de energıa.Los distintos valores de n = 1, 2, 3, ... determinan la capa en la que se encuentra el electron, lo que a su vezestara relacionado con un sinfın de propiedades quımicas del elemento.

El numero cuantico l se le conoce como numero cuantico azimutal y determina en momento angular del electron.Los valores permitidos para el numero l van desde l = 0 hasta l = n− 1. Los distintos valores del numero azimutalvan a determinar los diferentes orbitales existentes dentro de cada capa. Ası l = 0 se corresponde con el orbital s,l = 1 con el orbital p, l = 2 con el d, etc.

El numero m llamado numero cuantico magnetico determina los distintos estados para un valor de l. Determinan,en cierto modo, la orientacion y simetrıa del orbital en cuestion. Sus valores van desde m = −l hasta m = l. Losdiferentes valores de m originan los diferentes suborbitales. Ası para l = 1, (orbital p) tenemos que m = −1corresponde al orbital py, m = 0 al orbital pz y m = 1 al orbital px. Para l = 2 tenemos los suborbitales dxy

(m = −2), dyz(m = −1), dz2(m = 0), dxz(m = 1), d(x2−y2)(m = 2).Por ultimo existe un cuarto numero cuantico, que no se tiene en cuenta en la descripcion de los orbitales,

conocido como numero cuantico de spin cuyos valores pueden ser de s = ±1/2. Este numero cuantico hace posibleque en cada orbital coexistan dos electrones que solo se diferencian en este numero cuantico de spin.

4.1. Funciones de Onda

Matematicamente hablando, las funciones de onda descritas anteriormente Ψ(x, y, z) son las soluciones de unaecuacion diferencial en derivadas parciales conocida como ecuacion de Schrodinger estacionaria

− h

2m∇2Ψ(x, y, z) + V (x, y, z)Ψ(x, y, z) = EΨ(x, y, z)

donde V (x, y, z) es el potencial de Coulomb correspondiente a la carga del nucleo, E es la energıa del sistema y ∇es el operador gradiente y por tanto

∇2 =∂2

∂x2+

∂2

∂y2+

∂z2.

Las soluciones de esta ecuacion se obtienen realizando una transformacion a coordenadas polares y posterior-mente una separacion de variables de manera que para un determinado nivel de energıa En la funcion de onda sepuede descomponer de la forma siguiente

Ψn,l,m = Rn,l(r)Yl,m(θ, φ),

donde Rn,l es una componente radial de la funcion y Yl,m es una componente direccional.

Escritas en coordenadas cartesianas, las funciones de onda correspondientes a los tres primeros niveles de energıason (en unidades de a0):

Ψ1,0,0 =e−r

√π

Ψ2,0,0 =(1− r

2

) e−r/2

√8π

Ψ3,0,0 =(2r2 − 18r + 27)

81e−r/3

√3π

Ψ2,1,−1 =y

2e−r/2

√8π

Ψ2,1,0 =z

2e−r/2

√8π

Ψ2,1,1 =x

2e−r/2

√8π

Ψ3,1,−1 =8

27√

8πy

(1− r

6

)e−r/3 Ψ3,1,0 =

827√

8πz

(1− r

6

)e−r/3 Ψ3,1,1 =

827√

8πx

(1− r

6

)e−r/3

Ψ3,2,−2 =2

81√

2πx y e−r/3 Ψ3,2,−1 =

281√

2πy z e−r/3 Ψ3,2,0 =

181√

3π(3z2 − r2) e−r/3

Ψ3,2,1 =2

81√

2πx z e−r/3 Ψ3,2,2 =

181√

2π(x2 − y2) e−r/3

donde r =√

x2 + y2 + z2 es el radio. Las componentes angulares se ponen de manifiesto en la dependencia en cadauna de las variables cartesianas de las funciones de onda descritas.

Page 20: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Ejemplo 5 Curvas de nivel del orbital 2px. Es imposible representar graficamente los orbitales ya que altratarse de funciones de IR3 sobre IR necesitarıamos un espacio de 4 dimensiones para representarlo. Una de lasposibilidades para hacernos una idea de los orbitales resulta el dibujar curvas de nivel de los mismos. En el presenteejemplo vamos a representar las curvas de nivel del orbital 2px en el corte con el plano z = 0. Lo mismo se puedeintentar para otros valores de z, x o y.

Para ello necesitaremos en primer lugar definir un fichero con la correspondiente funcion de onda, escribiendoen un fichero:

function Psi=FdOn211(x,y,z)%% Funcion de Onda n=2 l=1 m=1 % orbital 2px%r=sqrt(x.^2+y.^2+z.^2);Psi=x/2.*exp(-r./2)/sqrt(8*pi);

y lo guardamos con el nombre FdOn211.m. Esto nos permitira evaluar la funcion de onda para cada punto (x, y, z)del espacio. A continuacion escribe un fichero de nombre miscurvasdenivel3D.m que

1. defina un mallado de valores de x e y, para valores comprendidos entre −20a0 y 20a0:

>>[x,y]=meshgrid(-20:.1:20);

2. evalue la funcion Ψ(x, y, 0) para obtener los puntos sobre los que dibujar las curvas de nivel:

>>Psi=FdOn211(x,y,0);

3. dibuje las curvas de nivel con el comando contour:

>>contour(x,y,Psi)

4. Si queremos dibujar mas curvas de nivel basta anadir el numero de curvas deseadas

>>contour(x,y,Psi,16)

Ejercicio 8 Siguiendo el proceso descrito anteriormente dibuja las curvas de nivel de los orbitales

1. Ψ3,1,1 → Orbital 3px

2. Ψ3,2,−2 → Orbital 3dxy

3. Ψ3,2,2 → Orbital 3d(x2−y2)

Ejemplo 6 Escribe en un fichero script de nombre unasuperficiesdenivel.m que dibuje una superficie denivel para el orbital atomico Ψ3,2,0.

Figura 1: Orbital 3dz2

Page 21: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

[x,y,z]=meshgrid(-20:0.5:20);Psi=FdOn320(x,y,z);m=min(Psi(:));M=max(Psi(:));clf %clear figureisovalue=(M+m)/2; %valores de Psi=isovaluefv = isosurface(x,y,z,Psi,isovalue); % La superficie de nivelhpatch = patch(fv);isonormals(x,y,z,Psi,hpatch);Alphalevel=0.5;set(hpatch,’FaceAlpha’,Alphalevel,’FaceColor’,[0 0 1],’EdgeColor’,’none’)daspect([1,1,1])view(3);axis tightcamlight left;

Ejemplo 7 Escribe en un fichero script de nombre missuperficiesdenivel.m que dibuje una serie de super-ficies de nivel para el orbital atomico Ψ3,2,0.

Figura 2: Orbitales 3dz2

[x,y,z]=meshgrid(-20:0.5:20);Psi=FdOn320(x,y,z);m=min(Psi(:));M=max(Psi(:));n=5color=[1 1 0;1 0 1; 0 1 1;0 1 0;1 0 0;0 0 1; 0 0 0]; %colores de las superficiesclf %clear figurefor i=1:nisovalue=m+i*(M-m)/n; %valores de Psi=isovaluefv = isosurface(x,y,z,Psi,isovalue); % La superficie de nivelhpatch = patch(fv);isonormals(x,y,z,Psi,hpatch);Alphalevel=0.5;set(hpatch,’FaceAlpha’,Alphalevel,’FaceColor’,color(i,:),’EdgeColor’,’none’)daspect([1,1,1])view(3);axis tight

Page 22: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

camlight left;end

Ejercicio 9 Repite el ejemplo anterior para las funciones de onda citadas en el ejercicio anterior.

Ejercicio 10 Segun la teorıa cuantica, la determinacion segun los ejes cartesianos de los tres orbitales p no esmas que una de las muchas soluciones posibles, ya que la colocacion de los ejes es arbitraria. Por lo tanto los tresorbitales p juntos deben tener momento angular total cero, y el aspecto del orbital debe ser esferico. Compruebaesta afirmacion pintando en la misma figura los tres orbitales en conjunto.

4.2. Hibridacion

Segun la teorıa elemental de ecuaciones diferenciales, si una ecuacion diferencial tiene dos soluciones conocidasx1 y x2, entonces sera solucion cualquier combinacion lineal de ambas. Esto tambien es extensible al caso quenos ocupa, de manera que dadas un conjunto de orbitales soluciones de la ecuacion de Schrodinger, cualquiercombinacion lineal de estas sera un nuevo orbital solucion de la ecuacion de Schrodinger.

En el caso que nos ocupa, este fenomeno se conoce como h¯ibridacion y, aunque puede darse entre cualquier

grupo de orbitales, son especialmente conocidos los que se dan entre los orbitales s y p, y en concreto la hibridacionsp3 que se produce especialmente en el carbono originando cuatro orbitales que se distribuyen en el espacio enforma de tetraedro.

Los orbitales hıbridos resultantes de dicha combinacion lineal son:

[sp3]1 = 12 (s + px + py + pz)

[sp3]2 = 12 (s− px + py − pz)

[sp3]3 = 12 (s− px − py + pz)

[sp3]4 = 12 (s + px − py − pz)

donde los orbitales s = Ψ2,0,0, px = Ψ2,1,1, pz = Ψ2,1,0 y py = Ψ2,1,−1. Igualmente se pueden obtener hibridacionessp3 con orbitales de la capa 3, 4, etc.

Ejercicio 11 Dibuja los orbitales hıbridos [sp3]1 y [sp3]4.

4.3. Orbitales Moleculares

Cuando dos atomos se aproximan el uno al otro hasta situarse convenientemente cerca, sus orbitales sufren unsolapamiento de manera que se produce algo parecido al fenomeno de hibridacion comentado anteriormente. Deesta forma, de dos orbitales que se solapen A y B, se forman otros dos, uno de menor energıa llamado enlazanteΨE y otro de mayor energıa llamado antienlazante ΨA.

ΨE = N(A + B) ΨA = N(A−B)

donde N es una constante de normalizacion. Los orbitales A y B son de atomos diferentes, y por tanto seevaluaran en puntos diferentes del espacio. Segun la teorıa de los Orbitales Moleculares, los electrones se situandentro de estos orbitales que forman las moleculas que conocemos. Si el solapamiento se realiza siguiendo ladireccion del eje de simetrıa de los orbitales, al orbital molecular resultante se le llama orbital σ, mientras que siel solapamiento se realiza de forma perpendicular a los ejes de simetrıa se le llama orbital π.

El solapamiento de muchos orbitales originara en los metales dos macro-orbitales que se extienden a todos losatomos de la red metalica. Se llaman bandas de conduccion y de valencia.

Ejemplo 8 Para dibujar los orbitales moleculares enlazante y antienlazante, resultado del solapamiento de dos or-bitales 2pz situados a una distancia de 6a0 segun el eje X habra que modificar el script llamado missuperficiesdenivel.mde manera que evalue el orbital enlazante

Psi=FdOn210(x,y,z)+FdOn210(x+6,y,z);o el antienlazantePsi=FdOn210(x,y,z)-FdOn210(x+6,y,z);.Nota: Puedes rotar las figuras resultantes para apreciar mejor los detalles.

Ejercicio 12 Dibuja cada uno de los siguientes orbitales moleculares:a) σE = 1s + 1s situados a una distancia de 2a0 en el eje X.b) σA = 1s− 1s situados a una distancia de 2a0 en el eje X.c) σE = 2px + 2px situados a una distancia de 8a0 en el eje Y.d) σA = 2px − 2px situados a una distancia de 8a0 en el eje Y.

Page 23: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Figura 3: Orbitales πE y πA.

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Calculo Simbolico. Practica 6

1. Introduccion

En esta practica vamos a a utilizar los comandos del programa Matlab de Calculo Simbolico. En particularvamos a ver como se pueden calcular lımites, derivadas e integrales.

2. Lımites

Ejemplo 1 Calculo de lımites.Queremos calcular el lımite siguiente:

lımx→3

x2 − 33x5 + 5x

Procedemos de la manera siguiente:Definimos la variable simbolica x: >>syms xEscribimos >>l=limit((x^2-3)/(3*x^5+5*x),x,3)Ejecutamos el comando, nos dara el resultado que en este caso es

1124

Ejercicio 1 Calcular los siguientes lımites:

a) lımx→0

ex − 1log(1 + x)

b) lımx→0

x + sen(πx)x− sen(πx)

c) lımx→0

(ex + x)1x

d) lımx→0

xeax − x

1− cos(ax), (a ∈ IR)

e) lımx→π

3

sen(3x)1− 2 cos x

f) lımx→∞

(x4 + 1)1

ln x

3. Derivadas

Ejemplo 2 Queremos calcular la derivada tercera de la funcion:

y = 4x sen x

Escribimos la funcion simbolica, despues de haber definido la variable x.

Page 24: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

>>y=4*x*sin(x)Escribimos el comando >>diff(y,3)Y nos debe dar como resultado:

−4x cos x− 12 sen x

Si hacemos:>>d3=diff(y,3)>>subs(d3,x,pi/2)

Obtenemos como respuesta −12, es decir, el valor de la derivada tercera de la funcion y en x =π

2.

Ejercicio 2 Calcular las derivadas primeras y segundas de las siguientes funciones en el punto x = 2:

a)f(x) =(

x2

2− x

3

)(7− 5x6)2

b)f(x) = (7x− 5)24x3 + 3x

(x− 1)2

c)f(x) =dx2 + ex + f

x2

a+

x

b+

1c

d)f(x) = (x− a)(x− b)(x− c)

e)f(x) = (x + a)13 (x− a)

−13

f)f(x) =√

1 + (x2 − 7)1/2

4. Integrales

Ejemplo 3 Queremos calcular la integral indefinida∫

x

x2 + 1dx

Despues de definir la variable simbolica x, definimos la funcion:>>y=x/(x^2+1)Calculamos la integral con el comando >>int(y)Nos dara la solucion:

12

ln(x2 + 1)

Ejercicio 3 Calcular las siguientes integrales indefinidas:

a)∫

log x√x

dx

b)∫

arctg√

xdx

c)∫

a

x2 + b2dx

d)∫

x + 1x2 + 4x + 5

dx

e)∫

x2

x2 − x + 1dx

f)∫

x2

x2 + x + 1dx

Page 25: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Ejemplo 4 Queremos calcular la integral definida:∫ 1

0

x

x2 + 1dx

Una vez definida la funcion simbolica, como en el ejemplo anterior, escribimos el comando>>int(y,0,1)Que nos ofrece la solucion simbolica:1/2*log(2)Si queremos el resultado en forma numerica lo haremos con el comando quad y una funcion definida o bien con

un fichero function.m o bien del siguiente modo>>F = inline(’x./(x.^2+1)’);

>> Q = quad(F,0,1)

Q =0.3466

Ejercicio 4 Calcular las integrales que se calcularon en el ejercicio anterior, pero haciendolas todas ellas definidasen el intervalo [10, 12], ofreciendo el resultado en forma algebraica y en forma numerica.

Ejemplo 5 Integrales Multiples. Si queremos el resultado de∫ 2

−3

(∫ 1

0

(x2 + y) dx

)dy

en forma numerica (para lımites constantes) lo haremos con el comando dblquad y una funcion definida o biencon un fichero function.m o bien

>> F=inline(’x.^2+y’)o bien>> F=inline(’x.^2+y’,’x’,’y’)

>> Q = dblquad(F,0,1,-3,2)

Q =

-0.8333

Se pueden calcular integrales con lımites variables haciendo que el integrando sea cero fuera de la region. Porejemplo,

∫ 2

−3

(∫ 10−y2

0

(x2 + y) dx

)dy

o bien>>F = inline(’(x.^2+y).*(x<=10-y^2).*(x>=0)’);

>> Q = dblquad(F, 0, 10, -3, 2)

Q =

931.0119

En particular, el volumen de una semiesfera se puede calcular>>F = inline(’sqrt(max(1-x.^2-y.^2,0))’,’x’,’y’); Q = dblquad(F, -1, 1, -1, 1)Si queremos calcular integrales triples en forma numerica (para lımites constantes) lo haremos con el comando

triplequad y una funcion definida o bien con un fichero function.m o bien como en el ejemplo anterior.

Ejercicio 5 Calcular las siguientes integrales multiples:

a)∫ 2

−3

∫ 1

0

(x2 + y)dxdy

Page 26: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

b)∫ 1

0

∫ (1−x2)12

0

dydx

c)∫ 1

−1

∫ |x|

−2|x|ex+ydydx

d)∫ 1

0

∫ (1−y2)12

0

dxdy

e)∫ 1

−1

∫ 1

−1

∫ 1

−1

(x2 + y2 + z2)dxdydz

f)∫ 1

0

∫ z

0

∫ y

0

(xy2z3)dxdydz

g)∫ 1

0

∫ y

0

∫ x√3

0

x

x2 + z2dzdxdy

h)∫ ∞

−∞

∫ ∞

−∞e−x2−y2

dxdy

i)Sabiendo que∫ ∞

0

∫ y

0

xe−y3dxdy =

16, calcula una aproximacion nuerica. ¿Que ocurre?.

Comprueba que

>> Q1 = dblquad(F, 0, 1, 0, 10)

Q1 =

0.1481

>> Q2 = dblquad(F, 1, 10, 0, 10)

Q2 =

0.0186

>> Q1+Q2-1/6

ans =

-6.1393e-006

5. Polinomios de Taylor

Ejemplo 6 Calcular el Polinomio de Taylor de grado 6 de la funcion f(x) = sin(x) en x = π2 .

>>taylor(sin(x),pi/2,6)ans=

1-1/2*(x-1/2*pi)^2+1/24*(x-1/2*pi)^4

Pero tambien podemos hacer >>taylortool y seguir las indicaciones.

Ejercicio 6 Sea la funcion f(x) = ex:a) Calcular los polinomios de McLaurin de grados n=2,4,10 y representarlos, utilizando ezplot, junto a la

grafica de la funcion.b) Calcular los polinomios de Taylor en torno a x = 1 para los grados n=2,4,10 y representarlos junto a la

grafica de la funcion.

Page 27: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Ejercicio 7 Sea la funcion f(x) = sen(x):a) Calcular los polinomios de McLaurin de grados n = 3, 5, 11 y representarlos junto a la funcion.b) Calcular los polinomios de Taylor en x = π

2 para los grados n = 3, 5, 11 y representarlos junto a la funcion.c) Utilizar el polinomio de McLaurin con n = 3 y el polinomio de Taylor, tambien con n = 3, en torno a x = π

2para calcular aproximadamente en valor de sen(0,1). Compararlo con los valores reales. Lo mismo con el valor desen(1,5). ¿En que casos nos se obtiene una mejor aproximacion? ¿Por que?

Ejercicio 8 Investigar que hace el comando >>funtoolHacer help y resolver el problema que se plantea en el: (“The Demo button poses the following challenge...”)

Page 28: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Analisis de Datos Practica 7

1. Mınimos Cuadrados.

El Metodo de ajuste por Mınimos Cuadrados sirve para encontrar una funcion y = f(x, α1, α2, . . . , αm), en laque habra que calcular los parametros α1, α2, . . . , αm. Esta funcion debe ser la que se ajuste lo mejor posible a unatabla de valores que relaciona las dos variables x e y obtenida experimentalmente:

x x1 x2 . . . xn

y y1 y2 . . . yn

Para calcular los parametros se impone la condicion de que sea mınima la funcion

S(α1, α2, . . . , αm) =n∑

i=1

[f(xi, α1, α2, . . . , αm)− yi]2

Como S(α1, α2, . . . , αm) es una funcion de m variables, una condicion necesaria para que tenga un valor extremoen un punto es que sus derivadas parciales en ese punto sean todas nulas. De aquı obtenemos un sistema de mecuaciones, con m incognitas:

∂S

∂α1= 0,

∂S

∂α2= 0, . . . ,

∂S

∂αm= 0

cuyas soluciones, los parametros α1, α2, . . . , αm nos indican como es la funcion que mejor se ajusta a los datos,es decir, f(x, α1, α2, . . . , αm).

La funcion f(x, α1, α2, . . . , αm) puede ser de cualquier tipo, teoricamente, sin embargo, en la practica, conprogramas como MATLAB (o Matlab) solo se pueden calcular (directamente) cuando la funcion es un polinomio.En otros casos, que veremos en los ejercicios, habra que modificar ligeramente el problema para que se pueda tratarcon el ordenador.

Para realizar estos calculos MATLAB dispone del comando polyfit. Veamos en un ejemplo como se puedeajustar una recta con Mınimos Cuadrados:

Ejemplo 1 Dada la tabla de valores,

x 1 2 3 4y 2,1 4,3 6 7,8

Encontrar la funcion de la forma y = ax + b que mejor se ajuste a los datos.Como se trata de una funcion polinomica se puede hacer directamente.Introducimos primero la tabla de valores en dos variables:>>x=[1 2 3 4]>>y=[2.1 4.3 6 7.8]El comando a utilizar es polyfit(x,y,k), donde k es el grado del polinomio que queremos obtener. Por lo

tanto para obtener una recta k = 1:>>c=polyfit(x,y,1)Que nos da como resultado los coeficientes de la recta:

c =

1.8800 0.3500

Es decir, que la recta que hemos encontrado es,

y = 1,88x + 0,35

Para representar la informacion obtenida graficamente:Primero dibujamos la tabla de valores, por ejemplo:>>plot(x,y,’*’)De esta forma conseguimos que dibuje solo los puntos, con asteriscos o con cualquier otro formato.

Page 29: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Para dibujar la recta, lo hacemos como para dibujar cualquier funcion. Generamos una tabla, (que llamaremoscon un nombre diferente de x para no borrar la tabla de los datos del problema):

>>xp=linspace(1,4,20);Para para calcular los valores de xp en la recta y = 1,88x + 0,35 podemos utilizar el comando polyval que

evalua el polinomio utilizando los coeficientes, que tenıamos en la variable c:>>yp=polyval(c,xp);>>hold on % para mantener el dibujo anteriorY, por ultimo,plot(xp,yp)

1 1.5 2 2.5 3 3.5 42

3

4

5

6

7

8

y=1.88x+0.35

Figura 4: Tabla y Recta y = 1,88x + 0,35

El error que se comete al aproximar la funcion empırica (tabla inicial) por la funcion teorica (recta) se puedecuantificar de varias formas.

Una manera es precisamente calcular la suma de las desviaciones en cada punto de la tabla al cuadrado, esdecir, el valor de la funcion: S(α1, α2, . . . , αm):

Primero calculamos los valores de f(xi, α1, α2, . . . , αm):

>>fxi=polyval(c,x)

fxi =

2.2300 4.1100 5.9900 7.8700

Y ahora sustituimos en la formula:

>>error=sum((fxi-y).^2)

error =

0.0580

Otra forma consiste en calcular lo que se llama Error Cuadratico Medio, que viene dado por la expresion:

ε =

√√√√ 1n

n∑

i=1

[f(xi, α1, α2, . . . , αm)− yi]2

Para calcularlo:

>>n=length(x) % calcula el n’umero de t’erminosn =

4

>>errorcm=sqrt(sum((fxi-y).^2)/n)

Page 30: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

errorcm =0.1204

Por ultimo, se pueden utilizar los codigos que llevan incorporados los comandos polyfit y polyval para obtenerun intervalo de confianza al 95% en el que se encuentra cada yi. Veamos en que consiste:

Primero volvemos a utilizar el comando polyfit, de una forma diferente:

>>[c,s]=polyfit(x,y,1)c =

1.8800 0.3500s =

R: [2x2 double]df: 2

normr: 0.2408

s es la estructura con la que se va a calcular el error. Ahora volvemos a utilizar polyval, pero tambien modi-ficado:

>>[fxi,delta]=polyval(c,x,s)fxi =

2.2300 4.1100 5.9900 7.8700delta =

0.2220 0.1942 0.1942 0.2220

Hemos obtenido, en cada xi, un intervalo de confianza al 95%, [fxi-2*delta,fxi+2*delta], dentro del cualse encuentra el valor yi, i. e.

P(|f(xi)− yi| ≤ 2δi

)= 0,95

donde P denota la probabilidad.Si representamos la grafica siguiente se entenderan de manera grafica los calculos que acabamos de realizar.>>plot(x,y,’*’,x,fxi,’g-’,x,fxi+2*delta,’r:’,x,fxi-2*delta,’r:’)

Ejercicio 1 Mediante el Metodo de Mınimos Cuadrados, elegir una funcion cuadratica del tipo

f(x) = ax2 + bx + c

para los valores de x e y dados por la siguiente tabla

x 7 8 9 10 11 12 13y 7,4 8,4 9,1 9,4 9,5 9,5 9,4

Calcular la funcion f(x). El error, el error cuadratico medio y representar la funcion obtenida junto a los datosde la tabla con una banda alrededor de la grafica de f(x), dentro de la cual se encuentren los puntos de la tabla aun nivel del 95%.

Ejercicio 2 De ciertas medidas realizadas se han obtenido los siguientes valores:

x 0 0,2 0,5 1 1,5 2 2,5 3 3,5 4 4,5 5y 1 0,833 0,667 0,54 0,4 0,333 0,286 0,25 0,222 0,2 0,182 0,167

a) Representar la tabla de valores graficamente.

b) Se puede observar que se trata aproximadamente de una funcion del tipo y =1

ax + b. Esta funcion no la

podemos obtener directamente con el comando polyfit. Pero la podemos transformar en,

1y

= ax + b

Ahora, haciendo X = x; Y =1y. Nos queda la expresion

Y = aX + b

Calcular esta funcion. Habra que hacer una nueva tabla de valores con las nuevas variables.c) Deshacer el cambio de variable y obtener la funcion original y representarla con los valores del apartado a).d) Calcular el error y el error cuadratico medio.

Page 31: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Ejercicio 3 Hallar por el Metodo de Mınimos Cuadrados una funcion del tipo S = Atq para los datos de lasiguiente tabla. Representarla junto a los datos de la tabla:

t 1 2 3 4 5S 7,1 27,8 62,1 110 161

(Indicacion: Tomar logaritmos neperianos en la funcion para transformarla en una funcion de tipo lineal).

Ejercicio 4 La tabla siguiente contiene la presion p en kp/cm2 de un vapor saturado, en funcion del volumenespecıfico, v, medido en m3/kp:

v 3,334 1,63 0,8657 0,4323 0,2646 0,1699 0,1146p 0,482 1,034 2,027 4,247 7,164 11,48 17,6

Elegir una funcion p = f(v) que sea adecuada a la tabla de valores y calcularla con el Metodo de MınimosCuadrados. Representarla despues con los valores.

Segun esta funcion ¿Cual serıa la presion aproximada que corresponderıa a un volumen de 3m3/kp?

2. Analisis Multivariante. Regresion

Se utiliza cuando y es una funcion de mas de una variable independiente, las ecuaciones matriciales que expresanlas relaciones entre las variables se deben ajustar a esos datos. Esto se conoce como regresion multiple.

Supongamos que medimos una cantidad y para varios valores de x1 y x2.>> x1 = [.2 .5 .6 .8 1.0 1.1]’;>> x2 = [.1 .3 .4 .9 1.1 1.4]’;>> y = [.17 .26 .28 .23 .27 .24]’;Un modelo lineal de regresion calcula los coeficientes ,

y = a0 + a1x1 + a2x2,

por el metodo de los mınimos cuadrados. Construye y resuelve el sistema de ecuaciones formando una matrixX y calcula los parametros con el operador \ del siguiente modo

>> X = [ones(size(x1)) x1 x2];>> a = X\y>> a =

0.10180.4844

-0.2847

i.e. el modelo de ajuste por mınimos cuadrados es

y = 0,1018 + 0,4844x1 − 0,2847x2.

Para validar el modelo, calcula el maximo del valor absoluto de las desviaciones de los datos a partir del modelo

>> Y = X*a;>> MaxErr = max(abs(Y - y))>> MaxErr =

0.0038

el error relativo esta entre los lımites aceptables.Observacion: Se ha desarrollado este metodo con el comando \ de matlab. Podrıamos hacerlo con el comando

pinv.

Ejercicio 5 Repite el ejemplo anterior utilizando el comando pinv. ¿Cuales son las semejanzas y diferencias entreambos metodos?. Recuerda lo comentado en la practica 2.

Ejercicio 6 Ajustar los datos siguientes

x 1 2 3 4y 0 1 2 3z −2,1 1,3 4,2 5,6

a una funcion lineal del tipo z = ax + by + c.

Ejercicio 7 Repite el ejemplo anterior utilizando el comando pinv. ¿Por que se obtienen dos soluciones distintas?.

Page 32: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Ecuaciones Diferenciales Ordinarias. Practica 8

En esta practica vamos a resolver Ecuaciones Diferenciales Ordinarias (E.D.O.), calculando aproximacionesnumericas de las soluciones (usando MATLAB). Algunos ejemplos de ecuaciones diferenciales ordinarias en lasciencias fısicas son

1.dx

dt= kx proceso cinetico de primer orden

2.dx

dt= k(a0 − x)(b0 − x) proceso cinetico de segundo orden

3.d2h

dt2= −g cuerpo que cae bajo la accion de la gravedad

4.d2x

dt2= −ωx2 oscilador armonico clasico

5. − h2

8π2m

d2ψ

dx2+

12kx2ψ = Eψ ecuacion de ondas para el oscilador armonico

Ejemplo 1 Un proceso cinetico de primer orden. Considera la ecuacion diferencial

x′ = −10x + e−t, x(0) = 0,

en el intervalo, [0, 4]

1. Escribir un fichero tipo funcion, con el nombre funcorden1.m, para la funcion de esta ecuacion diferencial,es decir la expresion f(t, x), en concreto:

f unc t i on f=funcorden1 ( t , x )f=−10∗x+exp(−t ) ;

2. Usar, en la lineas de comandos, la rutina ode45 de Matlab para resolver la ecuacion numericamente. Dibujala grafica de la solucion aproximada. En concreto, escribe

>> [ t , u]=ode45 ( @funcorden1 , [ 0 , 4 ] , 0 ) ;>> p lo t ( t , u )

Ejercicio 1 Considera una reaccion reversible de primer orden en ambas direcciones A ⇀↽ B:

x′(t) = k1(a− x)− k−1x, x(0) = 0, t ∈ [0, 10].

1. Repetir el punto 1 del ejemplo anterior para a = k1 = 1, k−1 = 0,1. El fichero funcion que contiene la funcionde la ecuacion diferencial se tiene que llamar funcreversible11.m.

2. Escribe en una linea todos los datos de entrada del comando ode45, es decir:

>> f=@func r eve r s ib l e11 ; x0=0; i n t e r v a l o = [0 , 1 0 ] ; N=1000;

3. Repetir el punto 2 del ejemplo anterior. Opcional: Usa el comando title para poner un tıtulo a la ventanay el comando legend para indicar la(s) curva(s).

Ejercicio 2 Consideramos la reaccion de tercer orden completa A+B+Ck⇀D. La concentracion de D verifica

la ecuacion diferenciald′(t) = k(a0 − d(t))(b0 − d(t))(c0 − d(t)), d(0) = 0.

1. Elige valores de los parametros tales que a0 > b0 > c0 > 0.

2. Resuelve numericamente la ecuacion diferencial.

3. ¿Que ocurre con la solucion si a0 = b0 o b0 = c0?.

Page 33: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

4. ¿Y si a0 = b0 = c0?.

5. Establece la analogıa con las reacciones2A + B

k⇀D

y3A

k⇀D.

6. ¿Que cambia en lo anterior si suponemos unas relaciones estequiometricas en la reaccion de la forma

nAA + nBB + nCCk⇀nDD ?.

Ejercicio 3 Consideremos una reaccion de primer orden autocatalıtica

Ak⇀B.

En dicha situacion la constante de proporcionalidad, al aplicar la Ley de Accion de Masas, verifica que k = k([B]) =k0 + α[B] siendo α una constante, usualmente pequena. Si α > 0 se dice que B es un activador de la reaccionmientras que es un inhibidor si α < 0.

1. Obtener la ecuacion diferencial para las concentraciones de A y B y resolverlas supuesto que la concen-tracion inicial de B es nula. Determinar cual es la velocidad maxima que alcanza la reaccion. Determinar laconcentracion final de las sustancias.

dx

dt= (k0 + αx)(a0 − x)

con dato inicial x(0) = 0.

2. Integrar la ecuacion diferencial de la velocidad de reaccion de la siguiente reaccion incompleta

dx

dt= 3(2− x)(1− x)− (1 + x)(2 + x)

con dato inicial x(0) = 0. ¿Para que valor de la variable x cesa esta su variacion?.

Ejemplo 2 Considera el sistema de ecuaciones diferenciales{

x′ = x + 7y − 10x2yy′ = −3x− 8y + xy

x(0) = 1y(0) = 0,

en el intervalo, [0, 3]

1. Escribir un fichero tipo funcion, con el nombre funcsistema1.m, para la funcion de este sistema de ecua-ciones diferenciales

function f=funcsistema1(t,x)f=zeros(2,1);f(1)=x+ 7*y - 10*x.^2.* y;f(2)=-3*x -8*y + x.*y;

2. Usar, en la lineas de comandos, la rutina ode45 de Matlab para resolver la ecuacion numericamente. Dibujala grafica de la solucion aproximada. En concreto, escribe

>> [ t , u]=ode45 ( @funcsistema1 , [ 0 , 3 ] , [ 1 ; 0 ] ) ;

Ejercicio 4 La enzima [E] reacciona reversiblemente con el sustrato [S] y forma el complejo [C]. A continuacionel complejo se descompone, en una reaccion irreversible, en un producto [P ] y la enzima original

E + Sk1⇀↽

k−1

Ck2⇀E + P.

La ley de accion de masas para las concentraciones e(t) = [E], s(t) = [S], c(t) = [C], p(t) = [P ], sera

e′(t) = −k1e(t)s(t) + k−1c(t) + k2c(t) (2)s′(t) = −k1e(t)s(t) + k−1c(t) (3)c′(t) = k1e(t)s(t)− k−1c(t)− k2c(t) (4)p′(t) = k2c(t) (5)

con las condiciones inicialese(0) = e0, s(0) = s0, c(0) = p(0) = 0.

Page 34: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

1. Demostrar que la suma de concentraciones

e(t) + c(t) = e0 (6)

es constante. Elimina la variable e(t) en las ecuaciones (3)-(4).

2. Dando valores iniciales, resolver numericamente las ecuaciones (3)-(4).

3. Estado pseudo-estacionario. En los experimentos en laboratorio, s0 À e0. Michaelis y Menten en 1913observaron que en estas circunstancias se espera que, despues de un corto intervalo de tiempo, haya unbalance entre la formacion del complejo [C] por la union de enzima y sustrato y la degradacion del complejo.Debido a que hay una gran cantidad de moleculas de sustrato s0 À e0, este balance se alcanzara antes de seaperceptible la transformacion de sustrato en producto. La formacion de producto se puede llevar a cabo conla hipotesis c′(t) = 0 es decir

e(t)s(t) = Kmc(t), Km :=k−1 + k2

k1, (7)

Km es la constante de Michaelis. Esta ecuacion se conoce como la hipotesis del estado pseudo-estacionario,c(t) esta ajustada a los valores instantaneos de e(t) y de s(t) y estos valores cambian lentamente con el tiempo.

Bajo la hipotesis pseudo-estacionaria, sustituyendo (6) en (7), comprueba que se puede escribir

c(t) =e0 s(t)

Km + s(t)

en consecuencia

s′(t) = − k2e0 s(t)Km + s(t)

, s(0) = s0. (8)

Resuelve numericamente este PVI.

4. Compara los resultados con el caso anterior.

Page 35: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Departamento de Matematica AplicadaCALCULO COMPUTACIONAL.

Licenciatura en Quımica (Curso 2008-09)Archivos de ordenes. Programacion. Practica 9

1. Introduccion

Hasta ahora, todos los comandos que hemos estudiado en MatLab, los hemos ido escribiendo en el entorno detrabajo del programa, es decir, a continuacion de >>. Sin embargo, en muchas ocasiones resulta necesario ejecutarvarios o muchos comandos encadenados y, quizas, repetirlos varias veces. Para esto resulta util guardarlos en unfichero, de manera que se puedan ejecutar con solo una orden, esto es, queremos construir un programa, que noes otra cosa que un conjunto de comandos encadenados.

La manera de guardar comandos y, por tanto, de construir programas que ejecuten determinadas rutinas consisteen crear lo que se llaman ficheros-M.

Para crear un fichero-M necesitamos abrir un editor de texto (como el Bloc de Notas de Windows) y escribirlos comandos. Despues, ese fichero de texto debe guardarse con la extension .m. La version 5 (Student Edition)incorpora un editor de Ficheros-M. Basta abrir la opcion File New M-File de la barra superior.

Vamos a ver algunos ejemplos de ficheros-M:

Ejemplo 1 .

a) Vamos a elaborar un programa para calcular S(n) = 1 +122

+132

+ · · ·+ 1n2

.Creamos el siguiente fichero:

function S=suma(n)

% Fichero para la funcion suma% de los inversos de los cuadrados

N=1:n; NN=N.^2; Ninv=1./NN; S=sum(Ninv);

Y lo guardamos con el nombre suma.m. Ahora lo podemos utilizar para calcular valores de la suma

>>suma(100)ans =

1.6350

Ejercicio 1 Elaborar un programa para calcular la integral definida de una funcion,∫ b

a

f(x)dx, por el metodo del

punto medio: si se divide [a, b] en n subintervalos de longitud

∆x =b− a

N,

la integral aproximada es

I =N∑

i=1

f(xi)∆x

donde xi es el punto medio de cada subintervalo. Los datos de entrada seran la funcion f, introducida como unfichero f.m, los extremos a, b del intervalo y el numero N de sumandos. El nombre del fichero es miptomedio.m

Ejemplo 2 a) Elabora el fichero func1.m para la funcion sen(x)/x, es decir:

function y=func1(x)

% Fichero para la funcion sen(x)/x

y=sin(x)./x;

b) Teniendo en cuenta los datos de entrada del programa miptomedio, es decir:

>> f=@func1 ; a=0; b=1; N=1000;

Page 36: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

calcula:∫ 1

0

sen(x)x

dx, es decir:

>> I=miptomedio (@func1 , 0 , 1 , 1000 )

Ejercicio 2 Calcula:

a)∫ π/4

0

tan(x)x

dx b)∫ π

0

sen(x2) dx c)1√π

∫ N

−N

e−x2dx d)

∫ 1

0

5x3 + 21 + x + x2

dx

2. Control de flujo. Bucles

Cuando los comandos los ejecutamos en el entorno de trabajo, las instrucciones se van realizando en el ordenen el que se van introduciendo. Pero, dentro de un programa, el orden de su ejecucion, el flujo, se puede alterarutilizando algunas instrucciones.

Estas instrucciones pueden ser: condicionales, en las que las secuencias de ordenes deben evaluarse basandoseen alguna condicion y, bucles o instrucciones iterativas, mediante las cuales una o un grupo de ordenes se ejecutanvarias veces.

Condicionales Vamos a ir viendo las diferentes posibilidades mediante ejemplos sencillos:Estructura if simple. Su sintaxis es

if condicionalcomando

end

El comando se ejecuta si todos los elementos en condicional son verdaderos. Por ejemplo,

>>a=3;if a>2

b=a+5end

Mientras que si escribimos

>>a=3;if a==2

b=a+5end

no obtenemos respuesta.

Estructura if compuesta,

if condicionalcomando primero

elsecomando segundo

end

Sirve para los casos en los que existen dos alternativas. Si se cumple condicional, se ejecuta comando primero,pero si es de otra forma, se ejecutara comando segundo. Por ejemplo,

>>a=n;if a>5

b=a+5else

b=a-1end

Page 37: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

En la secuencia anterior de ordenes, si n es mayor que 5, el valor de b sera a+5, de otra forma, sera a-1.

Estructura if-else-if. Se puede utilizar cuando hay mas de dos condiciones que pueden cumplirse. Se escribe

if condicional primerocomando primero

elseif condicional segundocomando segundo

elseif condiccional tercerocomando tercero

...... elsecomando final

end

En este caso el comando final se ejecuta, si no se han realizado ninguno de los anteriores. Por ejemplo,

if n<10x=b.^2

elseif n<20x=b.^3

elseif n>30x=b.^4

elsex=b

end

Bucles Como se dijo mas arriba, los bucles se utilizan, dentro de un programa, para que un comando o grupo decomandos se ejecute varias veces. Existen dos tipos de bucles que se pueden hacer en MatLab, los bucles for y losbucles while.

Un ejemplo de bucle for

for i=1:10a(i)=i+2;

end

Que producirıa el vector

>>aa =

3 4 5 6 7 8 9 10 11 12

Notese que ahora hay que poner ; detras del comando que se ha de ejecutar si no queremos ver todos los calculosen la pantalla.

Por supuesto, lo anterior se podrıa haber obtenido simplemente escribiendo

>>a=3:12

Los bucles, dentro de un programa, consumen tiempo y memoria del ordenador, en la medida de lo posible, hayque tender a evitarlos. Aunque en ocasiones puede que no haya, o no se nos ocurra, otra posibilidad.

El bucle de tipo for ejecuta un conjunto de instrucciones un numero de veces que nosotros conocemos a priori.Pero esto puede no ser ası, en este caso habrıa que utilizar un bucle de tipo while. Su sintaxis es

while condicionalcomando

end

Que significa que, mientras se cumpla condicional, se ejecutara comando, cuando deje de cumplirse condicional,comando dejara de ejecutarse.

Page 38: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

3. Metodo de Newton

El metodo de Newton sirve para aproximar ceros de funciones f(x) = 0. Las funciones f pueden ser de variasvariables f : IRk → IRk. Teniendo en cuenta el desarrollo en serie de Taylor de orden 1 podemos escribir

f(xn+1) = f(xn) + Df(xn)(xn+1 − xn) + t.o.s.

donde t.o.s. representa a los terminos de orden superior, y suponiendo que f(xn+1) ≈ 0 tendrıamos Df(xn)(xn −xn+1) ≈ f(xn). El metodo de Newton-Raphson es un metodo iterativo que se puede describir como:

Dado un valor inicial x = x0

{resolver Df(xn)w = f(xn), n ≥ 0calcular xn+1 = xn − w, n ≥ 0.

De esta forma si xn converge cuando n →∞ a x, el lımite es una solucion del sistema no lineal f(x) = 0. Observese

que la matriz Df(xn) viene dada por Df(x) =(

∂fi(x)∂xj

)

i,j

Ejemplo 3 Vamos a escribir en un fichero instrucciones de MATLAB de forma que, utilizando el Algoritmo deNewton, calculemos aproximaciones a un cero de la funcion f(x) = x− x3.

function x=minewton(f,df,x0,TOL)% metodo de Newton para ecuaciones, dadas f y su derivada df

% variables de entrada: f,df ficheros .m% x0 dato inicial vector columna% TOL tolerancia error

% variables de salida: x aproximacion al punto fijo en ’i=contador’ iteraciones

ERR=TOL+1; x=x0; contador=0; while ERR>TOLcontador=contador+1;DF=feval(df,x);F=feval(f,x);w= DF\F;ERR=norm(w,inf);x=x-w;if contador>1000

breakdisp(’excede numero maximo de iteraciones’)

endend

Llamad a este fichero minewton.m. Ahora podemos ejecutarlo. Para ello necesitaremos en primer lugar definirun fichero .m con la correspondiente funcion f y otro con su derivada, df, como una matriz si f fuera de variasvariables. Para ello escribimos en dos ficheros:

function F=fun1(x)%F=x-x.^3;

function DF=dfun1(x)%DF=1-3*x.^2;

y los guardamos con el nombre fun1.m y dfun1.m respectivamente. Esto nos permitira evaluar la funcion y suderivada para cada x. A continuacion escribimos las variables de entrada en la linea de comandos

>>TOL=1e-10;

>>x0=-2;y ahora llamamos al programa minewton.m desde la linea de comandos

>> x=minewton (@fun1 , @dfun1 , x0 ,TOL) ;

Page 39: PRACTICAS.¶ CALCULO COMPUTACIONAL EN QU¶ ¶IMICAS ... - …

Ejercicio 3 Calcule los ceros de las siguientes funciones utilizando el metodo de Newtoni) f(x) = x− x2,ii) f(x) = xe−x + 1,iii) f(x1, x2) = (x1 − x2

2, sin(x1)− 0,7x2).