viernes, 20 de noviembre de 2015

Ecuaciones diferenciales, el método de variación de parámetros (ejercicio resuelto).

El método de variación de parámetros se utiliza para dar solución únicamente a ecuaciones diferenciales de primer orden (si no sabes como clasificar una ecuación diferencial, visita nuestra entrada en la sección de calculo y matemáticas), este método, además, solo es aplicable a ecuaciones homogéneas, esto significa que solo es aplicable a ecuaciones diferenciales que están igualadas a cero, lo anterior no es una limitante para el método, pues aún si la ecuación no está igualada a cero, es posible hacer el procedimiento mediante algunos arreglos matemáticos.

El modelo general para las ecuaciones en las que se puede aplicar el método es el siguiente 

Cualquier termino de "y" que pudiera estar a la derecha de la igualdad debe ser enviado hacia la izquierda para poder aplicar el método. 

No hay mejor manera de entender un método que a través de su ejemplificación, así que resolveremos la siguiente ecuación mediante el método que aquí intentamos explicar. 



1.- El primer paso del proceso es verificar si la ecuación diferencial es homogénea, en nuestro caso no lo es, por lo tanto deberemos llevar a cabo un proceso denominado homogeneización, el cual consiste, simplemente en sustituir el lado derecho de la igualdad por cero, la ecuación queda como sigue. Si la ecuación ya es homogénea, simplemente se procede al método de integración directa.



2.- La siguiente parte del proceso es aplicar el método de integración directa en la ecuación, lo cual simplemente consiste en despejar la ecuación de manera que las variables "x" y "y" queden el lados contrarios de la igualdad (el método de integración directa se explica en la entrada "Ecuaciones diferenciales"), posteriormente se integra ambos lados de la ecuación, tal como se muestra a continuación.





Nota: Recuerda que -2 ln x= ln (x)^-2, por lo tanto...


3.- El siguiente paso es despejar la ecuación directamente a la variable "y", en este caso cada lado de la ecuación se convierte en el exponente del numero de Euler, con el objetivo de eliminar el logaritmo natural de la parte izquierda. Recuerda que si realizas un cambio en igual en ambos lados de una ecuación, esta permanece inalterada.




A manera de recomendación, recuerda que si se eleva el numero de Euler a la potencia de una constante, se puede considerar que el numero resultante también será una constante, por lo tanto...
Considerando lo anterior, nuestra ecuación quedaría como sigue


Al hacer un pequeño arreglo matemático, la ecuación queda de la siguiente manera

El siguiente paso del procedimiento es muy importante, ya que se debe hacer una proposición, lo cual solamente significa que realizaremos un cambio de variable, o bien, como el nombre del procedimiento lo indica, una variación de parámetros, esto no implica ningún cambio en los valores. Se realiza con el objetivo marcar la diferencia entre los valores que hemos usado hasta ahora, y los que usaremos en los siguientes pasos, en el paso 6 observaras la razón de este cambio. Lo único que debemos hacer es cambiar la variable "c" por la variable "u". La ecuación queda de la manera siguiente

4.- El siguiente paso puede parecer un tanto confuso, pero intentaremos explicarlo de la mejor manera. Una vez que obtuvimos el valor de y, se procede a derivarlo, lo anterior se lleva a cabo debido a que, como se verá en los siguientes pasos, nuestra intención es sustituir los términos de la ecuación uno, por lo tanto, si en la ecuación uno tenemos una derivada, debemos sustituirlo por un valor equivalente, es decir, otra derivada. En el siguiente paso veremos cual es el objetivo de dicha derivación.


Nota: Observa que en las partes en las que se deriva la constante "u", simplemente se agrega el termino u'. Al hacer algunos arreglos matemáticos a la ecuación anterior, la derivada queda como se muestra a continuación.


Se hace la suma de fracciones y se continúan los arreglos.

5.- Una vez que tienen los valores tanto de y como de y', se procede a sustituirlos en la ecuación número uno, lo cual da como resultado la siguiente ecuación 


Al realizar la operación anterior, obtenemos lo siguiente 

- El proceso anterior es muy importante, se deben eliminar todos los términos de "u" quedando solo el termino de " u' ", si esta eliminación no toma lugar significa que hubo un error en el procedimiento, o que la ecuación diferencial no es de primer orden.


El resto del procedimiento es bastante sencillo, se debe despejar el termino " u' ", y se procede a integrar ambos lados de la ecuación, con el objetivo de obtener el valor de "u".


Nota: La constante de integración debe ser ignorada en esta parte del procedimiento 

6.- El siguiente y ultimo paso del proceso consiste en sustituir el valor recién encontrado de "u" en la ultima ecuación que definimos durante el paso número 3, quedando de la siguiente manera.

El valor final de la variable "y", el objetivo del procedimiento, quedaría como se muestra a continuación.




Si deseas saber más sobre las ecuaciones diferenciales, visita nuestra entrada del mismo nombre en la sección "Calculo y matemáticas". 










jueves, 19 de noviembre de 2015

Método de Müller en MATLAB para encontrar raíces imaginarías.

Este método te permitirá obtener las raices de una ecuación de cualquier grado, este método tiene la ventaja de que, además de obtener el resultado real, también otorga la parte imaginaría del resultado.

Para implementar el método en MATLAB, debes crear un Script que contenga el siguiente código, este será único script que debes correr.

%programa principal método Muller
fun=@(x)(16*x.^4-40*x.^3+5*x.^2+20*x+6) %La parte en negritas es la que debes sustituir
x=[0.5,-0.5,0] %El dominio en el que quieres que los resultados sean gráficados
N=5 %Corresponde al numero de iteraciones, te recomiendo que sea siempre mayor o igual a 5
P=metodoMuller(fun,x,N)

El siguiente será el código que llevará a cabo todo el proceso matemático, debe ser vaciado en un script distinto y guardado en la misma carpeta que el programa principal.

function P=metodoMuller(fun,x,N)
 l=0
 f=0;
  c=fun(x(3))
   b=(((((x(1)-x(3))^2)*(fun(x(2))-fun(x(3))))-((x(2)-x(3))^2)*(fun(x(1))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
    a=(((((x(2)-x(3)))*(fun(x(1))-fun(x(3))))-((x(1)-x(3)))*(fun(x(2))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
    x4=(x(3)-((2*c)/((b)+((b/abs(b))*sqrt((b^2)-(4*a*c))))))
%Scienceprocedures.blogspot.mx
    x0=min(x)-1:0.09:max(x)+1
    hold on
    grid on
    plot (x(1),fun(x(1)),'Ok')
    hold on
    plot (x(2),fun(x(2)),'Ok')
    hold on
    plot (x(3),fun(x(3)),'Ok')
    hold on
    plot(x0,fun(x0),'b')
    hold on
for i=1:1:N
    if i==N
         plot (x0,R(x0),'+r')
    hold on
    end
    c=fun(x(3))
   b=(((((x(1)-x(3))^2)*(fun(x(2))-fun(x(3))))-((x(2)-x(3))^2)*(fun(x(1))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
    a=(((((x(2)-x(3)))*(fun(x(1))-fun(x(3))))-((x(1)-x(3)))*(fun(x(2))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
    x4=(x(3)-((2*c)/((b)+((b/abs(b))*sqrt((b^2)-(4*a*c))))))
    x(1)=x(2)
    x(2)=x(3)
    x(3)=x4;
          x0=min(x)-1:0.09:max(x)+1
    R=@(x0)((a*((x0-x(3)).^2))+(b*(x0-x(3)))+c)
    C=['k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m',]
    plot (x0,R(x0),C(i))
    hold on
end
P=x(3)
plot (P,R(P),'*r')
end

Nota importante: Ten cuidado al escribir la ecuación cuya raíz deseas encontrar, observa, como en el ejemplo, que es necesario poner un punto antes del signo "^" para que el programa funcione apropiadamente. 
Si piensas utilizar el código anterior para propósitos no académicos, te pido que incluyas un link a esta pagina web.

lunes, 16 de noviembre de 2015

¿Qué es el ADN?

El ADN, una pequeña y, sin embargo, muy importante molécula para la vida, apareció por primera vez en la tierra quizá hace unos 3, 500 millones de años, cuando los primeros organismos vivos unicelulares aparecieron en la tierra.

La función de la molécula de ADN es almacenar información de la manera más eficiente posible, con el objetivo de mantener dicha información de forma casi inalterada el mayor tiempo posible, y digo "casi" por que si el ADN fuera totalmente inalterable no habría lugar para los procesos evolutivos que han permitido el surgimiento de seres cada vez mas complejos. Pero, a todo esto, ¿Para que sirve la información almacenada por el ADN? La información almacenada en esta preciosa molécula contiene las instrucciones necesarias para que la maquinaría celular lleve a cabo el proceso de síntesis de otras moléculas, de gran importancia, llamadas proteínas. Las proteínas son grandes moléculas formadas de aminoácidos, la tarea del ADN es indicar a la célula el orden y la naturaleza de los aminoácidos que deben ser ensamblados, de manera que la proteína resultante sea totalmente funcional, es importante señalar que un cambio en el orden de los aminoácidos puede dar como resultado una proteína anómala, que puede no funcionar de la manera adecuada o incluso llegar a ser peligrosa para la célula. 


Las proteínas son importantes para la supervivencia de la célula porque son los tabiques fundamentales con los que esta está construida, forman parte de las paredes celulares,  del sistema de endomembranas, todos los organelos celulares están constituidos fundamentalmente de proteínas. Son también importantes porque la mayoría de las reacciones químicas que se llevan a cabo en un organismo, como las reacciones llevadas a cabo durante el proceso de respiración celular, solo por dar un ejemplo, son posibles gracias a la intervención de enzimas de naturaleza proteica. 


Ahora bien, ¿Que es el ADN? El ADN es una molécula formada por una doble cadena de desoxirribonucleótidos. Es una molécula increíblemente larga, si pudiéremos extenderla al máximo podría llegar a medir más de dos metros, con un ancho de solamente unos pocos átomos. El tamaño promedio de una célula eucarionte (que posee un núcleo definido) es de aproximadamente 100 nanometros, por lo tanto, la molécula de ADN es empaquetado fuertemente en el interior de la célula al rededor de proteínas llamadas histonas, este empaquetamiento hace posible que una molécula de tales dimensiones pueda estar en el interior de un núcleo celular de tan solo unos pocos nanometros. Al empaquetamiento del ADN al rededor de las histonas se le denomina Cromatina. 
El ADN está formado, como se mencionó antes, por largas cadenas de desoxirribonucleótidos, los cuales son moléculas conformadas por una molécula de azúcar llamada desoxirribosa (de ahí el nombre de " desoxirribonucleotidos"), la cual esta unida por un extremo a un grupo fosfato y por el otro a una base nitrogenada. 
Cada base nitrogenada otorga una identidad química bien definida al nucleótido del que forma parte, las bases nitrogenadas pueden ser Adenina, Timina, Guanina y Citosina. Cuando el ADN está en su forma bicatenaria, la Adenina siempre se une a la Timina , mediante dos puentes de Hidrogeno (una clase de enlace químico), y la Guanina se une a la Citosina, a través de tres puentes de hidrogeno. Esto se dedujo por primera vez después del descubrimiento de la llamada regla de Chargaff, la cual se propuso tras encontrar que las cantidades de Adenina y de Timina en una célula son siempre iguales, así como las cantidades de Guanina y Citosina. 
¿Por que la complementariedad de bases es tan importante? Es importante por que, durante el proceso de replicación del ADN, el cual antecede a la division celular, es necesario copiar toda la información disponible en el genoma, el primer paso es separar las cadenas que conforman el ADN, lo cual es llevado a cabo a través de una enzima llamada Helicasa, una vez hecho esto, otra enzima, denominada ADN polimeraza, es responsable de crear una doble cadena a partir de solo una cadena de nucleotidos, es ahí donde el hecho de que cada base sea obligatoriamente unida con su reciproca hace posible que, a partir de solo una cadena, denominada cadena molde, se genere una segunda cadena de nucleotidos, la ADN polimeraza actúa siguiendo la "complementariedad de bases" para añadir un nucleotido "reciproco" a cada nucleotido presente en la cadena original, produciendose así dos nuevas cadenas de ADN bicatenario, donde, para cada nueva molécula de ADN, una de las cadenas corresponde al ADN original y la otra corresponde a ADN recién sintetizado, es por eso que se dice que la replicaron del ADN es semiconservativaEl proceso replicación del ADN es un tema en si mismo, por lo tanto será explicado más a fondo en posteriores publicaciones. La complementariedad de bases es también útil cuando porciones de una cadena son dañadas, pues es posible reparar la cadena afectada a partir de la información de su cadena complementaria, para ello la célula cuenta con varios sistemas de reparación del ADN los cuales se basan en la recuperación de la información perdida en una cadena a partir de la almacenada en su cadena homologa, entre estos sistemas destaca el sistema de corrección por escisión de basesel sistema de reparación por escisión de nucleotidos, así como el sistema de re-combinación por extremos homólogos, entre algunos otros. De alguna manera, el hecho de tener una molécula de doble cadena sirve como un "respaldo" para la célula, algo parecido a lo que hacemos cuando guardamos nuestra información digital en más de un lugar, lo cual hace posible recuperar la información que por algún motivo ha sido perdida.






Para concluir, es necesario señalar que la importancia del ADN va mucho más allá de su capacidad de almacenar la información necesaria para la síntesis de proteínas, puesto que, hasta ahora, se sabe que solo el 1.5% de genoma humano codifica la información necesaria para la síntesis proteica, el resto corresponde a secuencias genéticas denominadas intrones, se llegó a pensar que los intrones podrían ser secuencias genéticas inservibles, remanentes de nuestros ancestros, sin embargo, cada vez hay mas pruebas de que por lo menos una parte de dicha información es útil para la síntesis de ARN de interferencia, una molecula capaz de regular la síntesis proteica, así como para la síntesis de ARN de transferencia, indispensable durante el proceso de síntesis proteica, hay razones para pensar que los intrones están lejos de ser moléculas inservibles, ya que cada vez es más claro que el ADN es más que la suma de sus partes. 

Bibliografía. 
Starr, C., & Evers, C. (2012). Biology: Today and tomorrow with physiology (4th ed.). Pacific Grove, Calif.: Brooks/Cole

Deja tus preguntas en los comentarios, será un gusto responderlas. 

domingo, 15 de noviembre de 2015

Integración por el método del trapecio en MATLAB




Para implementar el método del trapecio en MATLAB se deben crear los siguientes scripts. El siguiente es solo un base, es posible complementarlo para mejorar la experiencia. 

A continuación se muestra el código que será responsable de desarrollar el proceso

function integral=Metodointegracion(a,b,nintervalos,fun)
ancho=((b-a)/nintervalos) 
integral=0;
for i=(1:nintervalos)
    A=(ancho*fun(a+(i*ancho)));
    B=(ancho*fun(a+(i-1)*ancho));
    integral=(integral+((A+B)/2))
end 
end 


En un script diferente se debe implementar el siguiente código, será el encargado de recibir los datos del usuario. (El codigo tiene los datos de la integral que resolvimos anteriormente)

nintervalos=4;
a=1;
b=5;
fun=@(x)(1./x)
integral=Metodointegracion (a,b,nintervalos,fun)

Nota: Asegúrate de guardar ambos scripts en la misma carpeta, de lo contrario MATLAB lanzará un error. 

Si quieres saber más sobre le procedimiento en papel, revisa nuestra entra de la sección "Métodos numéricos en papel"











Código en MATLAB para desarrollar el método de bisección

El programa responsable del proceso iterativo será el siguiente.

function z=Metbiseccion(a,b,err,fun)
while (abs(b-a)> err);
    fa=fun(a);
    fb=fun(b);
    z=a+((b-a)/2)
    fz=fun(z);
    if(fa*fz<0);
        b=z;
    else
        a=z;
    end
end

En un script distinto se implementará el siguiente código, el cual será el receptor de la ecuación problema.

function y=fun(x);
y=x.^3+4*x.^2-10;  %( aquí es donde debes escribir la ecuación problema)
end

No es estrictamente necesario hacer otro script para la función anterior, ya que se puede hacer uso de funciones simbólicas, por lo tanto sería posible escribir el siguiente código en el programa principal como sustitución para el código anteriormente descrito.
y=@(x.^3+4*x.^2-10)
Si realizas este procedimiento no olvides borrar el "@fun" y tampoco olvides escribir y=@(x.^3+4*x.^2-10) antes de llamar al programa Metbisección.

El programa principal, en un scrpt nuevo, será el siguiente.

err=0.001;
a=1; (Intervalo menor)
b=2; (Intervalo mayor)
z=Metbiseccion(a,b,err,@fun);
x=(1:0.1:2.5); ( este intervalo debe ser sustituido por uno en el cual se piensa que la raíz podría encontrarse)
hold on
plot (x,fun(x))
grid on
plot (z, fun(z), '*')

Recordar que "err" se refiere al margen de error deseado, esto debido a que el método de bisección , como todo método numérico, solo es capaz de aproximar el valor de la raíz con respecto del valor real, por lo tanto siempre habrá un error muy pequeño. Recordar también que  los script deben estar guardados en la misma carpeta, de lo contrario MARLAB marcará error. Sin duda hay muchas maneras para automatizar el código, el código aquí mostrado representa un esqueleto, puedes modificarlo y mejorarlo de la manera que mejor te convenga. 

Si te interesa aprender más sobre el método en lápiz y papel, visita nuestra entrada del método de bisección en la sección de "Métodos numéricos en papel".