Sei sulla pagina 1di 83

Manual de Prcticas de Laboratorio de

Lenguaje de Programacin

Ingeniera en Biotecnologa

Curso

1
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Algoritmos

Un algoritmo es un conjunto claro y especfico de instrucciones simples que deben ser


seguidas para resolver un problema. Es importante la simpleza ya que, en trminos
computacionales, cualquier algoritmo que sea programado debe emplear la menor cantidad
posible de recursos de memoria.

Se distinguen distintos tipos de algoritmos:

1) Por el sistema de signos empleados en su descripcin:


a) Algoritmos cualitativos: cuando se hace a travs de palabras, es decir, las
instrucciones (y su ejecucin) son verbales. Sucede, por ejemplo, con recetas
de cocina, procedimientos de limpieza, etc.
b) Algoritmos cuantitativos: cuando se hace a travs de clculos numricos.
Se puede hacer un algoritmo, por ejemplo, para obtener la raz cuadrada de
un nmero, resolver alguna ecuacin, optimizar parmetros, etc.
2) Segn su funcin:
a) Algoritmos de ordenamiento: secuencian los elementos que ingresan a
partir de un cierto orden, en general, segn un orden numrico o lxico. Por
ejemplo, ordenar nombres de una lista en forma alfabtica.
b) Algoritmos de bsqueda: al contrario de realizar operaciones o secuenciar
elementos, se dedica a encontrar dentro de una lista que se ingresa, uno o
varios elementos en particular que cumplan con el conjunto de condiciones
dadas.
c) Algoritmos de encaminamiento: deciden de qu modo se deber transmitir
algo que llega, y cmo seguir un conjunto de pasos encadenados. Se
dividen fundamentalmente entre adaptativos y estticos, los primeros con
cierta capacidad de aprendizaje y ajuste a la circunstancia, mientras que los
segundos funcionan mecnicamente, siempre del mismo modo. Es
importante decir que los algoritmos de encaminamiento cuentan con
una propia subdivisin, segn el camino que se toma para que la
transmisin llegue de manera efectiva (ejemplos de estos tipos son: por el
camino ms corto, de manera ptima, basado en el flujo, etc.). El

2
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

movimiento de robots o inteligencia artificial son ejemplos de ste tipo de


algoritmos.
3) Tambin los algoritmos han sido clasificados segn la estrategia que se utiliza para
llegar al resultado:
a) Algoritmos probabilsticos: no se puede estar seguro de la exactitud de la
respuesta que darn. Se agrupan en distintos subtipos, pero con esa premisa:
presentan soluciones aproximadas del problema, o bien presentan soluciones
que pueden ser correctas pero tambin errneas. Ejemplos de este tipo de
algoritmos son los mtodos de optimizacin Luus-Jakola, algoritmos
genticos, entre otros.
b) Algoritmo cotidiano: es el que se da en la vida comn de las personas, no se
aplica en sistemas informticos ni en nada ajeno al da a da. Muchas de las
decisiones que se toman desde que uno se despierta por la maana
pertenecen a este grupo.
c) Algoritmo heurstico: abandona alguno de los objetivos como recurso para
terminar llegando a la solucin. En general, son utilizados cuando no existe
una solucin mediante las vas tradicionales, por ejemplo el mtodo de
relajacin no lineal para resolver sistemas algebraicos nolineales o el mtodo
de Levenberg-Marquardt que emplean factores arbitrarios de relajacin.
d) Algoritmo de escalada: se comienza con una solucin insatisfactoria (que
no cumple la entrada y la salida), y se la va modificando aproximndose a lo
que se busca. En algn momento, estaremos cerca de (o llegaremos a) la
solucin correcta, Ejemplo de este es el mtodo de Newton-Raphson.
e) Algoritmo voraz: Con la idea de llegar a una solucin ptima definitiva,
elige analizar cada paso como nico y elegir la solucin ptima para ese
paso, el algoritmo de autmata celular es un ejemplo de ste.
f) Algoritmo determinista: es completamente lineal (cada paso tiene un paso
sucesor y un paso predecesor) y por lo tanto predictivo, si se conocen sus
entradas y su forma de proceder. El algoritmo de Newton-Raphson tambin
es ejemplo de ste.

Ejemplo: Algoritmo para resolver una ecuacin de segundo orden

3
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

1.- Identificar el valor de los coeficientes del polinomio segn la forma general:

A x2 + Bx+C=0

2.- Calcular el valor de una cantidad conocida como discriminante (), segn la siguiente
ecuacin:

2
=B 4 AC

3.- Identificar el signo del discriminante. Si 0 , calcular la solucin segn la

siguiente ecuacin:

B B2 4 AC B+ B24 AC
x= ; x=
2A 2A

4.- Si < 0 , entonces emplear la ecuacin:

B |B 4 AC | B |B 4 AC|
2 2
x= i ; x= + i
2A 2A 2A 2A

Diagramas de flujo

4
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Un diagrama de flujo es una representacin grfica del proceso de solucin de un problema.


Debe contener todos los pasos necesarios para resolver ste y cuenta con los siguientes
elementos:

1.- Cuadros o cajas: Pueden indicar el inicio o final de la secuencia resolutiva,


operaciones aritmticas, entrada de datos, impresiones, decisiones y ciclos repetitivos o
condicionales.

2.- Nodos: Son puntos de unin numerados entre secciones que deben estar conectadas en
un diagrama de flujo pero, que por cuestiones de espacio disponible, no fu posible dibujar
en una misma hoja de trabajo.

3.- Flechas: Indican el orden de las operaciones y, en suma, el flujo del proceso de
solucin.

Un diagrama de flujo sirve para especificar el mtodo a resolver, para planear la secuencia
de operaciones en un programa computacional y para comunicar ideas o soluciones. Si
cualquiera de esto tres propsitos no se cumple, el diagrama no es til.

Pasos para dibujar un diagrama de flujo:

1.- Identificar la entrada y salida de datos en el procedimiento general (se debe contar con
un algoritmo validado y optimizado antes de comenzar a dibujar el diagrama).

2.- Aplicar habilidades de razonamiento para resolver problemas al construir el diagrama.

3.- Dibuje cuadros, estructuras de decisin y ciclos de acuerdo al flujo determinado en el


algoritmo (Apndice A).

Ejemplo: Multiplicacin de matrices

5
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

1.- Identificar la entrada y salida de datos en el procedimiento general (se debe contar
con un algoritmo validado y optimizado antes de comenzar a dibujar el diagrama).

Antes de generar el diagrama y algoritmo es necesario dominar el mtodo de resolucin, de


preferencia resolver uno o varios ejemplos numricos. Es deseable expresar en trminos
simblicos el proceso de la siguiente forma:

Las dos matrices a multiplicar: Amxn y Boxp pueden expresarse como:

[ ] [ ]
a1,1 a1,2 a1,3 a1,n b1,1 b1,2 b1,3 b1, p
a2,1 a2,2 a2,3 a2,n b2,1 b2,2 b2,3 b2, p
A= a3,1 a3,2 a 3,3 a3,n y
B= b b3,2 b3,3 b3, p
3,1

am , 1 am , 2 am ,3 a m ,n b o ,1 bo , 2 bo , 3 bo, p

2.- Aplicar habilidades de razonamiento para resolver problemas al construir el


diagrama.

La multiplicacin se efecta en forma binaria al multiplicar renglones por columnas de la


siguiente forma:

[ ][ ][ ]
a1,1 a1,2 a1,3 a1,n b 1,1 b1,2 b1,3 b 1, p c 1,1 c 1,2 c 1,3 c1, p
a2,1 a2,2 a2,3 a2,n b 2,1 b2,2 b2,3 b 2, p c 2,1 c 2,2 c 2,3 c2, p
a3,1 a3,2 a 3,3 a3,n b 3,1 b3,2 b3,3 b3, p = c 3,1 c 3,2 c3,3 c 3, p

am , 1 am , 2 am ,3 a m ,n b o ,1 b o ,2 bo , 3 bo , p c m ,1 cm ,2 c m , 3 c m , p

n
c 1,1=a 1,1b 1,1+ a1,2b2,1 +a 1,3b 3,1+ +a1, nb o ,1= a1,ibi ,1
i=1

6
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

n
c 1,2=a 1,1b 1,2+ a1,2b2,2 +a 1,3b 3,2+ +a1, nb o ,2= a1,ibi ,2
i =1

n
c 1,3=a1,1b 1,3 +a1,2b2,3 + a1,3b3,3 ++ a1,nbo , 3= a1, ibi , 3
i=1

.
n
c 1, p=a1,1b 1, p +a1,2b2, p+ a1,3b3, p ++ a1, nbo , p= a1,ib i , p
i=1

n
c 2, p=a2,1b1, p +a 2,2b 2, p+ a2,3b3, p + +a2,nbo , p= a2,ibi , p
i=1

[ ]
n n n n

a1,ib i ,1 a1,ibi , 2 a1, ibi , 3 a1,ibi , p


i=1 i=1 i=1 i=1
n n n n

a2,ib i ,1 a2,ibi , 2 a2, ibi , 3 a2, ibi , p


i=1 i=1 i=1 i=1
n n n n

a3,ib i ,1 a3,ibi , 2 a3,ib i ,3


a3,ibi , p
i=1 i=1 i=1 i=1

n n n
n

am , ibi , 1 a m ,ibi ,2 am , ibi , 3 am ,ib i , p


i=1 i=1 i =1 i=1

El algoritmo optimizado es:

1.- Identificar las dimensiones de las matrices a multiplicar:

m= Nmero de renglones de la matriz A

n= Nmero de columnas de A

o= Nmero de renglones de B

7
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

p= Nmero de columnas de B

2.- Si n=o y m=p, efectuar pasos 3 en adelante, si algunas de estas igualdades no se


cumple, imprimir advertencia de dimensiones incongruentes.

3.- Calcular trmino a trmino la multiplicacin de matrices segn la siguiente


frmula general (donde j varia de 1 a m, i vara de 1 a m, y j vara de 1 a p)

n
c m , p = a j ,ibi , k
i=1

4.- Imprimir la matriz C.

3.- Dibuje cuadros, estructuras de decisin y ciclos de acuerdo al flujo determinado en


el algoritmo (Apndice A).

INICIO

NO SI

Dimensiones incongruentes

1 8
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

2 3

,i)*b(i,k)

FIN
SI

SI
C

SI

Autoevaluacin (Algoritmos y Diagramas de flujo)

Responde en una o dos frases

1.- Qu es un algoritmo?____________________________________________________

9
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

_______________________________________________________________________

2.- Qu es un diagrama de flujo? _____________________________________________

_________________________________________________________________________

3.- Cuntos tipos de diagramas de flujo hay?_____________________________________

_________________________________________________________________________

4.- Escribe dos pasos implicados en la solucin de problemas _____________________

_________________________________________________________________________

5.- Cul de las afirmaciones siguientes no es cierta acerca de las flechas en diagramas de
flujo?

i. La direccin de la flecha indica la direccin de flujo del programa.

ii. Las flechas son usadas para mostrar el orden de las operaciones.

iii. Las flechas son conectadas para conectar los cuadros

iv. Las flechas pueden ser usadas para representar una entrada.

6.- Relacione los elementos de las siguientes columnas

Propsito Uso
Calculo del total de A, B, C Bucle (Ciclo)
Indicacin de que el problema ha sido Inicio
resuelto
Identificar si un nmero es ms grande Proceso
que otro
Leer un nmero y calcular su factorial Entrada
Leer tres nmeros. Fin
Imprimir el total. Decisin
Indicar el inicio del flujo de resolucin Salida (Impresin)
del problema.

10
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Conceptos generales

Variables: Son los elementos que se manejan dentro del flujo de clculo del programa,
toman valores de acuerdo con la entrada u operaciones aritmticas. Toda variable empleada
dentro de alguna funcin debe ser declarada (ya sea de manera global o local) e
inicializada.

Variables globales: Son declaradas y algunas veces inicializadas solo una vez y el valor
asignado (o memoria de la computadora si solo son declaradas) es vlido en todas las
funciones del programa.

Variables locales: Son declaradas e inicializadas en cada funcin por separado, si estas son
heredadas por la funcin principal solo se declaran en sta.

Herencia de variables: Se refiere al traspaso del valor de las variables como parmetros de
las funciones.

Arreglos: Conjuntos de valores que pueden ser enteros o reales, existen arreglos 1-D, 2-D,
3-D N-D. La representacin ms intuitiva de un arreglo es una matriz de nmeros,
aunque pueden existir matrices de caracteres (letras). Todo arreglo est constituido por
subelementos o entradas ordenados y ubicados por localizadores que suelen escribirse
como subndices o como nmeros dentro de corchetes (sintaxis del lenguaje C)

[ ]
a11 a12 a1 n
A=[ a1 a2 an ] A= a21 a22 a 2n

an 1 an 2 ann

11
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Arreglo 1-D Arreglo 2-D Arreglo 3-D

Localizadores de un arreglo N-D: Un ejemplo del uso de localizadores es el arreglo

A nxnxn xn an , n ,n , n
, el n-simo elemento de este arreglo sera: y en lenguaje C: A[n]

[n][n].

Tipos de variables (clasificacin matemtica): Existen distintos tipos de variables, a


saber:

a) Tipos enteros, cuya sintaxis en C es:


char (carcter tamao=1 byte): este tipo de dato se utiliza para almacenar un valor
entero del rango -128 a 127 donde los valores del 0 al 127 son valores a un carcter
del cdigo ASCII.
short (entero de formato corto tamao=2 bytes): este tipo de dato proporciona un
entero en el rango de los valores -215 a 215
int ( entero tamao=2 o 4 bytes): este tipo de dato es un numero sin punto decimal
y su tamao vara dependiendo del procesador de la maquina (16, o 32 bits).
long ( entero de formato largo tamao=4 u 8 bytes): este tipo de dato trabaja igual
que el shor o int pero con la condicin que es para nmeros muy grandes.
enum: este tipo de dato trata de una lista de valores que pueden ser tomados como
una variable de ese tipo y se utilizaran con un identificador algo similar a una
estructura
b) Tipos reales, cuya sintaxis en C es:
float (reales de precisin simple tamao=4 bytes): estos datos contienen nmeros
con punto decimal y est comprendido en un rango de -1.7976x10 38 a -2.22507x10-
38
para negativos y de 1.175494x10-38 a 3.402823x1038 para nmeros positivos
cuidando que solo tenga hasta 7 cifras despus del punto decimal
double (reales de precisin doble tamao=8 bytes): este tipo de dato trabaja de la
misma forma que el float pero tiene un rango ms extendido de -1.7976E+308 a

12
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

2.22507E-308 para nmeros negativos y de 1.17549422507x1038a


3.40282322507x10-38 para nmeros positivos. Este tipo de dato puede contener
hasta 16digitos despus del punto decimal
long double (reales de precisin doble formato largo tamao=10 bytes): Estos
datos son igualmente derivados de los float pero con un rango mayor as como las
cifras significativas despus del punto decimal para este caso son 19 y comprende
de -1.189731x104932 a -3.362103x10-4932 para nmeros negativos y 3.362103 x10-4932
a 1.189731 x104932 para nmeros positivos.
c) Otros:
void: este tipo de dato especfica que es un conjunto vacio de valores no se ocupa
para declarar variables como cualquiera de los anteriores pero indica que:
la funcin no acepta argumentos
declara funciones las cuales no regresan ningn valor
declarar un apuntador genrico.
d) Constantes: Este tipo de datos son fijados previamente por el programador antes de
compilar el programa y nunca cambian durante la ejecucin del mismo; estos tipos
de datos pueden ser de cualquier tipo (real, entero, carcter, etc.) su sintaxis es:

#define NombreDeTuConstante ValorComportamiento.


Existen distintos tipos de datos como float as como entero ya que con esto la
computadora al compilar y ver los tipos de datos declarados que son de cierto
tamao ya les da la memoria suficiente con la cual va a estar trabajando el
ejecutable y esto ayuda a que los recursos de la computadora si se estn utilizando
en varias aplicaciones no tenga un problema de pantalla azul. Actualmente por la
capacidad de las maquinas ya se pueden trabajar muy fcilmente este tipo de
programas pero cuando apenas iniciaba este tipo de implementaciones si consuma
sino toda la memoria gran parte de ella.

Palabras reservadas: Identificadores preestablecidos en C, nunca podemos nombrar a una


variable con estas palabras:

13
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Comentarios: Estos son de mucha ayuda cuando se est trabajando con distintas personas
en un mismo programa y as poder ir documentando que se realiza en cada paso o que es lo
que se pretenda hacer y se pueden colocar en cualquier parte del programa; su sintaxis es:

/* Espacio para poner comentario */ o bien: // Lnea completa para poner comentario

Funciones de entrada de datos:

a) scanf: esta funcin recibe y guarda datos dentro de variables previamente


identificadas (int, char, float, etc.) cuidando la sintaxis como sigue:
scanf(%especificaion de formato,& variable donde se guardara);
fscanf(Fichero declarado,%especificaion de formato,& variable donde se
guardara);
b) getch o getchar: esta funcin es similar al scanf pero con la diferencia que
solamente admite un carcter introducido por el teclado sin mostrarlo nuevamente
en la pantalla, comnmente esta funcin le da una pausa al programa para que nos
deje visualizar el resultado del programa. La sintaxis es:
getch();
Funciones de salida de datos:

14
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

a) putchar: esta funcin es similar al printf pero solo trabaja para oraciones y no
puede meter argumentos como son los datos y su sintaxis es putchar('cualquier
cosa como el primer ejemplo de printf'):
putchar(variablecualquiera);
b) printf: esta funcin escribe en pantalla series de caracteres, valores, etc. pero
dependiendo de su sintaxis es lo que mostrara en pantalla: printf(Escribir dentro de
las comillas y sale tal cual en pantalla), cuya sintaxis es:
printf(%especificaion de formato, variable donde se guarda el valor);
c) fprintf: esta funcin escribe los resultados en un archivo de extensin determinada
durante su declaracin como fichero, su sintaxis es:
fprintf(Fichero declarado,%especificaion de formato, variable donde se guarda
el valor);
Secuencias de escape:

Operadores:

Aritmticos:

15
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Lgicos

De relacin
De asignacin:

Prioridad y orden:

16
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

17
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Estructura general de un programa

1 #include <conio.h>
2 #include<stdio.h> Libreras
3
4
5 double Funcion1(double Par1,double Par2); // prototipo
Funciones
6 double Funcion2 (double Par1, double Par2, int Par3, double Par4[][10]); //protipo
7 double Funcion3 (double Par4[][10],int Par3); prototipo
8
9 int main(){
Declaraci 10 double Par4[10],F[10],G[10],J[10][10],Incremento[10],Delta,Gama,Tol;
n de 11 int i,j,Par3,Par5,Par7;
12 FILE *Archivo;
13 Archivo = fopen ("Resultados.txt", "w");
14
Inicializaci 15 Par3=6;
n 16 Par5=0.1;
17 Par6=0;
18 Par7=0;
19 .
20 FILE *Archivo;
21 Archivo = fopen ("DatosA.txt", "r");
22 if(Archivo != NULL){ Funcin
23 while (feof(Archivo) == 0) Entradas principal
Lectura de { 24 for(j=0; j<N; j++){
variables 25 for(i=0; i<N; i++){
26 fscanf(Archivo, "%f", &MatrizA[i][j]);
27 printf("%f", MatrizA[i][j]);
28 } //End for i
29 printf("\n");
30 } //End for j
31 } // End while
32 } //End if
33 fclose ( Archivo );
34
45 } //End main
46
47 double Funcion1(double Par1,double Par2){
Deifinicin
. de

55 } //End Funcion1 sub-

18
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Prctica No. 1

Conversin de Temperaturas

1. INTRODUCCIN

Lo que se necesita para construir un


termmetro son puntos fijos, es
decir, procesos en los cuales la
temperatura permanece constante.
Ejemplos de procesos de este tipo
son el proceso de ebullicin y el
proceso de fusin. Los puntos
generalmente utilizados son el
proceso de ebullicin y de
solidificacin de alguna sustancia,
durante los cuales la temperatura
permanece constante. Existen varias
escalas para medir temperaturas, las
ms importantes son la escala
Celsius, la escala Kelvin y la escalas
Fahrenheit y Rankine.

Escala Celsius

Para esta escala, se toman como puntos fijos, los puntos de ebullicin y de solidificacin
del agua, a los cuales se les asignan los valores de 100 y 0 respectivamente. En esta escala,
estos valores se escriben como 100 y 0. Esta unidad de medida se lee grado Celsius y se
denota por C.

El grado Celsius, es la unidad creada por Anders Celsius para su escala de temperatura. Se
tom para el Kelvin y es la unidad de temperatura ms utilizada internacionalmente.

19
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

A partir de su creacin en 1750 fue denominado grado centgrado (se escriba c, en


minscula). Pero en 1948 se decidi el cambio en la denominacin oficial para evitar
confusiones con la unidad de ngulo tambin denominada grado centgrado (grado
geomtrico), aunque la denominacin previa se sigue empleando extensamente en el uso
coloquial.

Hasta 1954 se defini asignando el valor 0 a la temperatura de congelacin del agua, el


valor 100 a la de temperatura de ebullicin ambas medidas a una atmsfera de presin y
dividiendo la escala resultante en 100 partes iguales, cada una de ellas definida como 1
grado. Estos valores de referencia son muy aproximados pero no correctos por lo que, a
partir de 1954, se define asignando el valor 0,01 C a la temperatura del punto triple del
agua y definiendo 1 C como la fraccin 1/273,16 de la diferencia con el cero absoluto.

Escala Kelvin

En este caso, la escala fue establecida por la escala kelvin, donde el valor de 0 corresponde
al cero absoluto, temperatura en la cual las molculas y tomos de un sistema tienen la
mnima energa trmica posible. Ningn sistema macroscpico puede tener una temperatura
inferior. En escala Celsius esta temperatura corresponde a -273 C. Esta unidad de medida
se lee Kelvin y se denota por [K]. Esta unidad se llama tambin Escala Absoluta y es
tambin la unidad adoptada por el Sistema Internacional de Unidades.

Dado que 0 K corresponden a -273,15 C, se puede hallar una frmula de conversin, entre
la escala Celsius y la escala Kelvin, de la siguiente forma:

TK = TC + 273.15 C

Escala Fahrenheit

En esta escala tambin se utilizaron puntos fijos para construirla, pero en este caso fueron
los puntos de solidificacin y de ebullicin del cloruro amnico en agua. Estos puntos se
marcaron con los valores de 0 y 100 respectivamente. La unidad de esta escala se llama
grado Fahrenheit y se denota por F. Dado que en escala Celsius, los valores de 0 C y

20
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

100 C corresponden a 32 F y 212 F respectivamente, la frmula de conversin de grados


Celsius a Fahrenheit es:

TF = (9/5)TC + 32C

Escala Rankine

Es una escala de temperaturas muy utilizada en los EE.UU., y es semejante a la escala


Kelvin. Al igual que esta, presenta un cero en el cero absoluto, por lo que tambin es una
escala absoluta, con la diferencia de que los intervalos de grado son idnticos al intervalo
de grado Fahrenheit.

TR = (9/5)TK = 1.8TK

OBJETIVO

El alumno pondr en prctica las diferentes estructuras de decisin if, else if y case,
adems de constatar la importancia de la precisin asociada a la declaracin de variables.

2. MATERIAL

Material
Computadora

DEV C++

Algoritmo de conversin de temperaturas

Diagrama de flujo de conversin de temperaturas

Pseudo-cdigo de conversin de temperaturas

METODOLOGA

Codifique ambos pseudo-cdigos solicitados por la prctica en lenguaje C.

21
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

3. RESULTADOS Y OBSERVACIONES
3.1. Cdigos generados
3.2. Ejecucin
1.- Cambie los tipos de variables reales, emplee los tres tipos de variables float,
double, long double e int (entero) para declarar sus variables (un cdigo diferente
por cada modificacin). Llene la siguiente tabla:

Tipo de variables Temperatura K R F


reales problema
float 10 C
double 0.0001 C
longdouble 1.0003 K
int 200.3 F

2.- Fije el tipo de variable (de todas las variable reales que use) en double y ahora
cambie el formato de escritura de los resultados de sus cdigos y llene la siguiente
tabla:

Formato de Temperatura K R F
escritura problema
%f 10 C
%d 0.0001 C
%i 1.0003 K
4. ANLISIS DE RESULTADOS

Responda el siguiente cuestionario

a) Cul es la importancia dela precisin asociada al tipo de variable?


b) Es importante el formato de escritura de los resultados?
c) En qu casos es conveniente manejar los distintos tipos de variables reales?, cite
ejemplos de mediciones fsicas/qumicas que puedan ser trabajadas con los
diferentes niveles de precisin asociados a cada tipo de variable.
5. CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

6. BIBLIOGRAFA

22
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

PRACTICA No. 2

Lectura y escritura de arreglos estticos

1. INTRODUCCIN

23
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Los arreglos estticos deben tener un tamao asignado antes de ser compilados. No es
posible cambiar el total de memoria de la computadora asignado a estos durante la
ejecucin del programa. Sin embargo, no es recomendable emplear stos cuando se desea
generar un cdigo de propsito general ya que comnmente se incurre en errores al cambiar
las dimensiones en cada lugar donde se declaran los arreglos (ya sea en la Funcin principal
o los prototipos y definiciones de funciones secundarias). Solo se aborda el uso de este tipo
de arreglos como primer acercamiento, debe tenerse presente que en aplicaciones
profesionales flexibles es preferible el uso de arreglos dinmicos (Prcticas 12 en adelante)

2. OBJETIVOS

El alumno aprender a declarar, inicializar y leer punteros y arreglos con asignacin de


memoria esttica y experimentara con los efectos de violar las dimensiones mximas
permitidas durante la ejecucin de un cdigo.

El alumno aprender la importancia de la existencia de la posicin 0 de todos los arreglos


de C.

3. MATERIALES

Material
Computadora

DEV C++

Algoritmo de lectura y escritura (visual) de elementos de una


matriz

Diagrama de flujo de lectura y escritura (visual) de elementos


de una matriz

Pseudo-cdigo de lectura y escritura (visual) de elementos de


una matriz
4. METODOLOGA

24
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Codifique el pseudo-cdigo solicitado por la prctica, corrija las lneas sombreadas que se
muestran a continuacin para que el siguiente cdigo sea congruente con su trabajo,
nmbrelo Lectura1.c.

1 #include <stdio.h>
2 int main(){
3 float MatrizA[100][100];
4 int i,j,M,N;
5 FILE *Archivo;
6 M=3;
7 N=3;
8 Archivo = fopen ("DatosA.xlsx", "r");
9 // Lectura de Matriz A
10 if(Archivo != NULL){
11 while (feof(Archivo) == 0){
12 for(ptrY=0; ptrY<M; ptrY++){
13 for(ptrX=0; ptrX<N; ptrX++){
14 fscanf(Archivo, "%f", &MatrizA[ptrX][ptrY]);
15 printf("%f ", MatrizA[ptrX][ptrY]);
16 } //End for ptrX
17 printf("\n");
18 } //End for ptrY
19 } //End While
20 } //End if
21 fclose ( Archivo );
22 printf(" \n");
23 return 0;
24 }
5. RESULTADOS Y OBSERVACIONES

1.- Modifique las lneas (corregidas) 12 a 18 para que se imprima la transpuesta de MatrizA
en la pantalla negra

2.- Escriba las lneas de cdigo en el espacio en blanco:

25
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

3.- Ejecute su cdigo para leer la Matriz: A3x3= I3x3. Inserte en el espacio en blanco una
impresin de pantalla para demostrar que ha logrado ejecutar esta instruccin:

4.- Modifique la lnea 14, Inserte una nueva lnea vaca (Guarde este nuevo cdigo como
Lectura2) todas las lneas a partir de la nmero 15 deben haber quedado desplazadas hacia
adelante.

5.- En las nueva lneas desplzadas (Lectura2), modifique las lneas 14 y 15 para que se lean
las entradas de la MatrizA directamente de la pantalla negra (comando printf, en vez de
fprintf). Inserte aqu una impresin de pantalla demostrando que consigui ejecutar esta
instruccin:

26
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

6. ANLISIS DE RESULTADOS

Responda el siguiente cuestionario:

1.- Para qu sirve el comando if( Archivo != NULL){}?

2.- Cambie la lnea 3 (de Lectura1) por: float MatrizA[2][2];, ejecute, Qu ocurre?, Por
qu?. Deshaga cambios (ctrl z) y regrese la versin original de Lectura 1.

3.- Modifique las lneas 12 y 13 de Lectura1.c de la siguiente forma:

12 ptr(i=0; i<M; i++){


13 for(j=0; j<N; j++){

Qu ocurre?, Por qu?, como lo solucionara (Vea los operadores de comparacin).

7. CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

8. BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

27
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

PRACTICA No. 3

Multiplicacin de matrices

1. INTRODUCCIN

No debe olvidarse que una matriz es un conjunto generador de un espacio vectorial, es


decir, un conjunto de vectores linealmente independientes. Al multiplicar dos vectores
recuerde que la intuicin geomtrica nos indica que debe multiplicarse trmino a trmino
los elementos de cada vector para lograr obtener la proyeccin de un vector sobre el otro.

28
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

t
Dicho de otro modo, considerando los vectores A= [ a1 ,a 2 , a3 , , an ] y

t
B=[ b 1 , b2 , b3 , ,b n ] . Al multiplicarse (escalarmente) producen:

A B=a1 b1+ a2 b2 +a3 b3 + +an bn


. Por lo que al multiplicar un conjunto de vectores

tambin debe hacer se elemento a elemento en forma ortogonal como se muestra en la


siguiente imagen:

Debe recordarse entonces que existen dos restricciones para poder multiplicar dos matrices:

1.- El nmero de columnas de la matriz que se multiplica por la izquierda debe ser igual al
nmero de renglones de la matriz que se multiplica por la derecha.

29
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

2.- El nmero de renglones de la matriz que se multiplica por la izquierda debe ser igual al
nmero de columnas de la matriz que se multiplica por la derecha.

2.- OBJETIVO

El alumno aprender a realizar operaciones ordenadas con arreglos 2-D ledos a partir de
archivos de texto.

El alumno constar la importancia de los tipos de variables empleados en la declaracin,


lectura e impresin de variables del programa.

3.- MATERIAL

Computadora

DEV C++

Algoritmo de lectura y escritura (visual) de elementos de una


matriz

Diagrama de flujo de multiplicacin de matrices AMxN*BOxP

Pseudo-cdigo multiplicacin de matrices.

4.- METODOLOGA

1.- A partir de las lneas de lectura de matrices de la prctica anterior y su pseudo-cdigo


generado para esta prctica, gener el cdigo de multiplicacin de dos matrices AMxN*BOxP.

2.- Corrija las siguientes lneas, optimice el uso de variables (elimine las que no sean
necesarias).

1 #include <stdio.h>
2 #include<math.h>
3 int main(){
4 float MatrizA[100][100], MatrizB[100][100], MatrizC[100][100],S;
5 int i,j,M,N,O,P;
6 M=5;

30
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

7 N=5;
8 O=5;
9 P=5;
10
11 FILE *ArchivoA;
12 FILE *ArchivoB;
13
14 // Lectura de Matriz A
15
16 ArchivoA = fopen ("DatosA.txt", "r");
17 if(ArchivoA == NULL){
18 printf("Error al abrir el archivo DatosA");
19 return 1;
20 } //End if
21 printf("Matriz A:\n");
22 while (feof(ArchivoA) == 0){
23 for(i=0; i<M; i++){
24 for(j=0;j<N;j++){
25 fscanf(ArchivoA, "%f", &MatrizA[i][j]);
26 printf("%f ", MatrizA[i][j]);
27 } //End for i
28 printf("\n");
29 } //End for j
30 } //End while
31 printf("\n");
32
33 // Lectura de Matriz B
34
35 ArchivoB = fopen ("DatosB.txt", "r");
36 if(ArchivoB == NULL){
37 printf("Error al abrir el archivo DatosB");
38 return 1;
39 } //End if
40 printf("Matriz B:\n");
41 while (feof(ArchivoB) == 0){
42 for(i=0; i<M; i++){
43 for(j=0;j<N;j++){
44 fscanf(ArchivoB, "%f", &MatrizB[i][j]);
45 printf("%f ", MatrizB[i][j]);
46 } //End for i
47 printf("\n");
48 } //End for j
48 } //End while
50 printf("\n");

31
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

51 if((M==P)&&(O==N)){
52 //Solucin de Producto (Obtencin de Matriz C)
53 for (i=0; i<M; i++){
54 for (j=0; j<M; j++){
55 S=0;
56 for (k=0; k<M; k++){
57 S = S + MatrizA[i][k]*MatrizB[k][j];
58 }
59 MatrizC[i][j] = S;
60 }
61 }
62 }
63 else{
64 printf("Dimensiones inconsistentes");
65 }
66 printf("Producto de las matrices:\n");
67 for (i=0; i<P; i++){
68 for (j=0; j<P; j++){
69 printf("%f", MatrizC[i][j]);
70 }
71 printf("\n");
72 }
73 fclose ( ArchivoA );
74 fclose ( ArchivoB );
75 return 0;
76 }

5.- RESULTADOS Y OBSERVACIONES

1.- Agregue las lneas necesarias para imprimir el resultado en un archivo de texto
MatrizC.txt y efecte lo siguiente:

2.- Genere un ejemplo arbitrario de dos matrices A y B y multiplquelas de forma manual


(calculadora). Escriba hasta 6 cifras decimales.

3.- Cambie el tipo de MatrizA, declrela ahora como double Qu ocurre con su resultado?,
por qu?, comprelo con el resultado manual.

32
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

4.- Deshaga el cambio del punto 2. Ahora cambie el tipo de variable de lectura de MatrizB
(linea 44). Qu ocurre con el resultado?, por qu?, comprelo con su resultado manual.

5.- Deshaga el cambio del punto 4. Ahora cambie el formato de escritura de MatrizC (en el
cdigo que Ud debe generar segn el punto 1). Coloque %i Qu ocurre con el resultado
del archivo?, por qu?.

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

PRACTICA No. 5

Mtodo de eliminacin de Gauss

33
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

1.- INTRODUCCIN

Un sistema de ecuaciones (lineales) es un conjunto de ecuaciones (lineales) con varias


incgnitas. Generalmente, las incgnitas aparecen en varias ecuaciones.

Resolver un sistema consiste en encontrar los valores de todas las incgnitas para los
cuales se verifican todas las ecuaciones que conforman el sistema. Si alguna de las
ecuaciones no se verifica, entonces no se trata de una solucin.

Si hay una nica solucin (un valor para cada incgnita) decimos que el sistema
es compatible determinado (SCD).
Si hay varias (en este caso hay infinitas) soluciones, decimos que es compatible
indeterminado (SCI).
Si no hay ninguna, y esto ocurre cuando dos o ms ecuaciones no pueden verificarse
al mismo tiempo, decimos que es incompatible (SI). Por ejemplo, el sistema de
ecuaciones.

Resolver sistemas mediante el mtodo de eliminacin de Gauss, implica realizar


operaciones elementales fila o columna sobre la matriz ampliada del sistema hasta obtener
la forma escalonada o escalonada reducida (Gauss-Jordan).

2.- OBJETIVO

El alumno reafirmar sus conocimientos y habilidades realizando operaciones ordenadas


con arreglos 2-D.

El alumno constar la importancia de establecer variables auxiliares para mantener orden


en las operaciones con arreglos (Mtodo de ordenamiento de burbuja bubble sort o de
intercambio directo)

3.- MATERIAL

Computadora

DEV C++

34
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Diagrama de flujo del mtodo de Gauss

Pseudo-cdigo del mtodo de Gauss

4.- METODOLOGA

1.- A partir de las lneas de lectura de matrices de la prctica 3 y su pseudo-cdigo generado


para esta prctica, gener el cdigo de eliminacin de Gauss.

2.- Corrija las siguientes lneas, optimice el uso de variables (elimine las que no sean
necesarias e incluya las que falten).

1 #include <stdio.h>
2 int main(){
3 float MatrizA[100][100],Aux;
4 int N=2;
5 int i,j,k,o,p,q;
6 FILE *Archivo;
7 Archivo = fopen ("DatosA.txt", "r");
8 // Lectura de Matriz A
9 if(Archivo != NULL){
10 while (feof(Archivo) == 0){
11 for(j=1; j<=N; j++){
12 for(i=1; i<=N; i++){
13 fscanf(Archivo, "%f", &MatrizA[i][j]);
14 printf("%f", MatrizA[i][j]);
15 }
16 printf("\n");
17 }
18 }
19 }
20 fclose ( Archivo );
21 printf(" \n \n ");
22 for(i=0;i<N;i++){
23 if(MatrizA[i][i]<=0.000001){
24 printf("///////Se ha encontrado diagonal principal incosistente /////// \n ");
25 printf("Elemento A(%i,%i)=0 \n ",i+1,i+1);
26 p=i+1;
27 while(MatrizA[p][i]==0){
28 p=p+1;
29 } //End while

35
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

30 for(k=0;k<N;k++){
31 Aux=MatrizA[p][k];
32 MatrizA[p][k]=MatrizA[i][k];
33 MatrizA[i][k]=Aux;
34 } //End for k
35 printf("Intercambio Renglon %i por Renglon %i \n \n ",i+1,p+1);
36 printf("Matriz permutada A= \n ");
37 for(k=0; k<N; k++){
38 for(j=0; j<N;j++){
39 printf("%10f ", MatrizA[k][j]);
40 } // End For j
41 printf("\n");
42 } //End for k
43 } //End if
44 printf("\n");
45 printf("Renglon pivote %i\n", i+1);
46 Aux=MatrizA[i][i];
47 for(k=0;k<N;k++){
48 MatrizA[i][k]=MatrizA[i][k]/Aux;
49 } //End for k
50 printf("Renglon %i dividido por A(%i,%i) \n \n",i+1,i+1,i+1);
51 printf("Matriz A= \n ");
52 for(k=0; k<N; k++){
53 for(j=0; j<N;j++){
54 printf("%10f ", MatrizA[k][j]);
55 } // End For j
56 printf("\n");
57 } //End for k
58 printf("\n");
59 for(p=i+1;p<N;p++){
60 printf("///////Operacion de eliminacion/////// \n ");
61 printf("-(%f)*Renglon %i + Renglon %i = Renglon %i\n ",MatrizA[p][i],i+1,p+1,p+1);
62 Aux=MatrizA[p][i];
63 for(q=0;q<N;q++){
64 MatrizA[p][q]=-1.0*Aux*MatrizA[i][q]+MatrizA[p][q];
65 } //End for q
66 printf("Matriz A= \n ");
67 for(k=0; k<N; k++){
68 for(j=0; j<N;j++){
69 printf(" %10f ", MatrizA[k][j]);
70 } // End For j
71 printf("\n");
72 } //End for k
73 printf("\n");

36
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

74 } //End for p
75 } // End For I
76 for(i=N-1;i>=0;i--){
77 for(p=i-1;p>=0;p--){
78 printf("\n");
79 printf("///////Operacion de eliminacion/////// \n ");
80 printf("-(%f)*Renglon %i + Renglon %i = Renglon %i\n ",MatrizA[p][i],i+1,p+1,p+1)
81 Aux=MatrizA[p][i];
82 for(q=0;q<N;q++){
83 MatrizA[p][q]=-1.0*Aux*MatrizA[i][q]+MatrizA[p][q];
84 } //End for q
85 printf("Matriz A= \n ");
86 for(k=0; k<N; k++){
87 for(j=0; j<N;j++){
88 printf("%10f ", MatrizA[k][j]);
89 } // End For j
90 printf("\n");
91 } //End for k
92 } //End for p
93 } // End For i
94 printf("\n");
95 printf("Resultado final Matriz A= \n ");
96 for(i=0; i<N; i++){
97 for(j=0; j<N; j++){
98 printf("%10f ", MatrizA[i][j]);
99 } // End For j
100 printf("\n");
101 } //End for i
102 return 0;
103 }
5.- RESULTADOS Y OBSERVACIONES

1.- Agregue las lneas necesarias para imprimir el resultado en un archivo de texto
MatrizC.txt y efecte lo siguiente:

2.- Modifique el cdigo para resolver sistemas lineales y resuelva los siguiente sistemas:

37
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

3.- Elimine las lneas (comntelas) que imprimen saltos de linea qu


ocurre?

4.- Por qu hay saltos de lnea que se colocan dentro de ciclos for (lnea 41) y saltos que
se colocan fura de estos ciclos (lnea 44)? Localice ms ejemplos de saltos de lnea
similares a este par. Comente los saltos que se colocan dentro de los ciclos for Qu
ocurre?, Qu ocurre al comentar los saltos de lnea externos?.

5.- Identifique en su diagrama las etapas que propuso con las lneas de este cdigo, aada
etapas en su diagrama de acuerdo con las impresiones que Ud. No haba considerado.

6.- Elimine las lneas 46 y 81 qu modificaciones son necesarias para que la eliminacin
no afecte la secuencia de clculos?. Explique de manera breve y concreta alguna forma
general para eliminar variables burbuja (auxiliares) en intercambio de elementos de
arreglos.

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

38
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

39
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

PRACTICA No. 6

Inversin de matrices mediante eliminacin de Gauss-Jordan

1.- INTRODUCCIN

Sea A una matriz cuadrada no singular, es decir, que su determinante sea diferente de

cero, |A|0. Por definicin de matriz inversa, se tiene que A-1 es la inversa de A si:

1
A A =I

Haciendo X=A-1 y sustituyendo en la ecuacin anterior, se obtiene

AX =I

Puede considerarse que esta ecuacin matricial representa un sistema de ecuaciones


simultneas, en donde no hay un solo vector de trminos independientes sino n,
los nvectores bsicos que forman la matriz unitaria I. Adems, no existe un solo vector de
incgnitas, sino n, los que corresponden a cada columna de la matriz unitaria.

Por lo anterior, es posible determinar la inversa de una matriz con el mtodo de Gauss-
Jordan de eliminacin completa. Para lograrlo, bastar con aplicar las operaciones
elementales sobre los renglones de la matriz ampliada (A, I) de manera de
transformar Aen I. Cuando se haya hecho, se obtendr la matriz ampliada (I, A-1) , con lo
que se tendr la inversa buscada.

2.- OBJETIVO

El alumno reafirmar sus conocimientos y habilidades realizando operaciones ordenadas


con arreglos 2-D.

El alumno comprender la importancia del reciclado de cdigos.

40
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

3.- MATERIAL

Computadora

DEV C++

Diagrama de flujo del mtodo de inversin de matrices por


Gauss-Jordan

Pseudo-cdigo del mtodo de inversin de matrices por


Gauss-Jordan

4.- METODOLOGA

1.- Modifique el cdigo de la prctica 5 incluyendo un arreglo MatrizI que capture la


inversa de cualquier matriz alimentada mediante un archivo de texto.

5.- RESULTADOS Y OBSERVACIONES

1.- Agregue las lneas necesarias para imprimir el resultado en un archivo de texto
MatrizC.txt y efecte lo siguiente:

2.- Modifique el cdigo para resolver sistemas lineales y resuelva los siguiente sistemas:

Copie el texto que se muestra a continuacin en un archivo que alimente a su programa


para obtener la matriz inversa de la siguiente matriz A10x10

13.23067 4.360123 14.63096 7.087709 18.98176 10.30654 3.575340 14.18899 8.182374 7.7199972
09 48 19 35 82 85 98 46 81 6
3.928091 2.416759 17.77138 13.25706 14.01166 7.913277 5.032619 10.69468 7.757286 18.205791
95 35 21 48 44 66 33 77 66 5
11.78528 7.499704 11.56273 9.601440 8.784044 13.80040 15.70629 11.34141 11.49744 9.1265473
2 14 06 58 53 02 56 86 19 8
6.553207 1.409566 14.03738 12.92378 13.30206 13.76184 11.37964 13.71453 14.68300 13.346534
18 65 5 71 53 77 85 15 58 5
18.17525 2.589615 0.163520 17.08357 0.263367 8.652356 4.100237 11.15406 7.976795 16.564874
61 25 29 75 7 4 86 66 17 6
8.848611 14.08490 4.132844 0.076375 4.773625 14.39821 8.395747 17.45316 17.02122 2.4879142
41 91 99 98 03 57 71 55 18 9
10.74638 13.45659 6.783008 2.238219 14.97559 4.336727 3.489702 17.63255 15.56620 19.283874
84 41 52 89 21 23 42 56 72 8
2.170698 12.62214 11.29373 6.415003 14.06559 10.25563 13.94170 11.64576 9.449846 6.7100865
33 93 66 44 37 71 81 13 84 9
17.67517 6.338999 16.83143 13.43273 6.903216 8.508955 17.55323 13.56886 7.255048 19.401324
25 04 5 41 24 23 57 2 73 5
17.24452 11.33334 5.464589 17.96970 12.84355 14.99411 12.84105 10.49182 13.07500 1.8617272
17 97 11 99 22 09 53 51 02 4

Debe obtener la siguiente matriz como resultado:


41
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

- -
0.0102571 0.0613439 0.0111278 0.0212421 0.0117654 0.0194801
0.02419875 1 2 -0.0355907 -0.0161263 1 6 -0.0691897 3 4
- - -
- 0.0881953 0.0393432 0.1181524 0.0087985 0.0277124 0.0067612 0.0171122 0.0295556
0.03346284 7 6 7 6 8 0.0092789 2 7 3
- - - -
- 0.1020676 0.0351363 0.0843492 0.0613222 0.0174445 0.0934878 0.0445172
0.01995841 6 -0.0301183 2 5 5 2 8 0.0600568 1
- -
- 0.0281288 0.0373004 0.0008102 0.0222651 0.0283713 0.0164013 0.0491905 0.0669725
0.03216881 4 -0.1583906 1 1 7 7 4 4 2
- - - -
0.0557715 0.0461271 0.0173615 0.0171253 0.0735870 0.0297111 0.0503661 0.0502545 0.0140728
0.04564292 7 3 4 3 2 6 8 1 9
- - - - -
0.0456604 0.2766421 0.1093305 0.0920704 0.0227823 0.0352207 0.0347707 0.1590413 0.0971729
0.04495554 5 8 8 9 1 9 5 3 4
- - -
0.0159105 0.0695113 -8.2465E- 0.0411452 0.0037389 0.0596678 0.0392672 0.0153154
-0.0082543 -0.1000161 9 7 05 5 2 5 2 6
- - - -
0.1018102 0.2890262 0.1135854 0.0465465 0.0617043 0.0565979 0.1166188 0.1030202 0.0295060
0.05387714 9 4 8 2 1 6 8 9 9
- - -
- 0.0351350 0.0216628 0.1015814 0.0306743 0.0586847 0.1417186 0.0270683 0.0874669
0.08080786 6 6 0.0688962 7 1 3 7 5 9
- - -
- 0.0208781 0.1539448 0.0506353 0.0503373 0.0315242 0.0148534 0.0698102 0.0629838
0.00747665 2 9 8 2 -0.0487562 6 2 1 1

3.- Invierta la siguiente matriz

4.- Requiere pivoteo (intercambio de renglones)?.

5.- Investigue qu es el pivoteo total?, su cdigo realiza este tipo de operaciones?

6.- Elimine todas las lneas que imprimen resultados parciales en el cdigo, necesitara el
mtodo ms adelante.

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

42
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

PRACTICA No. 7

Mtodo de Factorizacin LU

1.- INTRODUCCIN

La factorizacion LU de una matriz es una factorizacin que resume el proceso de


eliminacin gaussiana aplicado a la matriz y que es conveniente en trminos del nmero
total de operaciones de punto flotante cuando se desea calcular la inversa de una matriz o
cuando se resolver una serie de sistemas de ecuaciones con una misma matriz de
coeficientes. La factorizacin LU sin intercambio basada en matrices elementales es
conocida como Algoritmo de Doolittle.

Suponga que la matriz A es una matriz m n se puede escribir como el producto de dos
matrices:

A=LU

donde L es una matriz triangular inferior m m y U es una matriz escalonada m n.


Entonces para resolver el sistema:

Ax=b

escribimos

Ax=( LU ) x=L(Ux)

Una posible estrategia de solucin consiste en tomar y = U x y resolver para y:

Ly=b

43
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Como la matriz L es triangular superior este sistema puede resolverse mediante sustitucin
hacia abajo. Una vez con los valores encontrados de y, las incgnitas al sistema inicial se
resuelve despejando, mediante sustitucin regresiva, x de:

Ux= y

Estas observaciones nos dan la pauta para ver la conveniencia de una factorizacion como
la anterior, es decir factorizar A como el producto de una matriz L triangular superior, por
otra U la cual es escalonada. Esta factorizacion se llama usualmente Descomposicion LU.

2.- OBJETIVO

El alumno reafirmar sus conocimientos y habilidades realizando operaciones ordenadas


con arreglos 2-D.

El alumno pondr en prctica su conocimiento sobre condicionales y slidas


(impresiones) al comparar dos cdigos.

3.- MATERIAL

Computadora

DEV C++

Diagrama de flujo del mtodo de factorizacin LU

Pseudo-cdigo del mtodo de factorizacin LU

4.- METODOLOGA

1.- Codifique el mtodo de factorizacin LU

2.- Incluya lneas clculo e impresin que le permitan contabilizar el nmero de


operaciones de punto flotante realizadas en el cmputo.

44
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

3.- Proponga un sistema arbitrario de 100x100 y resuelva empleando el mtodo de Gauss-


Jordan (que ya codifc anteriormente) y la factorizacin LU. Es igual el nmero de
operaciones?, Cul es ms conveniente?.

5.- RESULTADOS Y OBSERVACIONES

Matriz resuelta y propuesta por el estudiante:

Operaciones de Gauss-Jordan:

Operaciones de LU:

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

45
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

PRACTICA No. 8

Mtodo de Newton

1.- INTRODUCCIN

Una ecuacin algebraica no lineal se define como una funcin que contiene operadores que
imposibilitan la obtencin de relaciones escalares (lineales) entre las variables, de tal forma
que la imagen de la variable independiente no es un mltiplo de su dominio y no existe una
representacin lineal para el mapeo que produce dicha ecuacin. Algunos ejemplos de
operadores algebraicos con este efecto son todas las funciones trascendentes como los
exponenciales, logaritmos y funciones trigonomtricas, la multiplicacin o divisin de
variables.

La solucin de una ecuacin se define como el valor para las variable independiente en el
que se cumple el equilibrio descrito. Para el caso de una ecuacin lineal el simple
reacomodo algebraico de variables (en caso de que no se proporcione la forma cannica) es
suficiente para obtener la relacin lineal entre las variables. En el caso de ecuaciones no-
lineales es necesario echar mano de mtodos numricos.

Mtodo de Newton

El mtodo de Newton-Raphson usualmente es descrito en trminos de la expansin en serie


de Taylor de una versin local muy cercana a la solucin del problema a resolver. Sin
embargo, la visualizacin geomtrica del mtodo resulta ms ilustrativa.

46
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Considrese a la funcin no lineal f (x) como una funcin continua y diferenciable, al

menos en la regin de su dominio en el que se buscara una solucin por el mtodo que se
describe a continuacin.

.
Obsrvese que si se traza una recta tangente al punto (x i , f ( x i ) ) , sta pude ser empleada

para predecir el siguiente valor de la variable independiente x , dicha tangente, de

acuerdo con la interpretacin geomtrica de la derivada, tendr una pendiente f ' ( xi ) .

Empleando la ecuacin de la lnea recta para la tangente se obtiene:

0f ( x i) ' i
=f ( x )
x i+1 xi

Rearreglando

i+1 f ( xi )
i
x =x ' i
f (x )

La Ecuacin anterior es la expresin genrica del mtodo de Newton-Raphson y con la


notacin apropiada, tambin es la expresin genrica del mtodo de Newton.

47
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

La principal desventaja del mtodo de Newton estriba en su gran sensibilidad a la


aproximacin inicial empleada, de no encontrarse suficientemente cerca de la solucin, el
mtodo diverge (ver la Figura de abajo), adems, el mtodo solo puede ser usado en el
clculo de uno de los vectores solucin del problema, excluyendo el resto de las soluciones
cuando stas existen. Cabe mencionar que el mtodo de Newton comparte las ventajas y
desventajas del mtodo de Newton-Raphson.

Obsrvese como la presencia de puntos de inflexin o mnimos locales en la grfica de la


funcin a resolver causa dificultades que provocan divergencia en el mtodo de Newton-
Raphson. Para evitar que situaciones como stas se presenten es necesario utilizar
aproximaciones iniciales suficientemente cercanas a la solucin buscada.

2.- OBJETIVO

El alumno aprender a insertar impresiones parciales para rectificar el flujo de un


programa.

3.- MATERIAL

Computadora

DEV C++
48
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Diagrama de flujo del mtodo de Newton-Raphsnon.

Pseudo-cdigo del mtodo de Newton-Raphsnon.

4.- METODOLOGA

1.- Codifique el mtodo de relajacin Newton-Raphson.

2.- Comente, corrija y optimice cada lnea del siguiente cdigo para qu sirve?:

1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<math.h>
4 #include <conio.h>
5
6
7 int main(){
8 float x, F,G,J,Delta,Gama,Tol;
9 int i,Neq,Suma,iter;
10 FILE *Archivo;
11 Archivo = fopen ("Resultados.txt", "w");
12 Neq=2;
13 Gama=0.1;
14 Suma=0;
15 iter=0;
16 // Aproximaciones iniciales
17 x=0.1;
18
19 Delta=0.000001;
20 Tol=0.000001;
21 while(F<Tol){ 22
F=2*pow(x,2)+3*x-5
23 G=F
24 x=x+Delta
25 F=2*pow(x,2)+3*x-5
26 J=(F-G)/Delta
27 x=x-Delta
28 x=x-F/J
29 F=2*pow(x,2)+3*x-5
30 iter=iter+1

49
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

31
32 } Variable Se usa No se
33 printf("%i, %10.5f, %10.5f,%10.5f, %10.5f \n",iter, x[0],x[1],F[0],F[1]); usa
34
35 fprintf(Archivo,"%10.5f, %10.5f",x);
36 fprintf(Archivo,"\n" );
37 printf("%10.5f, %10.5f \n",x[0]);
38 return 0;
39 }

5.- RESULTADOS Y OBSERVACIONES # de Error


Linea
1.- Resuelva este ejemplo en Excel.

2.- Coloque lneas de impresin y pausa (system(pause);) despus de cada iteracin (lnea
31). Compara las iteraciones en Excel con las iteraciones de su cdigo. Son exactamente
iguales?, por qu?. Consiga que sean iguales. Reporte impresiones de pantalla.

3.- Busque tres ejemplos de funciones no lineales en internet y resulvalos, reporte sus
resultados.

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

50
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

PRACTICA No. 9

Mtodo de Relajacin No-Lienal

1.- INTRODUCCIN

Un sistema de ecuaciones algebraicas pude ser definido como un conjunto finito de


igualdades algebraicas en las que se presentan las mismas variables, es decir,
filosficamente es la concurrencia un nmero finito de verdades matemticas.

f 1=f ( x 1 , x 2 , x 3 , , x n )
f 2=f ( x 1 , x 2 , x 3 , , x n )
.
.
.
f n=f ( x 1 , x 2 , x 3 , , x n )

Un sistema algebraico no lineal se define como un sistema de ecuaciones algebraicas en el


que al menos una de las ecuaciones del conjunto es no lineal, es decir, contiene operadores
que imposibilitan la obtencin de relaciones explicitas entre las variables, de tal forma que
la imagen del sistema de ecuaciones no lineales no es un mltiplo de su dominio y no existe
una representacin lineal (matricial) para el mapeo que produce el sistema no lineal.
Algunos ejemplos de operadores algebraicos con este efecto son todas las funciones
trascendentes como los exponenciales, logaritmos y funciones trigonomtricas, la
multiplicacin o divisin de variables del sistema, entre otros.

La solucin de un sistema de ecuaciones se define como el conjunto de valores para las


variables del sistema que es la solucin para cada una de sus ecuaciones tambin y la
51
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

solucin de una sola ecuacin algebraica se define como el valor o conjunto de valores
cuya imagen (al ser aplicada dicha ecuacin) es un cero, es decir, la solucin de un sistema
algebraico es el conjunto de valores de sus variables en el que se cumple el equilibrio
descrito por todas las igualdades del sistema.

Para el caso de sistemas lineales se cuenta con un buen nmero de mtodos y enfoques
analticos, pero en el caso de sistemas no lineales, no existe mtodo o teora matemtica
que permita obtener una solucin basada en una expresin explicita para la relacin que
existe entre las variables del sistema.

Mtodo de Newton

Este mtodo es una generalizacin del mtodo de Newton-Raphson empleado en la


solucin de una sola ecuacin algebraica no lineal, como su nombre lo indica, fue
propuesto por primera vez por Isaac Newton (1643-1727) en la solucin de una sola
ecuacin polinomial como procedimiento meramente algebraico, y generalizado al emplear
derivadas para cualquier ecuacin no lineal por Joseph Raphson (1648-1712).

La ampliacin del mtodo de Newton hacia sistemas de ecuaciones algebraicas no lineales,


con las debidas demostraciones, fue dada por Thomas Simpson (1710-1761), por lo que en
el caso de sistemas algebraicos no lineales el mtodo debera ser llamado mtodo de
Newton-Simpson a diferencia de lo que ocurre en la literatura formal de ingeniera y
matemticas donde se hace uso de Mtodo de Newton para referirse a esta tcnica
numrica.

El mtodo de Newton-Raphson usualmente es descrito en trminos de la expansin en serie


de Taylor de una versin local muy cercana a la solucin del problema a resolver. Sin
embargo, la visualizacin geomtrica del mtodo resulta ms ilustrativa.

52
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Considrese a la funcin no lineal f (x) como una funcin continua y diferenciable, al

menos en la regin de su dominio en el que se buscara una solucin por el mtodo que se
describe a continuacin.

.
Obsrvese que si se traza una recta tangente al punto (x i , f ( x i ) ) , sta pude ser empleada

para predecir el siguiente valor de la variable independiente x , dicha tangente, de

acuerdo con la interpretacin geomtrica de la derivada, tendr una pendiente f ' ( xi ) .

Empleando la ecuacin de la lnea recta para la tangente se obtiene:

0f ( x i) ' i
=f ( x )
x i+1 xi (1.7)

Rearreglando

i+1 f ( xi )
i
x =x ' i
f (x ) (1.8)

La Ecuacin 1.8 es la expresin genrica del mtodo de Newton-Raphson y con la notacin


apropiada, tambin es la expresin genrica del mtodo de Newton.

53
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

i
Considrese a x i+1 , xi y f (x ) como expresiones vectoriales, y a f ' ( x i ) como

la matriz jacobiana del sistema de n ecuaciones algebraicas no lineales que integran al


i
vector f ( x ) .

[] []
x
x i+1
1 xi1

[ ]
x2
i+1
x2
i f 1 ( x i1 , x i2 , , x in )
x i+1= x i+1 x i= x i+1 f 2 ( x i1 , x i2 , , x in )
3 3
f ( i)= f 3 ( x i1 , x i2 , , x in )
i+1 i
xn xn
f n ( x 1 , x i2 , , x in )
i

(1.9)

[ ]
f1 f1 f 1 f1
i i i
i
x 1 x 2 x 3 xn
f2 f2 f 2 f2

xi1 xi2 xi3 x in
'
f ( i)= f f3 f3 f 3
3

xi1 xi2 x i3 x in

fn fn fn f n
i i i

x 1 x 2 x 3 x in

Tomando en cuenta las expresiones de 1.9 con las consideraciones propias del algebra de
matrices, la Ecuacin 1.8 se transforma en el mtodo de Newton.

i 1
i+1 i '
x =x f ( x ) f (x )
i
(1.10)

Con frecuencia el mtodo de Newton es llamado mtodo de convergencia cuadrtica debido


a que en cada iteracin se produce un acercamiento a la solucin buscada de un orden de

54
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

magnitud, algunos detalles del anlisis matemtico de convergencia para ste y otros
mtodos iterativos son tratados en numerosas publicaciones.

La principal desventaja del mtodo de Newton estriba en su gran sensibilidad a la


aproximacin inicial empleada, de no encontrarse suficientemente cerca de la solucin, el
mtodo diverge (ver Figura 1.5), adems, el mtodo solo puede ser usado en el clculo de
uno de los vectores solucin del problema, excluyendo el resto de las soluciones cuando
stas existen. Cabe mencionar que el mtodo de Newton comparte las ventajas y
desventajas del mtodo de Newton-Raphson.

Obsrvese como la presencia de puntos de inflexin o mnimos locales en la grfica de la


funcin a resolver causa dificultades que provocan divergencia en el mtodo de Newton-
Raphson, para evitar que situaciones como stas se presenten es necesario utilizar
aproximaciones iniciales suficientemente cercanas a la solucin buscada.

Modificaciones del mtodo de Newton

En el mtodo de relajacin no-lineal la matriz Jacobiana que interviene en cada iteracin


'
del mtodo de Newton se sustituye por otra matriz con la misma diagonal ( D f ( x) ) pero

con todos sus dems elementos nulos.

55
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

[ ]
f1
0 0 0
xi1
f2 (1.12)
0 0 0
xi2
Df ' ( i)= f3
0 0 0
xi3


. .
f n
0 0 0
x in

Y la expresin genrica mediante la cual es modificado el valor de las variables en cada


iteracin.

1
x i+1=x iDf ' ( x i ) f ( x i) (1.13)

El mtodo tambin es conocido como Relajacin No Lineal y ha sido reportado como


estrategia adecuada para grandes sistemas de ecuaciones no lineales (ms 10,000), por qu
reduce el nmero de operaciones necesarias para construir e invertir la matriz Jacobiana, sin
embargo, tal como el mtodo de Newton es extremadamente sensible a la aproximacin
inicial empleada. Adems, al igual que en el mtodo de Jacobi para ecuaciones lineales, el
mtodo solo es vlido cuando los trminos que no pertenecen a la diagonal principal son
pequeos en comparacin con sta, es decir, sistemas en los que las matrices Jacobianas
presentan diagonal dominante.

2.- OBJETIVO

El alumno empleara funciones para facilitar la ejecucin de subprocesos del programa.

El alumno emplear variables globales como alternativa a la asignacin de memoria


esttica.

3.- MATERIAL
56
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Computadora

DEV C++

Diagrama de flujo del mtodo de relajacin no-lineal

Pseudo-cdigo del mtodo de relajacin no-lineal

4.- METODOLOGA

1.- Codifique el mtodo de relajacin no-lineal

2.- Optimice y corrija el siguiente cdigo.

1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<math.h>
4 #include <conio.h>
5 float FUN(float x[],float F[]); // prototipo
6
7 int main(){
8 float x[10],F[10],G[10],J[10],Delta,Gama,Tol;
9 int i,Neq,Suma,iter;
10 FILE *Archivo;
11 Archivo = fopen ("Resultados.txt", "w");
12 Neq=2;
13 Gama=0.1;
14 Suma=0;
15 iter=0;
16 // Aproximaciones iniciales
17 x[0]=0.1;
18 x[1]=1.0;
19 Delta=0.000001;
20 Tol=0.000001;
21 while(Suma<Neq){
22 FUN(x,F);
23
24 for(i=0;i<Neq;i++){

57
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

25 G[i]=F[i];
26 }
27 for(i=0;i<Neq;i++){
28 x[i]=x[i]+Delta;
29 FUN(x,F);
30 J[i]=(F[i]-G[i])/Delta;
31 x[i]=x[i]-Delta;
32 }
33 for(i=0;i<Neq;i++){
34 J[i]=1.0/J[i];
35 x[i]=x[i]-Gama*J[i]*F[i];
36 }
37 FUN(x,F);
38 for(i=0;i<Neq;i++){
39 if(abs(F[i])<=Tol){
40 Suma=Suma+1;
41 }
42 }
43 iter=iter+1;
44 printf("%i, %10.5f, %10.5f,%10.5f, %10.5f \n",iter, x[0],x[1],F[0],F[1]);
45 }
46 fprintf(Archivo,"%10.5f, %10.5f",x[0],x[1]);
47 fprintf(Archivo,"\n" );
48 printf("%10.5f, %10.5f \n",x[0],x[1]);
49 return 0;
50 float FUN(float x[],float F[]){
51 F[0]= x[0]+5.0*x[1]*(x[1]-1)*(x[1]+1);
52 F[1]= x[1]-5.0*x[1]*(x[0]-1)*(x[0]-1);
53 }
5.- RESULTADOS Y OBSERVACIONES

1.- Investigue el concepto de asigancin de memoria esttica y asignacin de memoria


dinmica.

2.- Cules son los arreglos manejados en el cdigo?, son de asignacin esttica o
dinmica?.

4.- Investigue al menos 3 formas de declarar una variable global.

58
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

3.- Si quisiera resolver diversos problema, con diferente nmero de ecuaciones (e


incgnitas) pero la memoria de su computadora se encuentra ocupada ejecutando otras
aplicaciones demandantes qu estrategia propondra para asignar (durante la compilacin)
solo la memoria requerida por los arreglos?

4.- Declare Neq como una variable global, resuelva un sistema algebraico no lineal
arbitrario. Intente con las tres formas globales que investig

5.- Resuelva los siguientes sistemas (obtenga al menos una de las soluciones mostradas)

f 1 =50000 ( 100x 1 ) +1000 x 21000 ( 50000x 4 )

f 2=500 x 3 ( 250x 1 ) 1000 x 2


Sistema 1

f 3 =300 x3 ( x 1x 5 )1000 ( 50000x 4 )

f 4=x 4 ( x 1x 5 ) +1000 ( 50000x 4 )1000 ( x 4x 6 )

f 5 =x 6 ( x 5125 ) +1000 ( x 4x 6 )1000 ( x 610000 )

f 6=200 x3 ( x 5125 ) 1000 ( x 4x 6 )

Soluciones
Vector x1 x2 x3 x4 x5 x6

1 218.534560 17888.5878 1137.030870 38038.14021 183.467029 24742.37673


2 -2051.3171 -73749.83989 -64.09359120 16183.98306 -292.63808 10830.39817
3 -1232.7877 -34398.42925 -46.39696993 17759.04191 1083.52429 26653.56651

2 2
f 1 =x1 + x 217 x 1 x 2123
Sistema 2
f 2=8 x1 (x 25)38 cos ( x 1 ) x3

f 3 =x 1 x 2+ x 1 x3 x33 17

59
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Tabla 3.6 Vectores solucin conocidos para el Ejemplo 2


Vector x1 x2 x3

1 314.582007948579 18.5461410730246 23.6713712459458


2 -2.29675231582902 2.81252915037809 -2.5961025592401

2
f 1 =x1 2 x 2 +3 x3 x 4x 590

f 2=x122 x 1 x 2 + x 3x 34 1.5 x 5 +2 x6 +10


Sistema 3

f 3 =2 x 14 x 2+ x23 x 4 x 5x 6

f 4=x 1 + x 2x 3+ x 4 + x25 4 x 618

2 2 3
f 5 =x 1x 2+ x 3x 4 x 538

f 6=x 1+ x 2 + x 3 x 4 x 5+ x 6 20

Soluciones
Vector x1 x2 x3 x4 x5 x6

1 -13.0590518 10.9327560 -2.5433787 8.1608244 -11.5996891 31.2826739


2 -10.9166156 -9.3503431 -1.7380550 0.8736348 -12.3804313 29.4049529
3 -10.5258791 -9.1644370 0.384171 0.9502723 -12.0863483 27.2389007
4 -10.2931933 -9.1335575 1.6045942 0.6550235 -11.9956828 26.3800210
5 -17.7045176 -149.7700178 28.0585121 -15.5104974 -50.1895353 572.4864795
6 10.7024890 6.0611254 -3.2486233 -0.1320977 5.6536089 8.4608586
7 8.77101158 -6.6458106 2.6315631 5.9806718 7.0070772 9.1433604
8 -10.0427978 -10.8994878 4.1586284 -1.3266404 17.3057086 63.7649989
9 10.1841471 8.0713329 -0.6641836 -3.7032478 3.9806860 3.2655694
10 266.41388 8067.0095 402.08305 -160.2461 -463.5386 55655.293

60
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

f 1 =2 x 31 +2 x1 x 222 x 1 + x 22+13
Sistema 4
2 3
f 2=x +2 x 1 x 2+ 2 x 14 x 2 +9
1 2

Soluciones
Vector x1 x2

1 0.793266633374663 -2.81385494179189
2 3.25325380077925 -2.71234920243276
3 0.712508783897050 0.855746665222728
4 0.987519329158964 1.80077280998996
5 -3.36940732541251 2.51437984556486
6 -3.45360197754889 1.14429972926715
7 -4.25544130182404 -3.84460673662735

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

61
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

PRACTICA No. 10

Mtodo de Newton

1.- INTRODUCCIN

Un sistema de ecuaciones algebraicas pude ser definido como un conjunto finito de


igualdades algebraicas en las que se presentan las mismas variables, es decir,
filosficamente es la concurrencia un nmero finito de verdades matemticas.

f 1=f ( x 1 , x 2 , x 3 , , x n )
f 2=f ( x 1 , x 2 , x 3 , , x n )
.
.
.
f n=f ( x 1 , x 2 , x 3 , , x n )

62
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Un sistema algebraico no lineal se define como un sistema de ecuaciones algebraicas en el


que al menos una de las ecuaciones del conjunto es no lineal, es decir, contiene operadores
que imposibilitan la obtencin de relaciones explicitas entre las variables, de tal forma que
la imagen del sistema de ecuaciones no lineales no es un mltiplo de su dominio y no existe
una representacin lineal (matricial) para el mapeo que produce el sistema no lineal.
Algunos ejemplos de operadores algebraicos con este efecto son todas las funciones
trascendentes como los exponenciales, logaritmos y funciones trigonomtricas, la
multiplicacin o divisin de variables del sistema, entre otros.

La solucin de un sistema de ecuaciones se define como el conjunto de valores para las


variables del sistema que es la solucin para cada una de sus ecuaciones tambin y la
solucin de una sola ecuacin algebraica se define como el valor o conjunto de valores
cuya imagen (al ser aplicada dicha ecuacin) es un cero, es decir, la solucin de un sistema
algebraico es el conjunto de valores de sus variables en el que se cumple el equilibrio
descrito por todas las igualdades del sistema.

Para el caso de sistemas lineales se cuenta con un buen nmero de mtodos y enfoques
analticos, pero en el caso de sistemas no lineales, no existe mtodo o teora matemtica
que permita obtener una solucin basada en una expresin explicita para la relacin que
existe entre las variables del sistema.

Mtodo de Newton

Este mtodo es una generalizacin del mtodo de Newton-Raphson empleado en la


solucin de una sola ecuacin algebraica no lineal, como su nombre lo indica, fue
propuesto por primera vez por Isaac Newton (1643-1727) en la solucin de una sola
ecuacin polinomial como procedimiento meramente algebraico, y generalizado al emplear
derivadas para cualquier ecuacin no lineal por Joseph Raphson (1648-1712).

63
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

La ampliacin del mtodo de Newton hacia sistemas de ecuaciones algebraicas no lineales,


con las debidas demostraciones, fue dada por Thomas Simpson (1710-1761), por lo que en
el caso de sistemas algebraicos no lineales el mtodo debera ser llamado mtodo de
Newton-Simpson a diferencia de lo que ocurre en la literatura formal de ingeniera y
matemticas donde se hace uso de Mtodo de Newton para referirse a esta tcnica
numrica.

El mtodo de Newton-Raphson usualmente es descrito en trminos de la expansin en serie


de Taylor de una versin local muy cercana a la solucin del problema a resolver. Sin
embargo, la visualizacin geomtrica del mtodo resulta ms ilustrativa.

Considrese a la funcin no lineal f (x) como una funcin continua y diferenciable, al

menos en la regin de su dominio en el que se buscara una solucin por el mtodo que se
describe a continuacin.

.
Obsrvese que si se traza una recta tangente al punto (x i , f ( x i ) ) , sta pude ser empleada

para predecir el siguiente valor de la variable independiente x , dicha tangente, de

64
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

acuerdo con la interpretacin geomtrica de la derivada, tendr una pendiente f ' ( xi ) .

Empleando la ecuacin de la lnea recta para la tangente se obtiene:

i
0f ( x ) ' i
=f ( x )
x i+1 xi (1.7)

Rearreglando
i
f (x )
x i+1=x i ' i
f (x ) (1.8)

La Ecuacin 1.8 es la expresin genrica del mtodo de Newton-Raphson y con la notacin


apropiada, tambin es la expresin genrica del mtodo de Newton.

Considrese a x i+1 , xi y f (xi ) como expresiones vectoriales, y a f ' ( x i ) como

la matriz jacobiana del sistema de n ecuaciones algebraicas no lineales que integran al


i
vector f ( x ) .

[] []
x
x i+1
1 xi1

[ ]
x i+1 xi2 f 1 ( x i1 , x i2 , , x in )
2
i+1
x = x i+1
i
x = x i+1 f 2 ( x i1 , x i2 , , x in )
3 3
f ( i)= f 3 ( x i1 , x i2 , , x in )
i+1
xn xin
f n ( x 1 , x i2 , , x in )
i

(1.9)

65
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

[ ]
f1 f1 f 1 f1
i i i

x 1 x 2 x 3 x in
f2 f2 f 2 f2

xi1 xi2 xi3 x in
'
f ( i)= f f3 f3 f 3
3
i

xi1 xi2 x 3 x in

fn fn fn f n
i i i

x 1 x 2 x 3 x in

Tomando en cuenta las expresiones de 1.9 con las consideraciones propias del algebra de
matrices, la Ecuacin 1.8 se transforma en el mtodo de Newton.

1
x i+1=x if ' ( x i ) f (x i ) (1.10)

Con frecuencia el mtodo de Newton es llamado mtodo de convergencia cuadrtica debido


a que en cada iteracin se produce un acercamiento a la solucin buscada de un orden de
magnitud, algunos detalles del anlisis matemtico de convergencia para ste y otros
mtodos iterativos son tratados en numerosas publicaciones.

La principal desventaja del mtodo de Newton estriba en su gran sensibilidad a la


aproximacin inicial empleada, de no encontrarse suficientemente cerca de la solucin, el
mtodo diverge (ver Figura 1.5), adems, el mtodo solo puede ser usado en el clculo de
uno de los vectores solucin del problema, excluyendo el resto de las soluciones cuando
stas existen. Cabe mencionar que el mtodo de Newton comparte las ventajas y
desventajas del mtodo de Newton-Raphson.

66
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Obsrvese como la presencia de puntos de inflexin o mnimos locales en la grfica de la


funcin a resolver causa dificultades que provocan divergencia en el mtodo de Newton-
Raphson, para evitar que situaciones como stas se presenten es necesario utilizar
aproximaciones iniciales suficientemente cercanas a la solucin buscada.

2.- OBJETIVO

El alumno empleara funciones para facilitar la ejecucin de subprocesos del programa.

El alumno fortalecer su conocimiento sobre el uso de impresiones parciales como


herramienta de estudio para construir cdigos y aprender lenguajes de programacin.

3.- MATERIAL

Computadora

DEV C++

Diagrama de flujo del mtodo de Newton.

Pseudo-cdigo del mtodo de Newton.

4.- METODOLOGA

67
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

1.- Modifique su cdigo de relajacin no lineal para que construya la matriz Jacobiana
completa, no solo su diagonal principal.

2.- Inserte lneas apropiadas de impresin y pausa para verificar que el clculo de la matriz
Jacobiana es correcto. Emplee el siguiente sistema bench mack. Despus de que imprima la
matriz Jacobiana aborte su programa (recuerde que en este punto no ha insertado lneas
apropiadas para manejar la Jacobiana completa).
3 2
f 1 =2 x 1 +2 x1 x 222 x 1 + x 2+13

2 3
f 2=x1 +2 x 1 x 2+ 2 x 214 x 2 +9

Complete la siguiente tabla:

Aprox. inicial J [1,1] J [1,2] J [2,1] J [2,2]

x 1=1, x 2=1

x 1=0, x 2=0

x 1=1, x 2=1

3.- Modifique la inversin de la Jacobiana. Incluya su cdigo de Factorizacin LU como


una funcin. Complete la siguiente tabla antes de empezar a codificar:

Variable Entrada Salida Interna Variable Entrada Salida Interna

Variable Entrada Salida Interna Variable Entrada Salida Interna

68
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Nota: Las variables que ha identificado como variables den entrada deben estar presentes
en los argumentos de la Funcin.

4.- Elimine las lneas de impresin de la Jacobiana. Coloque las mismas lneas para
imprimir ahora la matriz invertida. Utilice la funcin MINVERSA() de Excel para
comprobar que su cdigo calcula correctamente la inversa. Emplee los mismos ejemplos
que utilizo para validar su funcin Jacobiana:

Aprox. inicial 1
J [1,1]
1
J [1,2]
1
J [2,1]
1
J [2,2]

x 1=1, x 2=1

x 1=0, x 2=0

x 1=1, x 2=1

5.- Elimine las impresiones parciales.

5.- RESULTADOS Y OBSERVACIONES

1.- Ejecute el cdigo por completo y resuelva los mismos ejemplos usados en relajacin no
lineal. Qu ha cambiado?.

f 1 =50000 ( 100x 1 ) +1000 x 21000 ( 50000x 4 )

f 2=500 x 3 ( 250x 1 ) 1000 x 2


Sistema 1

f 3 =300 x3 ( x 1x 5 )1000 ( 50000x 4 )

69
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

f 4=x 4 ( x 1x 5 ) +1000 ( 50000x 4 )1000 ( x 4x 6 )

f 5 =x 6 ( x 5125 ) +1000 ( x 4x 6 )1000 ( x 610000 )

f 6=200 x3 ( x 5125 ) 1000 ( x 4x 6 )

Soluciones
Vector x1 x2 x3 x4 x5 x6

1 218.534560 17888.5878 1137.030870 38038.14021 183.467029 24742.37673


2 -2051.3171 -73749.83989 -64.09359120 16183.98306 -292.63808 10830.39817
3 -1232.7877 -34398.42925 -46.39696993 17759.04191 1083.52429 26653.56651

2 2
f 1 =x1 + x 217 x 1 x 2123
Sistema 2
3
f 2=8 x1 (x 25) 8 cos ( x 1 ) x3

f 3 =x 1 x 2+ x 1 x3 x33 17

Tabla 3.6 Vectores solucin conocidos para el Ejemplo 2


Vector x1 x2 x3

1 314.582007948579 18.5461410730246 23.6713712459458


2 -2.29675231582902 2.81252915037809 -2.5961025592401

f 1 =x21 2 x 2 +3 x3 x 4x 590

2 3
f 2=x1 2 x 1 x 2 + x 3x 4 1.5 x 5 +2 x6 +10
Sistema 3

f 3 =2 x 14 x 2+ x23 x 4 x 5x 6

f 4=x 1 + x 2x 3+ x 4 + x25 4 x 618

70
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

2 2 3
f 5 =x 1x 2+ x 3x 4 x 538

f 6=x 1+ x 2 + x 3 x 4 x 5+ x 6 20

Soluciones
Vector x1 x2 x3 x4 x5 x6

1 -13.0590518 10.9327560 -2.5433787 8.1608244 -11.5996891 31.2826739


2 -10.9166156 -9.3503431 -1.7380550 0.8736348 -12.3804313 29.4049529
3 -10.5258791 -9.1644370 0.384171 0.9502723 -12.0863483 27.2389007
4 -10.2931933 -9.1335575 1.6045942 0.6550235 -11.9956828 26.3800210
5 -17.7045176 -149.7700178 28.0585121 -15.5104974 -50.1895353 572.4864795
6 10.7024890 6.0611254 -3.2486233 -0.1320977 5.6536089 8.4608586
7 8.77101158 -6.6458106 2.6315631 5.9806718 7.0070772 9.1433604
8 -10.0427978 -10.8994878 4.1586284 -1.3266404 17.3057086 63.7649989
9 10.1841471 8.0713329 -0.6641836 -3.7032478 3.9806860 3.2655694
10 266.41388 8067.0095 402.08305 -160.2461 -463.5386 55655.293

f 1 =2 x 31 +2 x1 x 222 x 1 + x 22+13
Sistema 4
2 3
f 2=x +2 x 1 x 2+ 2 x 14 x 2 +9
1 2

Soluciones
Vector x1 x2

1 0.793266633374663 -2.81385494179189
2 3.25325380077925 -2.71234920243276
3 0.712508783897050 0.855746665222728
4 0.987519329158964 1.80077280998996
5 -3.36940732541251 2.51437984556486

71
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

6 -3.45360197754889 1.14429972926715
7 -4.25544130182404 -3.84460673662735

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

PRACTICA No. 11

72
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Mtodo de Euler

1.- INTRODUCCIN

En matemtica y computacin, el mtodo de Euler, llamado as en honor a Leonhard Euler,


es un procedimiento de integracin numrica para resolver ecuaciones diferenciales
ordinarias (EDO) a partir de un valor inicial dado. El mtodo de Euler es el ms simple de
los mtodos numricos para resolver un problema de valor inicial, y el ms simple de
los Mtodos de Runge-Kutta.

El mtodo de Euler es un mtodo de primer orden, lo que significa que el error local es
proporcional al cuadrado del tamao del paso, y el error global es proporcional al tamao
del paso. El mtodo de Euler regularmente sirve como base para construir mtodos ms
complejos.

Para empezar, se determina la malla {t0, t1, ... , tN} de paso h, donde t0 = a y tN = b. En estos
puntos es donde se va a obtener la aproximacin de la solucin.

Para determinar la frmula del mtodo, se parte de un desarrollo de Taylor de la funcin


solucin y(t), alrededor de un punto de la malla, ti, suponiendo que la funcin y(t) posee
derivadas primera y segunda continuas en (a, b):

Evaluando esta expresin en t = ti+1, para cualquier i, se tiene:

Pero como ti+1- ti = h, resulta:

73
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Como y(t) satisface la ecuacin diferencial, en particular es y'(t i) = f(ti, yi), entonces
reemplazando en la ecuacin anterior resulta:

Si se elimina de la ecuacin anterior el trmino del error, se puede escribir:

Resultando as la frmula del mtodo de Euler para aproximar la solucin en un punto de la


malla, teniendo una aproximacin en el punto inmediato anterior. Como la condicin en el
punto a del problema de valor inicial da el valor inicial y(t 0)= a, se tiene entonces la
solucin aproximada en todos los puntos de la malla. Si se llaman y i = y(ti), se tiene
entonces la frmula (algoritmo) de Euler dada en la frmula:

2.- OBJETIVO

El alumno empleara funciones para facilitar la ejecucin de subprocesos del programa.

El alumno manejara asignacin de memoria dinmica para arreglos 1-D.

3.- MATERIAL

Computadora

DEV C++

Diagrama de flujo del mtodo de Euler

Pseudo-cdigo del mtodo de Euler

4.- METODOLOGA

74
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

1.- Codifique el mtodo de Euler en C

2.- Optimice y corrija el siguiente cdigo:

1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<math.h>
4 #include <conio.h>
5 double EDO(double y[],double dydx[]); // prototipo
6 int main(){
7 double x,*y,x0,xf,*y0,*dydx,h,Hint;
8 int i,N, Neq,iter,Bandera;
9 FILE *Archivo;
10 Archivo = fopen ("Resultados.txt", "w");
11 Neq=100;
12 y=(double *)malloc(Neq*sizeof(double));
13 y0=(double *)malloc(Neq*sizeof(double));
14 dydx=(double *)malloc(Neq*sizeof(double));
15 iter=0;
16 Bandera=0;
17 x0=0.0;
18 xf=100.0;
19 for(i=0;i<Neq;i++){
20 y0[i]=20.0;
21 }
22 N= 1000;
23 h=(xf-x0)/(1.0*(N));
24 x=x0;
25 for(i=0;i<Neq;i++){
26 y[i]=y0[i];
27 }
28 while(x<=xf){
29 EDO(y,dydx);
30 for(i=0;i<Neq;i++){
31 y[i]=y[i]+h*dydx[i];
32 }
33 if(Bandera==200){
34 printf("%10.5f \n, x);
35 for(i=0;i<Neq;i++){
36 printf("%10.5f, y[i]);
37 fprintf(Archivo,"%10.5f", y[i]);
38 printf("\n");
39 fprintf(Archivo,"\n");

75
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

40 }
41 Bandera=0;
42 }
43 x=x+h;
44 iter=iter+1;
45 Bandera++;
46 }
47 return 0;
48 }
49 double EDO(double y[], double dydx[]){
50 int Neq,i;
51 double Hint;
52 Neq=100;
53 Hint=1.0/(99);
54 dydx[0]= 0.0004*((y[1]-2.0*y[0]+20.0)/pow(Hint,2));
55 for(i=1;i<Neq-1;i++){
56 dydx[i]= 0.0004*((y[i+1]-2.0*y[i]+y[i-1])/pow(Hint,2));
57 }
58 dydx[Neq-1]= 0.0004*((100.0-2.0*y[Neq-1]+y[Neq-2])/pow(Hint,2));
59 }
5.- RESULTADOS Y OBSERVACIONES

1.- Ejecute el cdigo con 5 distintos PVIs propuestos por Ud.

6.- CONCLUSIONES

El alumno debe concluir respecto al objetivo planteado en la prctica.

7.- BIBLIOGRAFA

Se indican las fuentes bibliogrficas utilizadas para la elaboracin de la prctica. Utilizar


formato APA.

Apndice A: Simbologa

Smbolo Significado Instruccin en C


type Funcin(){
INICIO FIN Inicio o Final .

76
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

En tiempo real (pantalla


negra)
Entrada de scanf("%type",& X);
datos
%type: f: float
i: int
d:double

Operacin variable

if( condicin lgica){


instrucciones
.
Si No Decisin }
simple Condicin lgica:
i==1000
iter!=Itmax
Smbolo Significado

77
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

switch(x){
case valor1:
instrucciones

break;
case valor2:
instrucciones
Decisin
mltiple break;
(Select case) case valor3:
instrucciones

break;
type Funcin(type Par1, type
Par2,, type ParN){
instrucciones
Subproceso .
}
Nota: Est compuesto de:
Prototipo, llamada y definicin

Tiempo real (Pantalla negra)


printf("%type, ("%type ,
("%type ",x1,x2,..,xn);
Impresin Nota: Cada valor que se desea
imprimir debe tener su tipo
i=0
declarado.

Smbolo Significado
i=N for(i=0;i<N;i++){
Lmite
Accin
78
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

instrucciones

Lmite i=i+ }
superior 1

Ciclo while(condicin lgica){


condicional
instrucciones
Operacin ..
}

Nota: Normalmente se
comienza en cero por que en C
todos los arreglos contienen
elemento cero.

1
Nodo o Elemento propio de los
conexin diagramas.

Apndice B. Rbricas de evaluacin

Lenguaje de programacin

79
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Docente: Dr. Juan Manuel Oliveros Muoz

Rbrica de evaluacin Diagramas de flujo

Nmero Rubro Puntuaci Observaciones


n
1 Simetra de smbolos del -1 punto Por cada objeto
diagrama y completitud de asimtrico o conector
smbolos. sin punta de flecha.
2 Rectitud de lneas y -1 punto Por cada lnea
alineacin de objetos. ligeramente desviada u
objeto desalineado con
respecto al eje central
de otros objetos en el
diagrama.
3 Distribucin simtrica de la -5 puntos Si los objetos no estn
pgina. simtricamente
distribuidos
4 Conexin total y exacta. -1 punto Por cada conector que
no salga o llegue
exactamente al objeto
del que proviene o al
que se dirige, segn sea
el caso
5 Flujo matemtico correcto. -10 puntos Si el flujo de
operaciones es
incorrecto.
6 Fuente. -2 puntos Por cada variacin
injustificada del tipo o
tamao de fuente.
7 Distribucin simtrica de la -2 puntos Por cada objeto que no
fuente dentro de los contenga instrucciones
smbolos. alineadas y uniformes.
8 Conectores discontinuos -2 puntos Por cada discontinuidad
en algn conector.
9 Tiempo y forma -50 puntos Por cada da de retraso
con respecto a la fecha
en que el docente
solicita la tarea
10 Originalidad y autenticidad -50 puntos Si es similar a otro
diagrama entregado en
este u otro grupo.
11 Ha y libertad de criterio para variar el diseo de la simbologa (por
ejemplo los brazos de la estructura de decisin, siempre y cuando se
logre un diagrama simtrico, uniformemente distribuido y

80
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

perfectamente alineado.

Lenguaje de programacin

Docente: Dr. Juan Manuel Oliveros Muoz

Rbrica de evaluacin Cdigos

Nmero Rubro Puntuaci Observaciones


n
1 Cdigo organizado. -10 punto Por una sola sangra o
llave de cerradura que
no se encuentra
debidamente alineada
2 Compilacin sin errores --------------- Ni siquiera se reciben
cdigos que si estos
compilan con errores.
3 Errores de formato (impresin -5 puntos Por cada error.
o lectura)
4 Mtodo solicitado correcto -50 puntos Si el programa tiene
errores al calcular lo
que se ha solicitado
para ste.
5 Tiempo y forma -50 puntos Por cada da de atraso
con respecto a la fecha
indicada de entrega.
10 Originalidad y autenticidad -50 puntos Si es similar a otro
cdigo entregado por
cualquiera de sus
compaeros.

81
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

Apndice C. Problemario

1er Parcial

Problema Tema Fecha de entrega

Clculo de raz cuadrada

Clculo de la solucin para


un polinomio de 3er grado.

Clculo una integral


numrica (Mtodo del
trapecio)

Clculo de una integral


numrica (Simpson 3/8) Algoritmos, Diagramas de
Flujo y Pseudo-cdigos
(Todos individualmente, no
Clculo de ajuste por se revisan).
mnimos cuadrados
(Algebra lineal).

Clculo de media, mediana,

82
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin

Ingeniera en Biotecnologa

moda, cuartiles, deciles y


percentiles

2o Parcial

Problema Tema Fecha de entrega


Clculo de la solucin para
un polinomio de 3er grado.

Clculo de una integral


numrica (Simpson 3/8)

Cdigos (elegir uno por


equipo)

Clculo de media, mediana,


moda, cuartiles, deciles y
percentiles

3er Parcial

Proyecto Final: Variable (Solucin de Ecuaciones Diferenciales Ordinarias de 2


orden)

83

Potrebbero piacerti anche