Etiquetas

BIENVENIDOS. AQUI ENCONTRARAS DIFERENTES CONTENIDOS

Todos como hijo de la tierra estamos destinados a protegerla. valora cada espacio en el que habitats, siembra conciencia en los demas y haz parte del cambio.

PIENSA

"La tierra proporciona lo suficiente para satisfacer las necesidades de cada hombre, pero no la codicia de cada hombre"-Gandhi.

ACTUA

"Todo lo que le ocurra a la tierra, le ocurrirá a los hijos de la tierra" Jefe indio Seattle.

ACTUALIDAD AMBIENTAL

"Temas relacionados con las problematicas ambientales del dia a dia - Distintos puntos de vistas."

CONCIENCIA

"El que nos encontremos tan a gusto en plena naturaleza proviene de que ésta no tiene opinión sobre nosotros - Jordi Bigues."

INGENIERIA AMBIENTAL

"Teorias, modelacion ambiental, articulos, alternativas de desarrollo sostenible - Desde la academia."

ARTICULOS ALGORITMO Y PROGRAMACION

Escritos sobre temas de programacion basica.

MUSICA

"Remixes, mix, remix, loops, y todo tipo de genero - DJ EL ESPECTRO."

INNOVACION Y TECNOLOGIA

"ESCRITOS Y DOCUMENTALES CON TEMAS QUE NOS INTERESAN SOBRE EL FUTURO DEL MUNDO TECNOLOGICO - ENLACES DE INTERES."

TEMAS DE INTERES GENERAL

"Diferentes tematicas que despiertan curiosidades - ENLACES DE INTERES."

domingo, 16 de agosto de 2015

TERMODINÁMICA DE LA EVOLUCIÓN BIOLÓGICA.

“los seres vivos son unos sistemas termodinámicamente abiertos que intercambian materia y energía con el mundo exterior para adquirir y mantener estructuras que su vez, son susceptibles de evolucionar”. 
“Termodinámica de la evolución” ¿cómo la termodinámica participa en el origen y evolución de los seres vivos?, aunque este texto es llevado a un enfoque científico un poco complejo, su estructuración, ejemplos y explicación de cada hipótesis con su respectivo estudio permitirá comprender lo que se pretende comunicar, desde la frase inicial del escrito. Como bien se habla de muchos estudios que corroboran las teorías explicadas, se puede decir que la evolución de cualquier sistema cuyo contenido informativo tiene que transmitirse a la descendencia es un fenómeno inevitable porque no puede existir un material replicable ni un mecanismo que dé cuenta de ello sin que se produzcan errores. Los errores son inherentes a la naturaleza, porque las leyes de la química y de la física son estadísticas, es decir, se cumplen en una cierta proporción, que puede ser muy alta, pero que nunca es absoluta, y esta propiedad se pone más de manifiesto cuanto más complejos son los sistemas. En los seres vivos las leyes estadísticas garantizan sólo un cierto porcentaje del comportamiento. Por otra parte esto es mucho más importante porque marca una dirección. 

La evolución biológica está motivada por el segundo principio de la termodinámica, el cual establece que la tendencia natural de cualquier sistema físico aislado es evolucionar hacia un aumento de entropía. Si en la evolución de un sistema particular observamos una disminución de entropía, eso nos dice que todo él está sometido a un campo más general, en el cual la entropía aumenta. Es por eso que los seres vivos están sometidos a varios campos termodinámicos debidos principalmente a las reacciones químicas de la vida, y así su evolución debe hacerse obligatoriamente cumpliendo ese principio general de la física. Debemos, pues, considerar el segundo principio de la termodinámica como la primera ley de la evolución biológica, dado que es la ley universal de evolución. Ahora bien muchos son los físicos que han intentado llevar a precisar los fenómenos a través de cálculo, por lo que Boltzmann fue el que más se acercó a los principios de la entropía; Boltzmann se limita a describir la entropía de un sistema de partículas, como un gas ideal, y sólo es aplicable para hacer ciertas mediciones en reacciones químicas. Sin embargo, esta fórmula contiene los elementos necesarios para que podamos comprender el concepto generalizado de entropía, como índice del número de configuraciones posibles que puede tener un sistema La vida produce descensos locales de entropía como se hablaba en los estudio de termogramas, balances entrópicos y estudios con la evolución de cualquier ser vivo hasta que su entropía quede en equilibrio es decir cuando muere; se vería de este modo, cuando las plantas desarrollan su organismo fijando el dióxido de carbono atmosférico, y también otras veces su actividad produce un aumento local de entropía; otra forma, cuando un animal cualquiera mata para comer y sobrevivir, o cuando se produce una extinción masiva. El desarrollo de la vida, desde su origen hasta el momento actual ha producido una disminución neta de entropía global, pero una vez que los seres vivos han aparecido, si la biomasa se mantiene constante, el sistema evoluciona por un lado hacia la diversidad y hacia la complicación, es decir hacia un aumento de entropía y por otro hacia la complejidad, es decir hacia un descenso de entropía. 

Como lo expresan los científicos debemos inferir que los sistemas vivos no violan la segunda ley de la termodinámica. Se debe entender cómo se aplica la segunda ley a los sistemas vivos, para esto se debe visualizar desde un sistema abierto. Como una región del espacio del cual puede entrar y salir materia y energía a través de los límites que definen dicha región. Como se ve en una célula viva es un sistema abierto porque puede ingerir alimentos en esencia materia, pueden excretar desperdicios y puede calentarse o enfriarse según el ambiente en que esté realizando intercambio de energía. 

Por estudio de biología se sabe que los organismos vivos, cuando comen, toman de los alimentos las sustancias que les sirven y con ellas elaboran muchas otras más. Lo que no se aprovecha, sale como desecho. Las sustancias que se elaboran al asimilar los alimentos pueden llegar a ser más complejas de las que se originaron. Es aquí donde está la paradoja, pues parece ser que un organismo vivo recibe una materia prima con cierto desorden y la transforma en sustancias con mayor orden y complejidad, desechando otras sustancias con cierto desorden. Planteado en términos de entropía y definir que un ser vivo es capaz de hacer que la entropía en su interior sea menor que la de los alimentos que ingirió, reduciendo así la entropía del universo. Se puede inferir que se está muy lejos de la verdad: cuando ingiere alimentos un ser vivo, estos pasan por una serie de reacciones químicas que permiten separarlos para aprovechar las partes que sirven de las que no, para ello, se requiere de movimiento molecular y celular, lo que genera calor y por ello entropía. Esta entropía generada sumada a la de los desperdicios producidos por el proceso, aumentan claramente la entropía del universo. Lo que lleva a concluir que para generar esas sustancias más ordenadas y complejas dentro del organismo vivo, se tuvo que generar más desorden en el universo, por consiguiente, estos procesos son acompañados de trabajo útil que tiene como finalidad precisamente mantener la vida de los organismos. Es por ello que un sistema vivo no viola la segunda ley. Por ejemplo cuando hacemos una actividad cotidiana, Es claro que todo aumento de orden en una región, conlleva un aumento mayor de desorden en el universo. Una idea que se puede obtener de la lectura “Termodinámica de la evolución biológica” es que También se puede notar que una vez desaparecida una especie, esta no vuelve a aparecer sobre la faz de la Tierra. Lo que se intuye que quizás exista cierta irreversibilidad en los procesos evolutivos. 

Schrödinger y la entropía negativa en su libro llamado ¿Que es la vida?, plantea que los seres vivos, al contrario de la tendencia general dictada por la 2da ley de la termodinámica, mantienen o disminuyen su entropía alimentándose de lo que él llama, entropía negativa; pero los desechos que se eliminan y el calor que liberan son entrópicamente positivos, esto se puede enfocar a la pirámide de la vida. Los seres vivos han evolucionado de tal manera que extraer de manera eficiente la entropía negativa y la energía de la radiación de fotones del Sol. En la base de esta pirámide se encuentran las especies que utilizan procesos fotosintéticos para sintetizar compuestos orgánicos altamente estructurados tales como hidratos de carbono. La entropía de los materiales utilizados se reduce gracias a la entropía negativa. 

Los animales utilizan la energía del Sol y la entropía negativa indirectamente y, por tanto, dependen de las especies foto sintetizadoras. Durante la alimentación y la digestión, la energía y la entropía negativa se extraen con el fin de construir y mantener un organismo mayor jerarquía. A medida que se sube en la pirámide la cantidad de energía en el sistema va disminuyendo. Esto se debe en parte a que la energía que viene del Sol no se utiliza, o también, a que parte de la energía adquirida por los seres vivos es eliminada en forma de calor por los distintos procesos metabólicos que usan para mantener su estado estacionario. 

De esta manera, es esta pérdida de energía la causa de que la entropía del universo aumente. En una visión general, el sol está actuando como una fuente calidad y el universo como una fuente fría, en donde finalmente la entropía total tiende a aumentar tal como lo indicaría la segunda ley de la termodinámica. 

Si bien se puede decir que todas las especies de la tierra tienden a ser seleccionadas de forma tal que puedan aprovechar cada vez más y mejor el consumo de esta entropía negativa. Esto implica dos cosas: por un lado, la evolución de una especie; y por otro, el surgimiento de otras nuevas que pueden o no desplazar a las anteriores. Por lo que la evolución parece ser irreversible. Por lo que visto desde la biología para regresar una especie que despareció nos tocara regresar varias mutaciones de otros seres vivos que han evolucionado a partir del que ya desapareció. Entonces se puede concluir que no se violó las leyes de la termodinámica. Nosotros los vivos, bajamos nuestra entropía a costa de la entropía negativa y energía solar, pero como desechamos y emanamos entropía de la buena, incrementamos la universal. Entonces podemos seguir evolucionando irreversible y tranquilamente. 


Por ultimo basado en la lectura si la idea de la evolución es correcta, entonces serían buenas las mutaciones que sufrimos los humanos, para que así se crearan seres más sofisticados. Casi la totalidad de las mutaciones son dañinas y perjudiciales, es por eso que nos cuidamos de los rayos fuertes del sol: hoy en día la teoría cosmológica más aceptada es “Big Bang” que dice que el universo comenzó en un estallido y que actualmente se está desordenando cada vez más, llevándonos a la muerte inevitable con el tiempo y esto lo podemos probar día con día. La segunda ley tiene validez universal, pero para soportar la evolución, requeriría de una cierta fuerza organizadora que hasta ahora no se ha descubierto experimentalmente si no solo hasta el grado de la hipótesis. 

Ensayo basado en el artículo de David Lurié y Jorge Wagensberg.

Camilo Borja © 2015 All rights reserved.

“The use of ecosostenible technology and environmental Innovation as possible solutions to environmental problems”.

When the historical complexity of the facts that we live in everyday addressed is surprising, so does the number of problems facing the planet caused by the historical journey of man in it. Environmental phenomena occurring today have been caused from the beginning of mankind, from the discovery of fire by man, from there, they could say started the technological and intellectual progress of man. "The word "technology" is a broad term and does not simply refer to high-tech inventions or computerization, which is actually the misconception.

Technology comprises the crafting of materials and transforming them into implements that allow man to control or manipulate natural resources in order to meet his needs. Technology dates as far back as the Stone Age, when man discovered how to make fire, 1.4 million years ago. In fact, no one could have thought back then that fire, including its wood burning technology could create an impact on today’s natural environment through its greenhouse gas emissions.” 1 That's why they spent the years, technological advancement is no longer limited to the mere purpose of meeting human needs for food, clothing and shelter. Different forms of technological developments described the time of each civilization.

It started from Stone Age and was elevated to the Bronze Age and finally reached the Iron Age, which brought technological advancements in weaponry. It was actually very important facts in humanity, as more and more men sought to invent new things towards their benefit, therefore, Advancements in technology also brought the finer things in life, making it necessary for man to accelerate his economic growth.

Technology was used to speed up production and manufacture of goods, to provide better transport and delivery as well as make the methods of communication not only faster but also, far reaching. Trade and commerce flourished at faster rates due to technological advancements and brought about globalization. As trade and commerce grew, the more it heightened the impact of technology on natural environment wherein air, land and water reached certain degrees of pollution, degradation and contamination.

This has caused that at present a number of environmental problems that have been developed from poor exploitation of natural resources that gives the planet earth. All this has led to societies of scientists, researchers and other academics in the world to seek alternatives to try to reduce the impact that occurs in nature malpractice man. That's why from different points of view of science man tries to find solutions to reduce the rate of degradation of different accessories that make up ecosystems and environmental resources which can obtain land for sustaining human life around globe. Although the solution of the environmental crisis in the world is not entirely 
1 taken from, http://www.brighthub.com/environment/science-environmental/articles/61319.aspx

possible through the innovation of new technologies artificially implanted to create an environment, it is sought is the creation of sustainable bio-technology to bring benefit to the environment. And you can keep a sustainable life for future generations. But it is not a situation today, several decades ago when humanity began to feel the effects caused by excessive pollutants into the environment, different sectors in the world were given the task of implementing strategies and possible solutions to the crisis It's beginning to live in the world. Everything starts after the second world war, as is inferred obtaining weapons by nations has been one of the major problems of humanity because it seems more important to man the weapons that the life of the earth . Green technology came as part of the solution. It was a positive side, new technology brought about what is known in the history of man as the information age.

This time will become important not only greatly improved trade but also to give birth instruments that reduce the accumulated negative effects of technology on the natural resources of the Earth. Green technology has come up with better solutions of generating heat and energy. The sun’s powerful UV rays are being harnessed through solar panels instead of the wood burning process. The kinetic powers of wind and water currents are being utilized to produce electricity that can lessen the demands for coal and fossil fuels. But the so-called green breakthrough in my opinion was not very beneficial in the part of the agricultural industry and all cultivation processes were accelerated through the use of fungicides, pesticides and other chemicals that were more efficient production of food products, but more harmful to health. All this, take the largest negative impact of technology, especially land and water. Green technology itself is strongly oriented to diminish, if not reverse all the negative impacts of technology as millions of people, especially children have come to develop respiratory diseases such as chronic disease. But despite so much conflict between environmentalists and industrial and business sectors, today we are viewing that large multinationals have the best advancement of technology, they are innovative in seeking friendly technologies environment, from the implementation of the electric car , cities operate using 100% natural and biosustainable, the effort of the great universities in the world to train people with talents and abilities to make beneficial changes to the environment, it has been postulated that the same technology can be used to find solutions to the problems we face today, and apparently this is echoed in much of humanity, and who resents innovations, research has created devices, buildings, playgrounds, housing, allowing to obtain energy and transform.

I have now given the task of investigating some of the advances that may contribute to the protection and improvement of the environment, such as generating energy through glass tiles replacing solar panels, as students from a European university managed to create a device based on the study of algae to produce oxygen “World’s First Urban Algae Canopy Produces the Oxygen Equivalent of Four Hectares of Woodland Every Day” 2 , obtaining water from air "A tower that converts air into drinking water,"3 arab emirates buildings powered by solar light, and that are sustainable housing with rain water resources, solar energy, is all part of the awareness people, many European cities are classified as ecostenibles cities for its friendly organization with the environment, able to reuse 100% of its waste, produce energy through the same systems of sewage, some of these cities are Stockholm, Hamburg, Vitoria-Gasteiz, Bremen, Dongtan eco-city in China, a solar city Linz in Austria, Industrial Ecology in Kalundborg, social sustainability in Rotterdam. “One of the most pervasive problems afflicting people throughout the world is inadequate access to clean water and sanitation. Problems with water are expected to grow worse in the coming decades, with water scarcity occurring globally, even in regions currently considered water-rich. Addressing these problems calls out for a tremendous amount of research to be conducted to identify robust new methods of purifying water at lower cost and with less energy, while at the same time minimizing the use of chemicals and impact on the environment. Here we highlight some of the science and technology being developed to improve the disinfection and decontamination of water, as well as efforts to increase water supplies through the safe re-use of wastewater and efficient desalination of sea and brackish water” 4 . It is for all these systems that have implemented some cities in the world and an example for other nations in the world that I see in the advancement of engineering and technology as the possibilities of creating a sustainable planet. Communities take extra effort to green lifestyle and reduce the negative impacts of technology on the natural environment.

However, nations continue to increase the use of technology in the war and that produce weapons that use metals, chemicals and microorganisms that have far greater negative effects. It can be assumed that the accumulation of negative technological impact can be remedied green technology concepts and changing lifestyle. In fact, everyone is encouraged to be patient and that the completion of the rehabilitation of the environment cannot take place in our life, but of future generations. However, everything is being done to improve environmental conditions today can be easily removed with a single release of the technology of war tomorrow, as the man continues to engage in acts of war and terror. The most sophisticated weapons, more distressing impact of technology on the natural environment, will take place. Increasingly urgent focus is the care of ecosystems, as well as man-made systems that disrupt our environment, causing difficulties that do not allow a return to balance necessary to sustain life created.

To do so requires changing patterns of use and consumption, promoting equity and justice to meet the needs of all, raising awareness of the abuse of the environment and producing immediate and short and medium term with respect to various problems actions, such as: land degradation, environmental pollution, climate changes, loss of biodiversity, human overpopulation, and many other factors that will negatively condition the future of the current pattern humanidad. Transformar life to achieve a harmonious relationship with the environment requires a concerted effort and interaction of knowledge among all involved.

2 taken from: http://inhabitat.com/incredible-urban-algae-canopy-produces-the-oxygen-equivalent-of-fourhectares-of-woodland-every-day/ 3 http://www.labioguia.com/notas/una-torre-que-convierte-aire-en-agua-potable 4 http://www.nature.com/nature/journal/v452/n7185/abs/nature06599.html

Camilo Andrés Borja Díaz © 2015 All rights reserved.

Sources consulted:
 Nature. Science and technology for water purification in the coming decades.Received 14 July 2007. http://www.nature.com/nature/journal/v452/n7185/abs/nature06599.html The bioguia.

A tower air becomes clean water. tecnología.2015. http://www.labioguia.com/notas/una-torre-que-convierte-aire-en-agua-potable environmental science and technology.articles.2015. http://pubs.acs.org/journal/esthag Discover science for the curious.

Environment. Articles.water.energy.earth science.climate change. http://discovermagazine.com/topics/environment Green progress.

For a green future. alternative energy. http://www.greenprogress.com/ Bright hub. Sarah Malburg•updated: 10/14/2010.

 A Brief History of Technology and its Impact on Natural Environment http://www.brighthub.com/environment/scienceenvironmental/articles/61319.aspx Sciencedirect. Dominique Foray, Arnulf Grübler, Technology and the environment: An overview http://www.sciencedirect.com/science/article/pii/004016259500064X

Ciudades ecointeligentes. Ecointeligencia.2012. www.ecointeligencia.com

Inhabitat.architecture.Ross Brooks.2015. World’s First Urban Algae Canopy Produces the Oxygen Equivalent of Four Hectares of Woodland Every Day. http://inhabitat.com/incredible-urban-algae-canopy-produces-the-oxygen-equivalent-offour-hectares-of-woodland-every-day/ Diarioecologia. Innovacion.

Tejas de vidrio sustituyen a los paneles solares. http://diarioecologia.com/tejas-de-vidrio-sustituyen-a-los-panelessolares/?doing_wp_cron=1436466412.9512720108032226562500

domingo, 31 de mayo de 2015

14. Aplicaciones con matrices

Continuando con matrices, la importancia de esta forma matemática de representar objeto, cosas, variables es muy amplio que si nos pusiéramos a profundizar sobre el tema tocaría escribir un sinnúmero de artículos  más, pero lo que haremos es dar una breve información. La teoría matriz es ampliamente utilizada en la informática. Las bibliotecas gráficas como por ejemplo OpenGL se valen de transformaciones espaciales y de las matrices para representar gráficos 3D a 2D que luego se traducen a imagen en los monitores. 

También son muy útiles para agilizar algunas operaciones algebraicas que de otro modo serían tediosas de resolver de otro modo. Por ejemplo, calcular el valor n-ésimo (para un n muy grande) de la serie de fibonacci es impráctico por algoritmos recursivos, e iterativos. Lo mejor es optar por algoritmos basados en el principio divide y vencerás y en las matrices. 

Los sistemas de detección de rostros no podrían concebirse sin el aporte de las transformaciones espaciales, vectoriales y de las matrices.  En la programación lineal se emplea ampliamente los sistemas de ecuaciones e inecuaciones. Estos, como ya he dicho se resuelven velozmente mediante matrices.

En los videos juegos y sistemas de simulación se emplean muchas veces para representar de forma abstracta ciertas estructuras de datos que puedan representar algunas entidades del dominio en estudio. Por ejemplo, se puede representar o concebir el mapa de un terreno de un juego como una matriz. Como es el caso del juego buscaminas que se ha dado como ejemplo en clases de algoritmo para la temática de matrices.

Pero como no vamos a profundizar en el tema, veremos como se utilizan técnicas en Matlab para resolver distintos tipos de matrices; como sabemos Matlab está fundamentalmente orientado al trabajo y el cálculo matricial. Veremos que las operaciones están definidas para el trabajo con este tipo de elementos.

Por ejemplo, el siguiente comando define una matriz A de dimensión (3x3):
>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es:
         1 2 3
         4 5 6
         7 8 9
Podemos hacer las operaciones, suma (+), resta (-), multiplicación (*), producto punto (.*), exponencial (^), división (/) (\),  inversa (‘).
inv(A) da como resultado la matriz inversa de A.
det(A) da como resultado el determinante de A.
trace(A) da como resultado la traza de A.
rank(A) da el rango de A
eye(n) forma la matriz identidad de  tamaño (nxn)
zeros(m,n) forma una matriz de ceros de tamaño (mxn)
zeros(n) forma una matriz de ceros de tamaño (nxn)
ones(n) forma una matriz de unos de tamaño (nxn)
ones(m,n) forma una matriz de unos de tamaño (mxn)
rand: este comando genera números pseudoaleatorios distribuidos uniformemente entre 0 y 1. Cada llamada proporciona un nuevo número.
rand(n): genera una matriz de números pseudoaleatorios entre 0 y 1, con distribución uniforme, de tamaño nxn.
rand(m,n):  igual que en el caso anterior pero de tamaño mxn.
El operador (:) es de gran importancia en Matlab. Puede decirse que es un operador que respeta el rango. Veamos su utilidad con algunos ejemplos:
>> x=1:10
x =
     1     2     3     4     5     6     7     8     9    10
>> x=[0:2:10]
x =     0     2     4     6     8    10
A continuación veamos cómo podemos mostrar los elementos de T en el orden en que es almacenado. En primer lugar, asignemos un valor a T:
T=rand(4,2,3);
En el vector columna correspondiente, los elementos vienen dados en el orden en que son almacenados por:
for p=1:3
    for n=1:2
        for m=1:4
            disp(T(m,n,p));
        end
    end
end

Para obtener ayuda acerca de estas funciones, en la ventana de MatLab escribe help sub2indo help ind2sub. Para obtener ayuda mas detallada, escribe doc sub2ind o doc ind2sub.
Ejemplo
Escriba una matriz que de los puntos intercalados dentro de la matriz como se realiza en una tabla de ajedrez.
Void imprime_ajedrez(matrix,m,n)
                Variables:
 I: entero
                INICIO
                               PARA i DESDE 1 HASTA m CON_VARIACION +1
                                               SI i % 2 <> 0
                                                               Imprime_fila_intercalada(matrix, i, 1, n)
                                               DE_LO_CONTRARIO
                                                               Imprime_fila_intercalada(matrix,i,2,n)
                                               Fin(SI)
                               Fin(PARA)
                FIN
Fin(imprime_ajedrez)
Void imprime_fila_intercalada(matriz, fila, inicio, fin)
                Variables:
j: entero
                INICIO
                               PARA j DESDE inicio HASTA fin CON_VARIACION +2
                                               ESCRIBA(matriz[fila][j]
                               Fin(PARA)
                FIN
Fin(imprime_fila_intercalada)

Proceso en Matlab
function imprime_ajedrez(matriz,m,n)
                for i = 1:1:m
                               if mod(i,2) ~= 0
                                               imprima_fila_intercalada(matriz, i, 1, n);
        else
                                               imprima_fila_intercalada(matriz, i, 2, n);
        end
    end
end

Chequéate el siguiente  vídeo para que tenga una idea mas clara del trabajo con variables de tipo matricial en matlab.


POR CAMILO BORJA © 2015 ALL RIGHTS RESERVED. 

Fuentes consultadas.
Manipulación de matrices en Matlab.2015. kioskea.com. http://es.kioskea.net/faq/2991-manipulacion-basica-de-matrices-en-matlab.
Mnp@ofimatica.net. 2015. Manipulación básica de matrices en MatLabhttp://es.kioskea.net/faq/matlab-141#2991


jueves, 28 de mayo de 2015

13. Matrices

Como ya sea definido los arreglos es decir los vectores, en este escrito se enfatizara en las matrices que son unos de los temas más importantes en la programación, para una definición precisa en la programación  las matrices son un conjunto de variables, también llamado bloque, del mismo tipo que el considerado en matemática, y cuyo acceso se realiza por índices o líneas.

Una matriz puede almacenar distintas variables del mismo tipo en una estructura de datos de matriz. Para declarar una matriz  hay que especificar el tipo de sus elementos. Su manejo es igual que los vectores anteriormente tratados, los valores de las variables se llaman elementos, de la misma forma que en los arreglos y sus índices están compuestos por dos caracteres que indican su posición. Para poder acceder a un elemento se debe poner su posición compuesta de los dos índices.

Por ejemplo para la matriz A y la posición en la fila 1 y columna 2 se debe poner A[1][2], denotándose que el primer índice indica la posición de la fila y el segundo la posición de la columna.

Para acceder a todos los componentes de una matriz solo basta con utilizar una variable que sirva como índice sobre las filas cuyo valor cambie entre 1 y el número total de filas, y usar una variable que sirva como índice de las comunas, cuyo valor cambie entre 1 el número de columnas. Para esto nos valemos dos ciclos para anidados
5 3 1
4 4 2
3 5 5
for fila=1:3
for columna =1:3
notas(fila, columna)=input(‘Ingrese dato: ’);
end
end

Ejemplo
La universidad de Antioquia desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniería. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por asignatura. Las asignaturas están codificadas de 1 a 6 y hay 30 alumnos.
Solución: debemos trabajar con una tabla o matriz o arreglo bidimensional.
Suponga que quiero hacer la siguiente operación entra las matrices a y b. Cabe aclarar que las matrices tienen que ser de las mismas dimensiones, para este ejemplo se definieron dos matrices de 2x2. 
Código en Matlab
>> a=[2 .5;1 3];b=[2 1;.5 3]; %Declaración de las matrices.
>> a+b

ans =

    4.0000    1.5000
    1.5000    6.0000

Para una mejor profundización del tema chequéate el siguiente video.


POR CAMILO BORJA © 2015 ALL RIGHTS RESERVED. 


Fuentes consultadas.


[1] Fuente https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidV44LSk3N3I6czUpLbygOdAy9PFwURnf6QcGgX7mFUzwu5kl6js9SimGQpt-R6-ODkgOs8H9WlzPn06tURhFdrLmvJ7eEvZQibGtBk4UMy-GI3aJCzY5uEkDpaC2cyABrNSAAo8KGeb4/s1600/matriz.png

matrices.documentopd. fhttp://www2.udearroba.co/pluginfile.php/89661/mod_resource/content/0/Modulo_14/las_matrices.pdf

miércoles, 20 de mayo de 2015

12. Aplicaciones con vectores

En el escrito anterior habíamos definido que es un vector que es analógicamente es un arreglo en programación, se continuara con otros conceptos de vectores, así como la definición de una bandera y su función en una estructura, además se desarrollara algunas aplicaciones de problemas en que se podrá evidenciar el uso de vectores como la mejor alternativa para el desarrollo de los programas.

Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del lenguaje de programación un vector podría tener una cantidad variable de datos en el mismo programa. En este caso, se les denomina vectores dinámicos, en oposición, a los vectores con una cantidad fija de memoria asignada se los denomina vectores estáticos. El uso de vectores dinámicos requiere realizar una apropiada gestión de memoria dinámica. Un uso incorrecto de los vectores dinámicos, o mejor dicho, una mala gestión de la memoria dinámica, puede conducir a una fuga de memoria. Al utilizar vectores dinámicos siempre habrá que liberar la memoria utilizada cuando ésta ya no se vaya a seguir utilizando.

Habiendo definido los vectores de una forma general, aunque existen libros que definen muchos tipos de vectores, hasta el momento nos conformaremos con los conceptos que hemos visto, ya que en todos los artículos hemos hablado de programación en una forma básica y en paralelo con el lenguaje de programación de MATLAB.

Ahora bien. Cuando se diseñan algoritmos que incluyen estructuras de control repetitivas, existen ciertas variables que cumplen una función específica en cada iteración del ciclo; las más comunes son: las variables contadoras, las variables acumuladoras y las variables bandera.

¿Pero que es una Variables bandera?
¡Pues fácil! Una variable bandera es utilizada dentro de la condición del ciclo, ya sea sin negar, negada o conectada con una expresión booleana, ¿Cómo así booleana?, ¡pues fácil! En datos lógicos que puede representar valores de lógica binaria.  Para determinar cuándo un ciclo se sigue iterando o cuando no. De esta manera una variable bandera debe ser de tipo booleano.

Ejemplo. Realizar un programa que lea una serie de números reales y los sume. El programa debe preguntar al usuario cuando desea ingresar un siguiente dato y si el usuario responde que no desea ingresar más datos el programa debe confirmar la respuesta. Si el usuario desea continuar ingresando datos se debe seguir solicitando datos y si el usuario confirma su deseo de salir, el programa debe mostrar la suma de los datos leídos y terminar.

Especificación:
Donde, datos es la colección de n números reales que el usuario ingresa hasta que decide no continuar ingresando datos y sumaÎ R es la suma de dichos números.

Algoritmo Solución

bandera: booleano
suma: real
dato: real
c: caracter
bandera := verdadero
suma := 0.0
mientras (bandera) hacer
escriba( “Ingrese un dato:” )
leer (dato)
suma := suma + dato
escriba( “Desea continuar ingresando datos (S/N):” )
lea( c )
si (c = ‘N’ | c = ‘n’) entonces
escriba( “Realmente desea salir (S/N):” )
lea( c )
si (c = ‘S’ | c = ‘s’) entonces
bandera := falso
Fin (si)
Fin (si)
Fin_mientras
escriba( “La suma es:”)
escriba( suma )

Vale la pena recordar que una variable del tipo booleano toma valores de verdad y por lo tanto, por sí sola es una expresión lógica. Adicionalmente, la expresión lógica bandera = verdadero es equivalente a la expresión lógica bandera.

A continuación vas a ver una serie de aplicaciones donde se evidencia la utilización de vectores para dar solución a cada problema.

Ejercicio 1
Escriba un algoritmo que muestre por pantalla el contenido de un vector. Los valores de las componentes de vector se introducen por teclado (hasta que introduzca el numero 0). 
 Algoritmo
Variables
  Entero: i, num
  Vector Entero: a
Inicio
  i = 0
  Escriba(“Introduzca un valor de una componente del vector o 0
para finalizar”)
  Lea (num)
  Mientras (num <> 0) hacer ¡Relleno el vector con los valores
leídos desde teclado
  a[i] = num
  i = i+1
  Fin (Mientras)
  i = i - 1
  Mientras (i >= 0) hacer
  Escriba a[i]
  i = i-1
  Fin (Mientras)
Fin

Ejercicio 2
Considere una encriptación de mensajes muy antigua inventada por Isaac newton, la cual se basa en que a cada letra de un mensaje se le asocia un número (el orden en el abecedario), luego se suma al número de  cada letra otro número la clave y el resultado es una nueva letra, mira en el abecedario. Por ejemplo, el mensaje “cruzad el rubicon”, se transformaría en “dsvabeUfmUsvcjdpo” si le sumo el número clave 1 a  cada letra (ya que la primera letra del mensaje cifrado, la ‘d’, es la que va tras la ‘c’, etc.). Note que la ch, ll, ñ no existen, y que después de la ‘z’ va la ‘a’. Además los espacios en blanco se convierten en letras U  si la clave es 1, en V si es 2, etc.  Para ello, elabore en pseudocódigo un algoritmo que a partir de un texto (cadena de caracteres leída por  teclado) imprima texto cifrado con la clave entera, también leída desde teclado. Pista: Dentro del bucle que debe recorrer todas las letras del texto, use la siguiente fórmula para encriptar: 
Texto_encriptado[i] =(texto_original[i]-'a'+clave)%26+'a';  /*26 es el número de letras del alfabeto ASCII*/
Algoritmo Encriptación
Constante
 Entero: LetrasASCII, N ¡N es la longitud del texto  
Variable
 Entero: i, clave
 Vector Caracter: texto_encriptado, texto_original
Inicio
 LetrasASCII = 26
 Escriba(“Leer el texto a encriptar:”)
 Para i<-0 hasta N-1 hacer
  Lee texto_original[i]
 Fin (Para)
 Para i<-0 hasta N-1 hacer
  texto_encriptado[i] =(texto_original[i]-'a'+clave)%26+'a')
 Fin (Para )
 Escriba( “El texto encriptado es:”)
 Para i<-0 hasta N-1 hacer
  Escriba( texto_encriptado[i] )
 Fin (Para)
Fin

POR CAMILO BORJA © 2015 ALL RIGHTS RESERVED. 

Fuentes consultadas.

INTRODUCCIÓN A LA ALGORITMICA (FUNDAMENTOS DE INFORMÁTICA). (Curso 03-04). 2011.E.U.P. Universidad de Sevilla
Tipos de variables .Conceptos.2014. cursos.ingenieria.

Alegsa. Definición bandera algoritmos.informatica.2015

viernes, 8 de mayo de 2015

11.Vectores-Arreglos

Hasta el momento hemos visto una serie de estructuras de control, por lo tanto vamos a partir de un concepto que realmente  implícitamente se ha trabajado y continuaremos el enfoque a los vectores es decir empezaremos a aplicar las distintas estructuras a estos algoritmos. Cuando se procesa un algoritmo con muchos datos y le pedimos a este una información que se ha escrito hace un tiempo y queremos que este  lleve un orden establecido internamente, pues esto se puede lograr con las estructuras de arreglo, una estructura de este tipo es una manera de almacenar información en un computador de manera que puedan ser usados de una manera eficiente. Una selección cuidadosa de la estructura permitirá usar un algoritmo más eficiente. Una estructura bien diseñada permitirá efectuar una variedad de operaciones, usando un mínimo de tiempo de ejecución y espacio de memoria. Con una definición más concisa de la estructura de arreglo es el área de memoria con una variedad de posiciones y cada posiciones tiene un valor asociado (numero). El arreglo de una dimensión se conoce como vector. Realmente los arreglos pueden ser de muchas dimensiones, pero también de diferentes tipos así como se pueden hacer diferentes operaciones con ellas, pero por ahora nos quedaremos con lo que hemos definido.


En la siguiente figura se muestra un arreglo de enteros con 10 elementos.







Como nuestra estructura va estar contenida por vectores de diversas dimensiones, entonces definiremos que es un vector en algoritmo, aun básicamente este cumple las misma funciones matemáticas que se pueden hacer en operaciones de geometría vectorial y álgebra lineal, pero en la programación se tiene una definición propia, es un arreglo, generalmente asociados a los arreglos unidimensionales; Es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo y se distinguen entre sí por un índice. En palabras más simples los vectores son arreglos.

Para acceder a todos los componentes de un vector solo basta con utilizar una variable que sirva como índice cuyo valor cambie entre 1 y el número total de elementos en el vector, para esto nos valemos de un simple ciclo PARA
for i=1:4
disp( notas(i) )
end

A continuación se muestran algunos ejemplos de algoritmos con vectores simples. Realice un programa que genere un vector u, constituido por los números enteros pares del vector v, donde v=1:1:50. Utilice la estructura for-end
v=1:1:50;
for i=2:2:50
 u(i/2)=v(i);
end
disp('Los números pares son:')
disp(u').

Desarrolle un programa que sume los números almacenados en un vector hasta que encuentre el número cero. Por ejemplo, para el vector v=[1 4 3 0 5 1] el resultado será 1+4+3=8. Utilice la estructura while-end
v=input('Ingrese los elementos del vector: ');
25
i=1;
suma=0;
n=length(v);
while v(i)~=0
 suma=suma+v(i);
 i=i+1;
 if i==n+1;
 break
 end
end
Suma

Aclaración cuando se tiene subprogramas como tipo void de funciones  de debe colocar function- para que matlab lo lea como un subprograma, además, functions s=algo-operación(vector,n) donde (s=) le esta indicando a Matlab retorne(s).

si te interesa profundizar un poco mas pásate por el siguiente vídeo.


 Camilo Borja © 2015 All rights reserved.

Fuentes consultadas:

-Roberto F. Rueda. algoritmo Modulo 27. Algoritmia Básica.2014. http://zona.udearroba.co/video/810




lunes, 4 de mayo de 2015

10.Subprogramas

Continuando con los objetivos de seguimiento de los anteriores escritos, se sigue con nuevos conceptos que derivan de los anteriores tipo de algoritmos que se han dado a conocer hasta el momento, si bien haciendo una analogía en la vida cotidiana hemos demostrado que los problemas  complejos se facilita considerablemente si se dividen en problemas más pequeños (subproblemas). La solución de estos subproblemas se realiza con sub algoritmos. El uso de subalgoritmos permite al programador desarrollar programas de problemas complejos utilizando un método decente introducido en los capítulos anteriores.

En una definición más clara los subalgoritmos son unidades de programas o módulos que están diseñados para ejecutar alguna tarea específica. Estas funciones y procedimientos se escriben solamente de una vez, pero pueden ser referenciados en diferentes puntos de un programa, de modo que se pueda evitar la duplicación innecesaria del código. Las unidades de programa en estilo de programación modular son independientes; El programador puede escribir cada módulo y verificarlo sin preocuparse de los detalles de otros módulos. Esto facilita considerablemente la localización de un error cuando se produce. Los programadores más desarrollados de este modo son normalmente también más fáciles de comprender, ya que la estructura de cada unidad de programa puede ser estudiada independientemente.

El objetivo del uso de subalgoritmos es modularizar un algoritmo, es decir dividir al problema en subproblemas, resolver el problema con un algoritmo y a los subproblemas con subalgoritmos. De esta forma cuando resuelvo un problema me abstraigo de los pequeños detalles que no hacen en sí al problema llamando a acciones (Subalgoritmos) que una vez resuelto el problema principal tendré que solucionar.
La ventaja más importante de modularizar es que los subprogramas se pueden reutilizar en el mismo algoritmo o en otros.
La clasificación de los sub programas se definen las funciones y los void.

Funciones: Es una que toma una o más valores llamados argumentos y produce un valor llamado resultado.

Ejemplo:
F(x) =x/i+x*x
Para evaluar f debemos darle un valor a x.

Las funciones requieren de una serie de pasos que la definen. Consta de un inicio, seguido de la palabra (función) y del nombre del argumento de la función después ira el cuerpo que es una serie de acciones cuya ejecución hará que se asigne un valor al nombre de la función, esto determina el resultado que ha de devolver al programa.
Ejemplo:
F(x,y)=x/1+x*x
Se define como :
Real función f(x)
Inicio
Devolver (x/(1+x*x))
Fin (función).

Void: son los subprogramas que solo ejecutan tareas y no devuelven ningún valor
presentación
Aquí puedes ver otro ejemplo de subprogrmas.

Subalgoritmo Leer_y_Validar
               Repetir
                              Escribir(‘Ingrese un número entre 1 y 10’)
                              Leer(Numero)
               Hasta   (Numero<=10)  ^ (Numero>=1)
Fin Subalgoritmo Leer_y_Validar
 

 Camilo Borja © 2015 All rights reserved.

Fuentes consultadas
Angel. F. rey. Subprogramas. Presentación. Procesador power point(pdf)

Subprogramas. ¿Qué es un subprograma? carlospes.com.2014
http://www.carlospes.com/curso_de_algoritmos/12_02_subprogramas.php


miércoles, 29 de abril de 2015

9.Ciclo para (FOR)

Como hemos visto en el artículo anterior, los ciclos, pueden presentar estructuras complejas así como simples dependiendo del problema que se pretenda programar, también se evidencia que dentro de un mismo ciclo podemos encontrar otras estructuras de algoritmo que a esto también le podemos llamar ciclo anidados ya que dentro del mismo algoritmo en ciclos encontramos otros ciclos inmersos con acumuladores y contadores guiados por un controlador. Para continuar con los ciclos en este escrito estudiaremos el ciclo para.
El ciclo for o para en español, es un ciclo repetitivo donde el usuario decide cuantas veces quiere que repita una pregunta en el algoritmo. Es uno de los más usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instrucción simple o compuesta.
Este ciclo al igual que los demás, permite ejecutar repetidas veces una instrucción o un grupo de ellas, pero a diferencia de otras instrucciones de repetición, esta maneja el valor inicial, el valor de incremento o decremento y el valor final de la variable de control como parte de la instrucción. Cuando al ejecutar un algoritmo se encuentra una instrucción para la variable de control (contador) toma el valor inicial, se verifica que el valor inicial no sobrepase al valor final y luego se ejecutan las instrucciones del ciclo. Al encontrar la instrucción fin para, se produce el incremento y se vuelve a verificar que la variable de control no haya superado el límite admitido, y se vuelven a ejecutar las instrucciones que están dentro del ciclo, y así sucesivamente tantas veces como sea necesario hasta que supere el valor final establecido. El ciclo para termina en el momento en que la variable de control (Contador) sobrepasa el valor final; es decir, que la igualdad está permitida y las instrucciones se ejecutan cuando el contador es igual al valor final

Ilustración 1 diagrama de flujo ciclo mientras (tomado de http://www.virtual.unal.edu.co)
De la definición de ciclo para se puede inferir que el bloque de acciones no se ejecuta alguna vez si el límite inferior es mayor al límite superior y que si el límite superior es mayor o igual al límite superior, el número de veces que el conjunto de acciones se ejecutará es igual a uno más el límite superior menos el límite inferior. La forma general del ciclo para es la siguiente: Donde <variable> es la variable contadora del ciclo, la cual debe ser de tipo entero, <lim inf >es el valor inicial que toma la variable contadora, <lim sup> es el valor final que puede tomar la variable contadora y <bloque>es el bloque de acciones que es ejecutado en cada iteración, mientras la variable contadora no sobrepase el límite superior. En cada iteración, después de ejecutar el bloque, la variable contadora es incrementada (1).[1]
A continuación revisaremos un ejemplo de cómo es un ciclo para simple. Un algoritmo que permita ingresar N datos correspondientes al género de N, número de personas y determine el porcentaje de hombres y mujeres que hay.
INICIO
ENTEROS:N,i,SEXO
REALES:M,F
ESCRIBA(“DIGITE N° DE PERSONAS”)
LEA(N)
M=0
F=0
PARA(i,1,N,1)
ESRIBA(“DIGITE SEXO 1 MASCULINO, 2 PARA FEMENINO”)
LEA(SEXO)
SI (SEXO=1)
M=M+1
DE_LO_CONTRARIO
F=F+1
FIN (PARA)
F=(F*100)/N
M=(M*100)/N
ESCRIBA(“EL PORSENTAJE DE MUJERES ES: “,F)
ESCRIBA(“EL PORSENTAJE DE HOMBRES ES: “,M)
FIN
Si quiere ver algoritmos más interesantes, estructuras más complejas y así como sus pruebas de escritorio te invito a que te pases por esta página.
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_4.html

Chequéate el siguiente video para que aprendas a ejecutar ciclos para en Matlab.

 Camilo Borja © 2015 All rights reserved.


Fuentes consultadas

Programación de computadoras. ciclo para. dirección nacional de innovación académica. UN.2015. http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_4.html

The Lantrox. Programando en Matlab | Bucle For. 2014. https://www.youtube.com/watch?v=ISs5PSjmPHg






[1] Tomado: http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_4.html