Está en la página 1de 24

Métodos Numéricos

1
A
ALLG
GOORRIIT
TMMO
OSS Y
YPPRRO
OGGRRA
AMMA
ASS

En este capitulo veremos algunas definiciones cortas de los elementos más


importantes en el desarrollo de un programa, también veremos el uso de los
diagramas de flujo como herramienta para representar los algoritmos

¿Qué es la programación?

Podemos definir la programación como el proceso mediante el cual un problema ó


una situación puede ser automatizada para ser resuelta de manera rápida por medio
de una computadora.

Algoritmos

Los algoritmos de programación, son un conjunto ordenado y finito de pasos que


conducen a la solución de un problema.

El uso de los algoritmos es muy importante y lo ventajoso de estos es que pueden


ser ajustados a cualquier lenguaje de programación para luego ser convertidos en
programas. Un algoritmo comienza con la palabra Inicio y termina con la palabra
Fin, además contiene palabras como leer, escribir, hacer, etc. Es por eso que su
comprensión se hace sencilla.

Variable

Una variable es un espacio en memoria al que se le asigna un valor que será


utilizado y modificado a lo largo del programa. Los valores que son asignados
pueden ser de diferentes tipos:

TIPO DESCRIPCION
Entero (Integer) Valor numérico entero
Real (Single, Double) Valor numérico con punto decimal
Lógico (Boolean) Contiene falso o verdadero (0 ó 1)
Carácter Contiene un carácter alfanumérico
Cadena (String) Contiene un conjunto de caracteres

Roberto Vargas Poquechoque 1


Algoritmos y Programas

Expresiones

Las expresiones son conjunto de variables, constantes, símbolos de operaciones,


paréntesis, y funciones especiales que se utilizan para hacer cálculos matemáticos o
lógicos. Ejm. N*3/(5+cos(x)/2).

Reglas de prioridad

Aquellas expresiones que tienen dos o más operandos requieren una regla
matemática que permita determinar el orden de las operaciones, se denominan
reglas de prioridad y son:

1. Las operaciones encerradas entre paréntesis se evalúan primero, si


existen diferentes paréntesis, las operaciones más internas se operan
primero.
2. Las operaciones aritméticas dentro de una expresión suelen seguir el
siguiente orden:
a. Exponenciales ^
b. Operadores * /
c. Operadores div mod
d. Operadores + -

Análisis del problema

El propósito del análisis de un problema es ayudar al programador para llevar a una


cierta comprensión de la naturaleza del problema. El problema debe estar bien
definido si se desea llegar a una solución satisfactoria.

Para poder definir con precisión el problema se requiere que las especificaciones de
entrada y salida sean escritas con detalle.

1.1 DISEÑO DE ALGORITMOS.-

Para plantear la solución al problema previamente estudiado se utiliza un algoritmo


que sea independiente de cualquier lenguaje de programación.

2 Roberto Vargas Poquechoque


Métodos Numéricos

Los métodos más utilizados son:

§ Diagramas de Flujo
§ Diagrama de Nassi-Sheiderman (N-S)
§ Pseudo código

Nosotros nos abocaremos al uso de los diagramas de flujo. Esta es una técnica de
representación mediante el uso de símbolos estándares que permiten la
identificación de la entrada, proceso y salida, estos son:

SIMBOLO DESCRIPCION

TERMINAL. Representa el comienzo y el final de


un programa

ENTRADA, SALIDA

PROCESO

DECISION

CONECTOR de flujo en la misma página

INDICADOR de flujo

CONECTOR de página

PREPARACION

LLAMADA A SUBRUTINA

Roberto Vargas Poquechoque 3


Algoritmos y Programas

SALIDA A PANTALLA

SALIDA A IMPRESORA

ENTRADA MANUAL

COMENTARIO

1.2 ELEMENTOS BÁSICOS DE UN PROGRAMA.-

Bucle.

Es un segmento del algoritmo cuyas instrucciones o acciones se repiten varias


veces mientras se cumpla una determinada condición. Se debe establecer un
mecanismo para determinar las tares repetitivas, este mecanismo es una condición
que puede ser verdadera o falsa y que es comprobada una vez en cada iteración del
bucle.

Bucles anidados.

En un algoritmo (Programa) pueden existir varios bucles, se debe tener cuidado de


que los bucles sean anidados ó independientes, los bucles cruzados no funcionan.
Los bucles son anidados cuando están dispuestos de manera que unos estén dentro
de otros.

4 Roberto Vargas Poquechoque


Métodos Numéricos

Inicio Inicio
Inicio
A
A Inicio
Inicio
B
B
Inicio
C

Independiente Anidado Cruzado


(correcto) (correcto) (incorrecto)

Contador.
cont = cont +1 cont = cont +2

Sumador.
Suma = 0
Suma = suma + dato

Productor.
Prod = 1
Prod = prod * dato

1.3 ESTRUCTURAS DE CONTROL.-

Las estructuras de control permiten mayor control en el flujo de un algoritmo. Se


presentad dos tipos:

Ø Estructuras Selectivas
Ø Estructuras Repetitivas

Estructuras Selectivas.

Dependiendo del resultado de una condición se pueden realizar diferentes


operaciones. Las estructuras selectivas o de decisión son las siguientes:

Roberto Vargas Poquechoque 5


Algoritmos y Programas

ü Si – Entonces (If - Then)


ü Si – Entonces - Caso contrario (If – Then – Else)
ü Caso (Case)

Si – Entonces

Se utiliza la estructura Si – Entonces para ejecutar una o varias acciones basadas en


una condición.

F
Condición

V
Acción 1

Si – Entonces – Caso contrario

Esta estructura es utilizada cuando se requiere realizar una o mas acciones en caso
de que la condición se cumpla y acciones diferentes en caso de que la condición no
se cumpla.

F
Condición

V Acción 2
Acción 1

6 Roberto Vargas Poquechoque


Métodos Numéricos

Caso

Esta estructura permite seleccionar un bloque de acciones (o una sola acción) de


entre varios bloques. Se comprueba el valor de una variable única con las
alternativas de cada caso y si existe la coincidencia se ejecuta el bloque de acciones
de ese caso.

Variable
1 N

2 3

Acción 1 Acción N
Acción 2 Acción 3

Estructuras Repetitivas.

Las estructuras de repetición (También llamados 1bucles) permiten ejecutar una o


más acciones repetidamente, son las siguientes:

ü Mientras (While)
ü Hacer - Mientras (Do – While)
ü Para (For – Next)

Mientras

Utilice esta estructura para ejecutar una acción o bloque de acciones un número
indefinido de veces mientras la condición sea verdadera (ó hasta que la condición
sea falsa)

Hacer – Mientras

Es una variante de la anterior con la diferencia de que la acción o bloque de


acciones son ejecutadas una vez antes de que la condición sea verificada. También
1
Acerca de los bucles se hablo en el apartado: Elementos básicos de un programa

Roberto Vargas Poquechoque 7


Algoritmos y Programas

existe la estructura Hacer – Hasta que, su diferencia radica en que el bloque de


acciones se realiza un número indefinido de veces hasta que la condición sea
verdadera (ó mientras la condición sea falsa).

Para

Este bucle es utilizado cuando se conoce el número de veces que se ejecutará el


bloque de acciones, El bucle Para utiliza una variable llamada contador que
incrementa o reduce su valor en cada repetición del bucle.

1.4 ARREGLOS O MATRICES.-

Los arreglos (arrays) son una colección de elementos del mismo tipo almacenados
ordenadamente en una variable contenedora. Son muy útiles para utilizar variables
de tipo vectorial, matricial ó tensorial en general. Los arreglos ó matrices
comienzan de 0 hasta N-1. por ejemplo en una matriz de 4 elementos:

INDICE ELEMENTO CONTENIDO


0 Edad(0) 25
1 Edad(1) 23
2 Edad(2) 30
3 Edad(3) 18

8 Roberto Vargas Poquechoque


Métodos Numéricos

EJEMPLO 1

Realizar un algoritmo para calcular el factorial de un número cualquiera ingresado.

Solución

F=1*2*3*…*N

N
F =ΠI
I =1

Se puede plantear la solución con la utilización de un


ciclo para el valor de “F” , multiplicando los valores de
una variable “I” desde 1 hasta N

Iß1
FßF*I (ciclo para todo I < N)

Prueba de escritorio

1º Se ingresa el valor N = 5
2º Se inicializan las variables I = 1 y F = 1
3º Se realiza el bloque de instrucciones mientras el
valor de I sea menor al valor de N.

I<N IßI+1 FßF*I


1 < 5 Si Iß1+1=2 Fß1*2=2
2 < 5 Si Iß2+1=3 Fß2*3=6
3 < 5 Si Iß3+1=4 F ß 6 * 4 = 24
4 < 5 Si Iß4+1=5 F ß 24*5 = 120
D.F.D 1.1
5 < 5 No - -

4º Imprimir o mostrar el resultado final F = 120 (valor real del factorial de 5).

F = 120 Solución

Roberto Vargas Poquechoque 9


Algoritmos y Programas

EJEMPLO 2

Realizar un algoritmo para evaluar el valor de un número cualquiera elevado a otro


número cualquiera (NK).

NK = N * N * N * N * … * N
1 2 3 4 … k

Solución

Llamando P = NK, podremos utilizar un ciclo igual al


del ejemplo 1 para poder resolver la serie de productos
desde 1 hasta K. Teniendo cuidado de iniciar el primer
producto en N (ver diagrama de flujo).

P←N
I ←1
I ← I +1 
mientras I sea menor a K
P ← P* N

Prueba de escritorio

N=2
K=4

I<K I P
1 (Iß1) 2 (PßN)
Si 2 2*2=4
Si 3 4*2=8
SI 4 8 * 2 = 16

D.F.D 1.2
P = 16 Solución

10 Roberto Vargas Poquechoque


Métodos Numéricos

EJEMPLO 3

Realizar un diagrama de flujo para evaluar el valor aproximado de π, por medio de


la serie de Gregory.
 1 1 1 1 
π = 41 − + − + − ... + ... 
 3 5 7 9 

Solución

Debemos hallar la solución de una serie de números


impares, en el que el primer término es 1, el segundo es
3, etc. Podemos plantear por tanto el valor en función de
su posición “I” de la siguiente forma: 2 * I - 1, De esta
manera para el cuarto valor de la serie ( I = 4 ), se tiene 2
* 4 - 1 = 9.
Para controlar el signo intercalado usaremos una variable
auxiliar “T” que en cada paso será multiplicada por -1
para obtener el intercalado correspondiente.

Valores iniciales:
T = -1 S=1
T 
S=S+ 
2 I − 1 I = 2, 3, 4,... N
T = T * ( −1) 
Prueba de escritorio

N=5

I<N I S T
1 1 -1
SI 2 1-1/3 1
SI 3 1-1/3+1/5 -1
SI 4 1-1/3+1/5-1/7 1
SI 5 1-1/3+1/5-1/7+1/9 -1
NO - - -

PI = 4 * (1 – 1/3 + 1/5 – 1/7 + 1/9) Solución

Roberto Vargas Poquechoque 11


Algoritmos y Programas

EJEMPLO 4

Construir un diagrama de flujo que permita determinar si un número ingresado es


Par o Impar.

Solución

Para realizar este tipo de operaciones, utilizaremos el operador MOD, este operador
se encuentra en la mayoría de los lenguajes de programación modernos. El
operador MOD retorna el valor del residuo de una división.

por ejemplo:

5 MOD 2 = 1, porque el residuo de la división 5 / 2 es 1


12 MOD 3 = 0
27 MOD 4 = 3. se puede verificar calculando: 4 *6 + 3 = 24 + 3 = 27

Finalmente podemos afirmar que un número es par cuando el residuo de su división


por 2, es 0, es decir, que si: (X MOD 2) = 0 ⇒ X es par.

Prueba de escritorio

X = 21

21 2
(1) 10

Por tanto: 21 MOD 2 = 1.


Debido a que la condición: <X MOD 2 = 0> es falsa,
se imprimirá el texto “ES IMPAR”

12 Roberto Vargas Poquechoque


Métodos Numéricos

EJEMPLO 5

Realizar un diagrama de flujo que determine si un número es primo

Solución

Un número es primo si es divisible solamente entre sí mismo y 1, por tanto bastará


con comprobar que el valor “N” no sea divisible entre un número que se encuentre
dentro del rango 2 : N-1. Usaremos una variable bandera
“Flag” que tendrá como valor inicial True2, también
usaremos un bucle que permita hacer una revisión del la
divisibilidad del número “N” entre el índice del bucle.

Si N MOD I = 0 ⇒ N no es primo, (I = 2, 3, … ,N - 1)

Prueba de escritorio
N=5
I N MOD I = 0 flag I<N–1
1 TRUE
2 5 MOD 2 = 1 No continúa TRUE Si
3 5 MOD 3 = 2 No continúa TRUE Si
4 5 MOD 4 = 1 No continúa TRUE Si

flag = TRUE ⇒ “ES PRIMO”

N=9
I N MOD I = 0 flag I<N–1
1 TRUE
2 9 MOD 2 = 1 No continúa TRUE Si
3 9 MOD 3 = 0 Si Cambia FALSE Si
4 9 MOD 4 = 1 No Continúa FALSE Si
5 9 MOD 5 = 4 No Continúa FALSE Si
6 9 MOD 6 = 3 No Continúa FALSE Si
7 9 MOD 7 = 2 No Continúa FALSE Si
8 9 MOD 8 = 1 No Continúa FALSE No

flag = FALSE ⇒ “NO ES PRIMO”

2
La variable “flag” es de tipo boolean , es decir que adopta los valores True (1) y false (0)

Roberto Vargas Poquechoque 13


Algoritmos y Programas

Nota.- Como podemos notar, en el ejemplo para N = 9, la condición: N MOD I = 0 es


verdadera solamente cuando I = 3, esto obliga a cambiar el valor de flag a FALSE,
luego no existe otra instrucción que haga que el valor de flag vuelva a cambiar a
TRUE sin importar que la condición: N MOD I = 0 sea falsa.

EJEMPLO 6

Imprimir una serie de “N” números primos y hallara la suma de la misma.

Solución

S = 1 + 2 + 3 + 5 + 7 + 11 + 13 + …
I 1 2 3 4 5 6 7 …. N

Usaremos un bucle para el valor “X” de manera que X = 1, 2, 3, 4, 5, … etc. Cada


uno de estos valores será verificado de igual manera que en el ejemplo anterior para
determinar si el número es primo.

Si el valor de “X” es primo incrementaremos un contador “c” y acumularemos la


suma “S”. La condición para detener el bucle será cuando el contador “c” llegue
hasta “N”.

El algoritmo para resolver este problema se describe a continuación, también el


diagrama de flujo completo (D.F.D 1.6)

Serie de números primos

1º Leer el valor de N
2º Asignar valores iniciales
3º Si c < N entonces continuar, si no ir al paso 10º
4º Incrementar X = X + 1
5º si X es primo entonces continuar, si no ir al paso 9ª
6º imprimir valor X
7º acumular suma S = S + X
8º incrementar c = c + 1
9º volver al paso 3ª
10º Imprimir valor S
11º Terminar

14 Roberto Vargas Poquechoque


Métodos Numéricos

Roberto Vargas Poquechoque 15


Algoritmos y Programas

EJEMPLO 7

Imprimir la serie de Fibonacci para N términos (N > 2) y hallar la suma de la


misma.

Solución

S=0+1+1+2+3+5+8+…
I 1 2 3 4 5 6 7 … N

Los primeros valores de la serie son 0 y 1, a partir de estos se obtienen los


siguientes, cada término siguiente será igual a la suma de los dos valores anteriores,
es decir:
0+1=1
1+1=2
1+2=3
2+3=5

Primero definiremos los valores iniciales a = 0 y b = 1. Luego el bucle hallara los


valores siguientes a partir de “a” y de “b”

c ← a + b

a ←b 
b←c 

También en este caso será necesario utilizar un contador “cont” para poder
controlar la cantidad de términos de la serie (cont < N)

Serie de Fibonacci
1º Leer el valor de N
2º a = 0; b = 1; cont = 2; S = 0 + 1
3º Imprimir serie: 0, 1
4º Si cont < N entonces continuar, si no ir al paso 10º
5º c = a + b; a = b; b = c
6º cont = cont + 1
7º S=S+c
8º Imprimir c
9º volver al paso 4ª
10º Imprimir valor S
11º Terminar

16 Roberto Vargas Poquechoque


Métodos Numéricos

Prueba de escritorio

N=7

cont < N c a b cont S


0 1 2 0+1=1
2 < 7 Si 0+1=1 1 1 3 1+1=2
3 < 7 Si 1+1=2 1 2 4 2+2=4
4 < 7 Si 1+2=3 2 3 5 4+3=7
5 < 7 Si 2+3=5 3 5 6 7 + 5 = 12
6 < 7 Si 3+5=8 5 8 7 12+8 = 20
7 < 7 No - - - - -

El resultado de la serie queda de la siguiente manera:

0112358

Y el valor de la suma será:

S = 20 Solución

Roberto Vargas Poquechoque 17


Algoritmos y Programas

EJEMPLO 8

Hallar el ángulo formado por dos vectores de dimensión N

Solución
 A1   B1 
A  B 
 2  2
Sean los vectores: A =  A3  y B =  B3 
   
:  : 
 AN   BN 

El ángulo entre A y B está dada por la siguiente formula:

Ao B
cos(θ ) =
AB

Usaremos el siguiente convenio de variables:

P = A o B = A1 * B1 + A2 * B2 + A3 * B3 + ... + AN * BN
MA = A = A12 + A22 + A32 + ... + AN2
MB = B = B12 + B22 + B32 + ... + BN2

Será suficiente utilizar un bucle para calcular los valores de “P”, “MA” y “MB” para el subíndice
“I” desde 1 hasta N.

Angulo entre vectores


1º Leer el valor de N
2º Leer elementos de cada vector
3º Inicializar P = 0, MA = 0 y MB = 0
4º Para I = 1 hasta N hacer:
5º P = P + A(I) * B(I)
6º MA = MA + A(I) * A(I)
7º MB = MB + B(I) * B(I)
8º Siguiente I
 P 
9º Calcular θ = ar cos 
 MA * MB 
10º Imprimir valor θ
11º Terminar

18 Roberto Vargas Poquechoque


Métodos Numéricos

Prueba de escritorio para N = 3 tenemos los vectores A(-1, 2, 0) y B(0, 1, -1)

I A(I) B(I) P MA MB
0 0 0
1 -1 0 0 1 0
2 2 1 2 5 1
3 0 -1 2 5 2

 2 
θ = ar cos  = 50.77 = 50º 46’ Solución
 5* 2 

Roberto Vargas Poquechoque 19


Algoritmos y Programas

EJEMPLO 9

Realizar un diagrama de flujo que permita ordenar una lista de números reales.

Solución

Suponiendo que se desea ordenar una lista de 5 números (N = 5).

3 5 -1 0 -2

Primero compararemos los dos valores iniciales 3 y 5 y los ordenamos. Luego


comparamos los valores 5 y -1 y los ordenamos, continuamos con el procedimiento
hasta terminar con la lista:

3 5 -1 0 -2
3 5 -1 0 -2
3 -1 5 0 -2
3 -1 0 5 -2
3 -1 0 -2 5

Con esto conseguimos arrastrar el valor mayor de la lista hasta el último (en el
ejemplo es el número 5). So repetimos los pasos anteriores, ordenaremos el
siguiente valor mayor arrastrándolo hasta el fondo.

3 -1 0 -2 5
-1 3 0 -2 5
-1 0 3 -2 5
-1 0 -2 3 5

En este caso llevamos el número 3 hasta el final, nótese que la última verificación
no es necesaria debido a que se llevó anteriormente el número 5 y lógicamente éste
es mayor a 3. Ahora sólo queda ordenar los valores restantes:

-1 0 -2 3 5
-1 0 -2 3 5
-1 -2 0 3 5

Le siguiente valor a ordenarse es el 0.

20 Roberto Vargas Poquechoque


Métodos Numéricos

-1 -2 0 3 5
-2 -1 0 3 5

Finalmente en 4 pasos la lista queda ordenada, en un caso general se requerirán de


N-1 pasos pata ordenar una lista de N valores. Sin embargo es evidente que en cada
paso son requeridas menos comparaciones, por ejemplo en el paso 4º sólo fue
necesario una comparación y en el 2º se requirieron 3 comparaciones, en general
podemos decir que en el paso Iº se requieren N-I comparaciones:

1º) 5 – 1 = 4 comparaciones
2º) 5 – 2 = 3 comparaciones
3º) 5 – 3 = 2 comparaciones
4º) 5 – 1 = 1 comparación

INICIO

I=1 N-1
Leer N

J=1 N-I
I=1 N

Leer X(I) X(J) < X(J+1) SI

Temp X(J)
NO X(J) X(J+1)
X(J+1) Temp

D.F.D 1.9

I=1 N

X(I)

FIN

Roberto Vargas Poquechoque 21


Algoritmos y Programas

EJEMPLO 10

Diseñar un diagrama de flujo para calcular el producto de una matriz de MxN por
una matriz de NxP

Solución

 a11 a12 a13 ... a1N   b11 b12 b13 ... b1P   c11 c12 c13 ... c1P 
a a 22 a 23 
... a 2 N  b b22 b23 
... b2 P  c c 22 c 23 ... c 2 P 
 21  21  21
 a31 a32 a33 ... a3 N  *  b31 b32 b33 ... b3P  =  c31 c32 c33 ... c3 P 
     
 : : : : :   : : : : :   : : : : : 
 a M 1 aM 2 aM 3 ... a MN  MxN bN 1 bN 2 bN 3 ... bNP  NxP c M 1 cM 2 cM 3 ... c MP  MxP

Así tendremos:

c11 = a11 * b11 + a12 * b21 + a13 * b31 + ... + a1N * bN 1


c12 = a11 * b12 + a12 * b22 + a13 * b32 + ... + a1N * bN 2
c13 = a11 * b13 + a12 * b23 + a13 * b33 + ... + a1N * bN 3
:
c1 j = a11 * b1 j + a12 * b2 j + a13 * b3 j + ... + a1N * bNj
:
c1P = a11 * b1P + a12 * b2 P + a13 * b3P + ... + a1N * bNP

Expresando en forma general tendremos:

N
c1 j = ∑ a1k * bkj para todo j = 1 hasta P
k =1

y análogamente:

N
c 2 j = ∑ a 2 k * bkj para todo j = 1 hasta P
k =1

22 Roberto Vargas Poquechoque


Métodos Numéricos

finalmente podemos deducir la siguiente formula:

N
cij = ∑ aik * bkj
k =1

Para todo i = 1 hasta M


Para todo j = 1 hasta P

INICIO

Leer M, N, P

I=1 M
I=1 M

J=1 P
J=1 N

C(I,J) 0
Leer A(I, J)
Leemos los elementos
de la matriz A de M x N K=1 N

C(I,J) C(I,J) + A(I,K) * B(K,J)

I=1 N

J=1 P C (I, J)

Leer B(I, J)
Leemos los elementos
de la matriz B de N x P

FIN

D.F.D 1.10

Roberto Vargas Poquechoque 23


Algoritmos y Programas

PROBLEMAS PROPUESTOS

1 3 5 7
1) Calcular la suma de la siguiente serie: S = + + + + ... para n términos.
2 8 32 128
2) Imprimir y hallar la suma de N números múltiplos de 3.
3) Realizar un diagrama de flujo que obtenga las soluciones reales y complejas de
la ecuación de 2º grado.
4) Diseñar un algoritmo que halle la suma y la media de N números introducidos.
5) Realizar un diagrama de flujo que lea un número entero cualquiera y lo
invierta, por ejemplo al leer 12586 debe escribir el valor de 68521.
6) Realizar un diagrama de flujo que calcule una tabla de valores de altura Vs
tiempo de un objeto lanzado hacia arriba con velocidad inicial y altura inicial como
datos.
7) Realizar un diagrama de flujo para ordenar una lista de números usando el
método de la selección.
8) Diseñar un algoritmo para obtener la suma de los N primeros números
múltiplos de M.
9) Diseñe un diagrama de flujo para obtener un cuadrado mágico. Un cuadrado
mágico es aquel del cual se obtiene el mismo valor sumando los valores de las filas,
columnas y diagonales (e número de lados debe ser impar).

6 1 8

7 5 3

2 9 4
(Se halla partiendo en el número 1 colocado en la parte media superior, el siguiente
valor se coloca dos casillas abajo y una a la izquierda, si esta casilla estuviese
ocupada entonces el valor es colocado debajo del número actual).

9 20 1 12 23
15 21 7 18 4
16 2 13 24 10
22 8 19 5 11
3 14 25 6 17

24 Roberto Vargas Poquechoque

También podría gustarte