Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lenguaje de Programacin
Ingeniera en Biotecnologa
Curso
1
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Algoritmos
2
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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
siguiente ecuacin:
B B2 4 AC B+ B24 AC
x= ; x=
2A 2A
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
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.
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).
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).
[ ] [ ]
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
[ ][ ][ ]
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
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
n
c m , p = a j ,ibi , k
i=1
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
1.- Qu es un algoritmo?____________________________________________________
9
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
_______________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
5.- Cul de las afirmaciones siguientes no es cierta acerca de las flechas en diagramas de
flujo?
ii. Las flechas son usadas para mostrar el orden de las operaciones.
iv. Las flechas pueden ser usadas para representar una entrada.
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
A nxnxn xn an , n ,n , n
, el n-simo elemento de este arreglo sera: y en lenguaje C: A[n]
[n][n].
12
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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
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
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
18
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Prctica No. 1
Conversin de Temperaturas
1. INTRODUCCIN
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
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
TF = (9/5)TC + 32C
Escala Rankine
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++
METODOLOGA
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:
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
6. BIBLIOGRAFA
22
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
PRACTICA No. 2
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
3. MATERIALES
Material
Computadora
DEV C++
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
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
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.
7. CONCLUSIONES
8. BIBLIOGRAFA
27
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
PRACTICA No. 3
Multiplicacin de matrices
1. INTRODUCCIN
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:
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.
3.- MATERIAL
Computadora
DEV C++
4.- METODOLOGA
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 }
1.- Agregue las lneas necesarias para imprimir el resultado en un archivo de texto
MatrizC.txt y efecte lo siguiente:
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
7.- BIBLIOGRAFA
PRACTICA No. 5
33
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
1.- INTRODUCCIN
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.
2.- OBJETIVO
3.- MATERIAL
Computadora
DEV C++
34
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
4.- METODOLOGA
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
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
7.- BIBLIOGRAFA
38
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
39
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
PRACTICA No. 6
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
AX =I
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
40
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
3.- MATERIAL
Computadora
DEV C++
4.- METODOLOGA
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:
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
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
6.- Elimine todas las lneas que imprimen resultados parciales en el cdigo, necesitara el
mtodo ms adelante.
6.- CONCLUSIONES
7.- BIBLIOGRAFA
42
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
PRACTICA No. 7
Mtodo de Factorizacin LU
1.- INTRODUCCIN
Suponga que la matriz A es una matriz m n se puede escribir como el producto de dos
matrices:
A=LU
Ax=b
escribimos
Ax=( LU ) x=L(Ux)
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
3.- MATERIAL
Computadora
DEV C++
4.- METODOLOGA
44
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Operaciones de Gauss-Jordan:
Operaciones de LU:
6.- CONCLUSIONES
7.- BIBLIOGRAFA
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
46
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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
0f ( x i) ' i
=f ( x )
x i+1 xi
Rearreglando
i+1 f ( xi )
i
x =x ' i
f (x )
47
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
2.- OBJETIVO
3.- MATERIAL
Computadora
DEV C++
48
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
4.- METODOLOGA
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 }
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
7.- BIBLIOGRAFA
50
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
PRACTICA No. 9
1.- INTRODUCCIN
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 )
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
52
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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
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)
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
[] []
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)
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.
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
1
x i+1=x iDf ' ( x i ) f ( x i) (1.13)
2.- OBJETIVO
3.- MATERIAL
56
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Computadora
DEV C++
4.- METODOLOGA
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
2.- Cules son los arreglos manejados en el cdigo?, son de asignacin esttica o
dinmica?.
58
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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)
Soluciones
Vector x1 x2 x3 x4 x5 x6
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
2
f 1 =x1 2 x 2 +3 x3 x 4x 590
f 3 =2 x 14 x 2+ x23 x 4 x 5x 6
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
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
7.- BIBLIOGRAFA
61
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
PRACTICA No. 10
Mtodo de Newton
1.- INTRODUCCIN
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
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
63
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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
64
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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)
[] []
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)
66
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
2.- OBJETIVO
3.- MATERIAL
Computadora
DEV C++
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
x 1=1, x 2=1
x 1=0, x 2=0
x 1=1, x 2=1
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
1.- Ejecute el cdigo por completo y resuelva los mismos ejemplos usados en relajacin no
lineal. Qu ha cambiado?.
69
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Soluciones
Vector x1 x2 x3 x4 x5 x6
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
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
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
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
7.- BIBLIOGRAFA
PRACTICA No. 11
72
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Mtodo de Euler
1.- INTRODUCCIN
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.
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:
2.- OBJETIVO
3.- MATERIAL
Computadora
DEV C++
4.- METODOLOGA
74
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
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
6.- CONCLUSIONES
7.- BIBLIOGRAFA
Apndice A: Simbologa
76
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Operacin variable
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
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
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.
Lenguaje de programacin
79
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
80
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
perfectamente alineado.
Lenguaje de programacin
81
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
Apndice C. Problemario
1er Parcial
82
Manual de Prcticas de Laboratorio de
Lenguaje de Programacin
Ingeniera en Biotecnologa
2o Parcial
3er Parcial
83