jueves, 13 de diciembre de 2012

Interprete online de Matlab

Buscando una herramienta en linea que me  diera la potencia que tiene matlab, puesto que actualmente  termino el año 2012 sin  computadora propia, por lo que se hace difícil publicar programas propios y seguir con los vídeos, les presento  MatLib está en un estado muy temprano de developement. Aunque usted puede tener una oportunidad y utilizar el cuadro de texto como un intérprete en línea de MATLAB. El motor está en marcha Asp.Net con la biblioteca MatLib.
Es una herramienta en linea que soporta algunas funciones de Matlab.



Prueba lo en: http://www.semiworks.de/MatLib.aspx

viernes, 7 de diciembre de 2012

Antoine en Matlab.

Elige entre una base de datos de cerca de 700 compuestos químicos y trazar la presión de vapor como una función de la temperatura. También se puede ingresar una temperatura específica dentro del rango permisible y devuelve la correcta presión de vapor calculada usando la ecuación de Antoine.
Nota: Si la base de datos no está configurado correctamente, los archivos necesarios se incluyen en el paquete postal y se puede configurar mediante el Generador de la caja de herramientas de base de datos 'visual de consultas..


D.E.S.C.A.R.G.A.R

lunes, 3 de diciembre de 2012

Ley de de Raoult en Matlab


Asumiendo la ley de Raoult es válido (solución ideal), esta interfaz gráfica de usuario permite al usuario elegir dos compuestos de una base de datos de más de 4500 productos químicos y trazar su diagrama Txy largo de un rango de temperatura especificado por el usuario.

Las unidades múltiples de presión y temperatura son compatibles.

Si T-split se define, en el trazado de la figura, el líquido-vapor se divide también será calculado a la temperatura definida.

Si la base de datos no está configurado correctamente, he incluido en el archivo. Accdb.






D.E.S.C.A.R.G.A.R











miércoles, 28 de noviembre de 2012

Transferencia de Calor en Matlab

Programa resuelve numéricamente la ecuación general de transferencia de  calor utilizando las entradas del usuario y las condiciones de contorno.




D.E.S.C.A.R.G.A.R

domingo, 25 de noviembre de 2012

Animacion de graficos 3D en Matlab

Codigo del video tutorial 32, que trata sobre la animación de graficos avanzados en matlab parte 2/3, en el cual se aborda el tema de animación de graficos en 3D. El código se publica tal cual fue  presentado en el  curso.


clear all
clc
x=0:pi/100:4*pi;
y=x;
[X,Y]=meshgrid(x,y);
z=3*sin(X)+cos(Y);%ecuacion  principal
h=surf(z);
axis tight
set(gca,'nextplot','replacechildren');
shading interp
colormap(jet)
m=1;
for k =0:pi/100:2*pi;
    z=(sin(X)+cos(Y)).*sin(k);%ecuacion  principal modificada
    set(h,'Zdata',z);
    M(m)=getframe;
    m=m+1;
end
movie(M,2);

sábado, 17 de noviembre de 2012

Procesamiento de Señales en Matlab

Señal Sinodal de 400Hz con una amplitud de 2

clear all
clc
%señal Sinoidal de 400 Hz amplitud de 2

F0=400;
A=-1;%K
Fs=8000;
Ts=1/Fs;
t=[-0.003:Ts:0.003];
xt=A*sinc(2*F0*t);

h=stem(t,xt);
grid on
%set(h,'EraseMode','Xor');

while A<1
    for i=1:length(t)
     A=A +0.01;%mov de incremento
     xt=A*sinc(2*F0*t); %Funsion Original
    
     set(h,'XData',t,'YData',xt);
     drawnow % grafiq en el mismo punto
             % comando mas avanzado que hold on/ off
    
     Image = getframe;
     P = frame2im(Image);
     numero = num2str(i);
     extension = '.bmp';
     filename = [numero,extension];
     imwrite(P,eval('filename'), 'bmp');
    end
    
end

la animación quedaría de la siguiente forma.





jueves, 15 de noviembre de 2012

Tiro parabolico en Matlab

Simulacion del tiro parabólico en matlab.
les dejo el siguiente código en que  simulamos el efecto de tiro parabólico que se mostró en el videotutorial 31

t=-2:.1:2;
x=100*t;
y=-9.8/2*t.^2+20;
for i=1:length(t)
plot(-200,0)
hold on
plot(200,25)
plot(x(i),y(i),'o')
plot(x(1:i),y(1:i),'.')
pause(.05)

Image = getframe;
P = frame2im(Image);
number = num2str(i);
extension = '.bmp';
filename = [number,extension];
imwrite(P,eval('filename'), 'bmp');
hold off
end

la animación quedaría de la siguiente forma




martes, 6 de noviembre de 2012

Videotutorial 32 de Matlab

Gráficos Avanzados parte 2/3
creación de películas de gráficos 3d
comparación del comando drownow vs movie

Videotutorial 32 de Matlab from Isrant on Vimeo.

miércoles, 31 de octubre de 2012

Animacion de Graficos en Matlab

Les  dejo el código usado en el  videotutorial anterior sobre animación de graficos 2D.
posteriormente  publicare el siguiente videotutorial.


%Animacion de Graficos en Matlab....
clear all
clc
x=[-10:1:10];
k=-1;
y=k*x.^2-2;

h=plot(x,y,'-o');
grid on
axis([-10,10,-100,100]);
while k<1
    for i=1:length(x)
     k=k +.1;%mov de incremento
     y=k*x.^2-2; %Funsion Original
    
     set(h,'XData',x,'YData',y);
     drawnow % grafiq en el mismo punto
             % comando mas avanzado que hold on/ off
    
    Image = getframe;
     P = frame2im(Image);
     number = num2str(i);
     extension = '.bmp';
     filename = [number,extension];
     imwrite(P,eval('filename'), 'bmp');
    end
    
end





lunes, 29 de octubre de 2012

Gui de Matlab para identificación Bacteriana

su interfaz gráfica de usuario es para identifcación bacteriana desarrollada por MATLAB. La interfaz gráfica de usuario se basa en la comparación de algunos resultados opcionales bioquímicos con matriz de probabilidad y puede distinguir 288 unidades bacterianas taxonómicas operacionales (Otus). De red neuronal probabilística (PNN) estructura se utiliza para obtener el resultado más probable de la identificación de bacterias. Y cuando un rango apropiado de la distancia que se elija, la bacteria desconocida y sus aliados Otus en el fenotipo bioquímico dentro de ese rango, pueden ser ilustrado en el espacio tridimensional clásico por escalamiento multidimensional (MDS)






















DESCARGAR



lunes, 22 de octubre de 2012

Bioinformatica en Matlab -- Comando getgenbank


Muchas veces al hablar un poco de BioInformática con muchos  estudiantes de posgrado en ciencias químicas, la mayoría  al momento de la platica  gira la cabeza como intentado evadir la conversación, o mostrar su falta de conocimiento o poco interés sobre el tema. Aclaro no me siento ser un experto sobre Matlab y mucho menos sobre BioInformática.
Ala primera pregunta que me dirijo cuando me empiezo a sumergir en el tema es ¿Dónde encuentro Datos e información?, la segunda ¿Necesito saber Programar? Son  dos preguntas principales que siempre  nos invaden en el momento que nos interesamos en este  fascinante mundo.
Hoy responderemos la primera interrogante ¿Dónde encontramos Datos e Información?
Casi el toda la información sobre el tema esta en ingles, muchas veces esto es una limitante muy importante, al hablar de bases de datos tengo hacer referencia al National Center for Biotechnology Information (NCBI). Para mas información pueden visitar http://www.ncbi.nlm.nih.gov/genbank/

Ahora analizaremos un comando importante en Matlab que nos sirve para poder descargar los valores que necesitamos para practicar o procesar.

La sintaxis del comando es la siguiente
        Data = getgenbank('AccessionNumber', 'PropertyName',PropertyValue...)
        getgenbank(..., 'ToFile', ToFileValue)
        getgenbank(..., 'FileFormat', FileFormatValue)
        getgenbank(..., 'SequenceOnly', SequenceOnlyValue)

AccessionNumber: identificador único para cada secuencia.
ToFile:  identificador de ubicación.
FileFormat: Especifica el formato del archivo.
SecuenceOnly: nos da la capacidad de controlar una o mas veces la secuencia. False o True

Ahora usare en comando getgenbank para descargar la secuencia del cromosoma 19  encargado  de codificar el receptor de insulina.


S=getgenbank('M10051');
 %lo guardamos en la variable S

Procederemos a mostrar los Dato que contiene nuestra variable  S

>> S

S = 

                LocusName: 'HUMINSR'
      LocusSequenceLength: '4723'
     LocusNumberofStrands: ''
            LocusTopology: 'linear'
        LocusMoleculeType: 'mRNA'
     LocusGenBankDivision: 'PRI'
    LocusModificationDate: '06-JAN-1995'
               Definition: [1x42 char]
                Accession: 'M10051'
                  Version: 'M10051.1'
                       GI: '186439'
                  Project: []
                   DBLink: []
                 Keywords: 'insulin receptor; tyrosine kinase.'
                  Segment: []
                   Source: 'Homo sapiens (human)'
           SourceOrganism: [4x65 char]
                Reference: {[1x1 struct]}
                  Comment: [14x67 char]
                 Features: [51x74 char]
                      CDS: [1x1 struct]
                 Sequence: [1x4723 char]
                SearchURL: [1x67 char]
              RetrieveURL: [1x101 char]

Como ven el uso del comando getgenbank es muy útil y fácil de usar.
para que cada uno practique le dejo los siguientes códigos.
Espero sus comentarios

NC_000117   Chlamydia
NC_002179   Chlamydophila pneumoniae
                                                                                    

sábado, 13 de octubre de 2012

Programas para la Voyage 200 parte 3

Este programa permite calcular la presión de burbuja de una mezcla, que obedece a la ley de Raoult, de una mezcla ideal, (para mejor entendimiento). Es para voyage 200, la ecuación que utiliza para hacer los cálculos es la ecuación de Antoine en logaritmo natural, deben de checar que las constantes que introduzcan correspondan a la ecuación en logaritmo natural, es igual que en los programas anteriores, con la limitante de que sólo trabaja con las constantes para la ecuación en logaritmo natural. 
Para ejecutar este programa desde la Voyage 200 les dejo las siguientes capturas:

Solo tecleas en la Voyage en la página principal lo siguiente: bublp() y das enter




Después de eso te saldrá esta pantalla:




Introduces los datos necesarios y te dará el resultado.




Link de Descarga

sábado, 6 de octubre de 2012

input Avanzado en Matlab parte 2 - Validacion de Datos

Es una buena practica de programacion la Validacion  de nuestros datos a introducir, Matlab cuenta con múltiples comandos para validar datos, algunos de ellos son los siguientes: isempty, isinteger, isnan, isnumeric. Creo que no es necesario mostrar cada uno de ellos ya que con el simple nombre del comando u función nos damos a la idea de cual es el funciona miento.

%Validacion de Datos  de entrada en Matlab
%ejemplo practico.
clear all
clc
while true %iniciamos bucle infinito
    num = input('Introdusca un numero entre 1 y 10:  ');
    if isempty(num)
        fprintf('No soportado' \n');
    elseif ~isnumeric(num)
        fprintf('%s No es un numero \n',num);
    elseif num ~= round(num)
        fprintf('No es un No Entero \n');
    elseif num&lt;1 || num&gt;10
        fprintf('%f No esta en el intervalo 1 a 10\n',num);
    else
        fprintf('introdujo un No, correcto Gracias!! %f\n',num);
        break; % condición Valida salimos del bucle infinito
    end
end

miércoles, 3 de octubre de 2012

input Avanzado en Matlab parte 1 - Valores por Defecto

Una buena practica de programación es la incorporación de valores por defecto ( Default values ), esto nos permite que la aplicación sea mas entendible para el usuario, aun que muchas veces eso no ve reflejado en una mejora o simplicidad del código a escribir.
La característica principal de un valor por defecto  es que siempre nos basemos en el Dato más común que nuestros usuarios mostraran o usaran.
 Acontinuacion un ejemplo Sencillo.
clear all
clc
reply = input('Es mayor de Edad? Y/N [Y]: ', 's');
if isempty(reply)
    reply = 'Y';  % por default yes [Y]
end


reply = upper(reply); % Transformamos a mayusculas

if reply(1) == 'Y'  % verificamos 
    fprintf('Es Mayor de Edad Felicidades .\n');
else
    fprintf('No es Mayor de edad le Falta Crecer.\n');
end

Una gran ventaja de considerar que la repuesta puede ser introducida mediante mayusculas o minusculas la cubrimos con el comando upper.

posteriormente publicaremos la forma de validar datos en un input.

domingo, 23 de septiembre de 2012

Programas para la Voyage 200 Parte 2

A continuación les dejo unos programas para la Voyage 200 que les permiten calcular la presión y temperatura de saturación de especies puras, cabe señalar que un programa es para calcular con la ecuación en "logaritmo natural y otro en base diez" pongan atención en lo anterior para que no utilicen el programa equivocado

Para ejecutar este programa desde la Voyage 200 les dejo las siguientes capturas:

Solo tecleas en la Voyage en la página principal lo siguiente: ecantln() y das enter.



Despues de eso te saldra esta pantalla:


y eliges que es lo que quieres calcular, presión o temperatura.


te pedirá que ingreses los valores de las constantes y por ultimo te dara el resultado.
DESCARGAR ecantln()


Programas para la Voyage 200 parte 1

Este es un programa de mucha utilidad para las calculadoras programables Voyage 200 . La aplicacion se llama conv2() es un el cual es un completa herramienta para  hacer conversiones entre unidades.





Descargar Conv2()

viernes, 14 de septiembre de 2012

Waitbar avanzado en Matlab

MultiWaitBar creates a one or two-dimensional grid of waitbars in a single figure window. Titles and bar colors can be individually modified. Each bar is an instance of the WaitBarAxes class. The WaitBarAxes objects can be passed to functions or objects for updates without knowledge of their position in the grid. This download includes MultiWaitBar.m, WaitBarAxes.m and two demonstration programs.


Descargar

Listbox avanzado en Matlab (reorderable Listbox)

Crea un cuadro de lista cuyo contenido puede ser reordenado haciendo clic y arrastrando elementos. El cuadro de lista resultante puede ser totalmente personalizado utilizando el estándar métodos get y set.

El cuadro de lista es un estándar creado uicontrol Matlab ('Style', 'Listbox'), cuyo subyacente Java JList tiene las siguientes propiedades modificadas: 'DragEnabled', 'DragSelectionEnabled', 'DropMode', 'dropTarget', 'MousePressedCallback', y 'MouseReleasedCallback '.

El usuario puede especificar su propia "MousePressedCallback '(JList),' MouseReleasedCallback '(JList),' DragOverCallback '(dropTarget), y' DropCallback '(dropTarget) en la lista de entrada de propiedad / valor. Estas devoluciones de llamada se llamará al final de las devoluciones de llamada por defecto REORDERABLELISTBOX, con dos entradas, MANGO y EVENTDATA. El 'DragOverCallback' se da una tercera entrada, PERMORDER, que indica cómo la lista se ha reordenado, es decir STRING = STRING (PERMORDER). Esto se puede utilizar para reordenar los datos subyacentes que la lista puede representan.

Para cambiar el orden de los elementos, REORDERABLELISTBOX crea un objeto de arrastrar y soltar atado al cuadro de lista. Un resultado no previsto es que los elementos de lista pueden ser arrastrados fuera de la lista y se dejó caer en otros componentes. Los elementos también pueden ser arrastrados de otros objetos en la lista, bajando en la lista no tiene efecto.

Si el cuadro de lista muestra errático comportamiento redibujar cuando se reordenó rápidamente (las células individuales están elaborando demasiado alto o demasiado amplio), es posible que tenga que establecer explícitamente los "FixedCellHeight 'y' FixedCellWidth 'propiedades de JLISTBOX (valores de -1 indican Java para determinar automáticamente tamaño de la célula, pero puede dar lugar a este comportamiento errático).



DESCARGAR

sábado, 8 de septiembre de 2012

Msgbox avanzado en Matlab

Uso de los mensajes de usuario en matlab, mostraremos en este caso el funciona miento avanzado del msgbox en matlab.
Forma básica del msgbox:
 
msgbox('titulo','mensaje') 
  
Ahora modificaremos esta forma.
 
num=24;
txt{1}='arreglo uno'; 
       txt{2}=sprintf('arreglo 2 %u\n',num); 
     im=imread('bio.jpg');
   h = msgbox(txt,'mensaje','custom',im); 
  waitfor(h);

para mostrar el siguiente mensaje:
la imagen bio.jpg debe estar en el mismo directorio donde guardamos nuestra código. Así podríamos hacer una aplicacion sencilla y funcional como la siguiente.
 
edad=inputdlg('introduce tu edad');%obteniendo la edad
%obteniendo el sexo de la persona
sexo=questdlg('que sexo eres','pregunta','hombre','mujer','mujer');
 numero=str2double(edad);%conversión string--&gt;number
if strcmp(sexo,'hombre'); %evaluando la pregunta
   
     txt{1}='eres hombre'; %generado arreglo
       txt{2}=sprintf('tu edad es de %u\n',numero); %arreglo2 con la inf de edad
     im=imread('hombre.jpg');%leyendo imagen
   h = msgbox(txt,'resultados','custom',im); %maquetando mensaje a mostrar
  waitfor(h); %mostrar mensaje
else
      txt{1}='eres mujer lo mas hermoso de la creacion';
       txt{2}=sprintf('tu edad es de %u\n',numero);
          im=imread('mujer.jpg');
      h = msgbox(txt,'resultados','custom',im);
   waitfor(h);
    
end
La ejecutamos una vez.
    



lunes, 3 de septiembre de 2012

BioInformatica en Matlab

La bioinformática, según una de sus definiciones más sencillas, es la aplicación de tecnología de computadores a la gestión y análisis de datos biológicos. Los términos bioinformática, biología computacional y, en ocasiones, biocomputación, utilizados en muchas situaciones como sinónimos, hacen referencia a campos de estudios interdisciplinares muy vinculados que requieren el uso o el desarrollo de diferentes técnicas estudiadas universitariamente en la Ingeniería Informática como ciencia aplicada de la disciplina informática. Entre estas pueden destacarse las siguientes: aplicada, estadística, ciencias de la computación, inteligencia artificial, química y bioquímica con las que el Ingeniero Informático soluciona problemas al analizar datos, o simular sistemas o mecanismos, todos ellos de índole biológica, y usualmente (pero no de forma exclusiva) en el nivel molecular. El núcleo principal de estas técnicas se encuentra en la utilización de recursos computacionales para solucionar o investigar problemas sobre escalas de tal magnitud que sobrepasan el discernimiento humano. La investigación en biología computacional se solapa a menudo con la biología de sistemas.
MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticosy la visualización gráfica de los mismos.
MATLAB integra análisis numérico, cálculo matricial, proceso de señal y visualización gráfica en 2D y 3D en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribirían normalmente, sin necesidad de hacer uso de la programación tradicional.
MATLAB tiene también un lenguaje de programación propio, que permite crear aplicaciones basadas en el robusto código de MATLAB.
MATLAB dispone también en la actualidad de un amplio abanico de programas de apoyo especializados, denominadosToolboxes, que extienden significativamente el número de funciones incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prácticamente casi todas las áreas principales en el mundo de la ingeniería y la simulación.
La Bioinformatics toolbox ofrece a los biólogos moleculares y a otros investigadores científicos un entorno abierto y extensible, en el cual pueden explorar ideas, hacer prototipos de nuevos algoritmos, y construir aplicaciones en investigación de drogas, ingeniería genética, y otros proyectos genómicos y proteomicos.
La toolbox provee acceso a formatos de datos genómicos y proteomicos, técnicas de análisis y visualizaciones especializadas para secuencias genómicas y proteomicas y análisis de microarrays.
La mayoría de las funciones están implementadas en el lenguaje abierto de MATLAB, permitiéndote personalizar los algoritmos o desarrollar tus propios algoritmos. Con este último Toolbox The MathWorks está entregando el poder y versatilidad de su ambiente informático técnico integrado directamente a la biotecnología y las industrias farmacéuticas.

Como resultado, los bioinformáticos pueden usar el toolbox para enfocar los esfuerzos en el centro de su trabajo – la investigación y análisis – sin los riesgos asociados con usar programas o software dispares.
Entre sus numerosos rasgos y capacidades, el Bioinformatics Toolbox proporciona el acceso a archivos del genoma en formatos normales, los bancos de datos basados en la web como GenBank y PIR, y las fuentes de los datos en línea.
El toolbox también ofrece las rutinas especializadas para visualizar los datos de Microarrays (micro-arreglos o biochips), incluyendo las cajas de gráfico, los gráficos I-R y los mapas espaciales de calor.
” Los bioinformáticos han tenido que invertir mucho tiempo en matemática de programación y algoritmos de estadística en un horario corto, tradicionalmente,” dijo Kristen Amuzzini, gerente del área de biotecnologia, farmacéutica e industria médica de, The MathWorks. Y continua : “La combinación de los productos de MATLAB de hoy y el nuevo Bioinformatics Toolbox entrega las herramientas que ellos necesitan para analizar gran cantidad de datos y como resultado da elementos que identifican los puntos donde potencialmente se necesita desarrollar un remedio rápida y eficazmente.”

Archivos y expresiones en formato comprensibles en genética, genómica proteomica.
Acceso a bases de datos de Internet
Herramientas de análisis de secuencias
Conversión, adaptación y estadísticas de secuencias del genoma y proteínas.
Herramientas de análisis de árboles filogenéticos
Gráficas de puntos, gráficas de grupos, gráficas de sectores y otras representaciones gráficas de datos genómicos y proteómicos.
Funciones para alineamiento por pares y alineamientos múltiples de secuencias
Capacidad para analizar y visualizar datos de microarrays
Soporte para preprocesamiento y análisis de espectrometría de masas.
Funcionalidad de ontología de los genes

viernes, 31 de agosto de 2012

VideoTutorial 31 de Matlab


VideoTutorial 32 de matlab from Isrant on Vimeo.

Gráficos avanzados en Matlab parte 1/3 :
Animacion de gráficos 2D, uso de los comandos getframe, frame2im, imwrite. 
Creación de GIF animados. Enlace para descargar el software para hacer el Gif animado: es.kioskea.net/download/descargar-1933-ulead-gif-animator

domingo, 26 de agosto de 2012

Cálculo de Propiedades Térmicas de Alimentos - Choi Okos-(Usando Matlab)

Cálculo de propiedades térmicas de alimentos en amplios rangos de temperaturas (desde congelación), este código almacena todos los datos obtenidos en un archivo .mat para su futuro uso, por ejemplo: en ajuste de curvas/modelos matemáticos. Además, guarda las gráficas obtenidas en dos formatos eps y png, dichos formatos para subsiguiente importanción en latex o word, respectivamente.




sábado, 18 de agosto de 2012

miércoles, 15 de agosto de 2012

Tratamiento térmico (Thermal Processing ) proceso de conccion de Alimentos en Matlab

Este código está diseñado para ayudar en la enseñanza del proceso de cocción de los alimentos, ayudará a los estudiantes para analizar diferentes escenarios de casos, tales como: tamaño de lata, los microorganismos, la composición de los alimentos, el tiempo de procesamiento, el tiempo de enfriamiento, la temperatura de inicio de alimentos y así sucesivamente.La simulación se lleva a cabo utilizando métodos de diferencias finitas.Usted puede ver cómo utilizar este código aquí:





sábado, 11 de agosto de 2012

Hidrocar beta Sistema de informacion de hidrocarburos

Es un pequeño programa en cual gestiona algo de información sobre los hidro carburos conocidos como alcanos. Esta pequeña aplicacion la cree  para matar el aburrimiento les dejo el enlace de descarga el codigo no esta encriptado, por lo cual pueden hacerle sus propias modificaciones y adaptarlo a sus necesidades personales.
















Algunas sustancias Incluidas son las Siguientes.

Link de Descarga: DESCARGAR





sábado, 4 de agosto de 2012

Problema de Recursión (Los Conejos de Fibonacci)

Ya estamos de Regreso después de unas merecidas Vacaciones. Así  que empezamos a publicar nuevamente.
Alguien compra una pareja de conejos(un macho y una hembra), luego de un mes de haber hecho la compra esos conejos son adultos, después de dos meses de haber hecho la compra esa pareja de conejos da a luz a otra pareja de conejos(un macho y una hembra), al tercer mes, la primera pareja de conejos da a luz a otra pareja de conejos y al mismo tiempo, sus primeros hijos se vuelven adultos.Cada mes que pasa, cada pareja de conejos adultos da a luz a una nueva pareja de conejos, y una pareja de conejos tarda un mes en crecer. Escribe una función que regrese cuántos conejos adultos se tienen pasados n meses de la compra.

Solución Sea F(x) el número de parejas de conejos adultos pasados x meses. Podemos ver claramente que pasados 0 meses hay 0 parejas adultas y pasado un mes hay una sola pareja adulta. Es decir F(0) = 0 y F(1) = 1. Ahora, suponiendo que para alguna x ya sabemos F(0), F(1), F(2), F(3),
:::, F(x -1), en base a eso ¾cómo podemos saber el valor de F(x)? Si en un mes se tienen a parejas jóvenes y b parejas adultas, al siguiente mes se tendrán a + b parejas adultas y b parejas jóvenes. Por lo tanto, el número de conejos adultos en un mes n, es el número de conejos adultos en el mes n-1 más el número de conejos jóvenes en el mes n-1.Como el número de conejos jóvenes en el mes n-1 es el número de conejos adultos en el mes n-2, entonces podemos concluir que:
F(0) = 0
F(1) = 1
F(n) = F(n - 1) + F(n -2) 
El siguiente código en C muestra una implementación de una función recursiva para resolver el problema planteado por Fibonacci:

int F( int n) {
   i f (n==0){
          return 0 ;
               } el se i f (n==1)
 {
            return 1 ;
     }
        el se {
     return F(n-1)+F(n-2) ;
  
  }

        } 
Si corres el código anterior en una computadora, te darás cuenta que el tamaño de los números crece muy rápido y con números como 39 o 40 se tarda mucho tiempo en responder, mientras que con el número 50 parece nunca terminar.
Hemos resuelto de manera teórica el problema de los conejos de Fibonacci,sin embargo esta solución es irrazonablemente lenta.
Como curiosidad matemática, posiblemente alguna vez leas u oigas hablar sobre la sucesión de Fibonacci, cuando suceda, ten presente que la sucesión de Fibonacci es
F(0); F(1); F(2); F(3); F(4); F(5); :::
O escrita de otra manera:
0; 1; 1; 2; 3; 5; 8; 13; 21; 34; 55; :::
Además de servir como solución a este problema, la serie de Fibonacci cumple también con muchas propiedades interesantes que pueden servir para resolver o plantear otros problemas.