21
Tema 10 Algunos problemas de ingenier´ ıa Este ´ ultimo tema propone diversos problemas com´ unmente encontrados en diversas ´ areas de la ingenier´ ıa. Se han seleccionado por una parte porque permiten poner a prueba los conocimientos que el alumno ha debido adquirir durante el curso. Adem´ as ilustran ideas que el alumno manejar´ a a lo largo de la carrera. En la confecci´ on de los algoritmos se ha supuesto que el operador dispone de medios para realizar operaciones elementales de la L´ ogica y la Aritm´ etica y adem´ as alguna otra como senos y logaritmos que se encuentran en la mayor´ ıa de lenguajes de programaci´ on para computadoras e incluso en calculadoras de bolsillo. Gracias a eso los algoritmos que se proponen como soluci´ on pueden ser f´ acilmente codificados en C, en MATLAB, JAVA o cualquier otro lenguaje de alto nivel. 10.1 Interpolaci´ on con segmentos Suponga que se conocen los valores que una funci´ on f desconocida toma sobre ciertos puntos {x 1 ,x 2 , ··· ,x n }. Se pretende proporcionar valores aproximados de f en cualquier punto x interpolando los valores conocidos. Para precisar se va a llamar X = {x k } al conjunto de los valores de x para los cuales se conoce el valor de f . De forma equivalente se denominar´ a Y = {f (x k )} a las ordenadas de dichos puntos. Para poder obtener aproximadamente f (x ) mediante interpolaci´ on es necesario que existan dos valores x i y x d pertenecientes a X tales que x i x x d . 203

Area Bajo La Curva

Embed Size (px)

Citation preview

Tema 10

Algunos problemas de ingenierıa

Este ultimo tema propone diversos problemas comunmente encontrados en diversas areas de laingenierıa. Se han seleccionado por una parte porque permiten poner a prueba los conocimientosque el alumno ha debido adquirir durante el curso. Ademas ilustran ideas que el alumno manejaraa lo largo de la carrera.

En la confeccion de los algoritmos se ha supuesto que el operador dispone de medios pararealizar operaciones elementales de la Logica y la Aritmetica y ademas alguna otra como senos ylogaritmos que se encuentran en la mayorıa de lenguajes de programacion para computadoras eincluso en calculadoras de bolsillo. Gracias a eso los algoritmos que se proponen como solucionpueden ser facilmente codificados en C, en MATLAB, JAVA o cualquier otro lenguaje de altonivel.

10.1 Interpolacion con segmentos

Suponga que se conocen los valores que una funcion f desconocida toma sobre ciertos puntos{x1, x2, · · · , xn}. Se pretende proporcionar valores aproximados de f en cualquier punto x∗

interpolando los valores conocidos.

Para precisar se va a llamar X = {xk} al conjunto de los valores de x para los cuales seconoce el valor de f . De forma equivalente se denominara Y = {f(xk)} a las ordenadas dedichos puntos.

Para poder obtener aproximadamente f(x∗) mediante interpolacion es necesario que existandos valores xi y xd pertenecientes a X tales que xi ≤ x∗ ≤ xd.

203

204 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

En tal caso la interpolacion produce un valor aproximado f(x∗) que se calcula utilizando larecta que pasa por (xi, yi) y (xd, yd) como se muestra en la figura 10.1. La ecuacion de esta rectaes:

y − yi =yd − yi

xd − xi(x− xi)

y en el punto x∗ toma el valor

y∗ = yi +

yd − yi

xd − xi(x∗ − xi)

En caso de que x∗ no caiga entre dos valores conocidos no es posible realizar la interpolacion.

0 0.5 1 1.50

0.2

0.4

0.6

0.8

1

1.2 (xi, yi)(xd, yd)

x*

Figura 10.1: Ilustracion de la interpolacion de funciones. La funcion desconocida a interpolares la lınea de puntos. Los valores conocidos se indican con marcas +. Dado el valor x∗, la rectaque interpola es la lınea continua.

El problema que se pretende resolver puede enunciarse como: dado un conjunto de abscisasX = {xk} y sus imagenes mediante f denotadas por Y = {f(xk)}, siendo f una funciondesconocida, calcular mediante interpolacion una aproximacion f para nuevos valores de x pro-porcionados por el usuario por teclado.

Es importante tener en cuenta que los valores en X no estan ordenados, es decir no se cumpleque xk ≤ xk+1 para todo k.

c� MRA & JAAR 2010 DISA. ESI. US. 205

10.2 Ajuste por mınimos cuadrados

Hay ocasiones en ingenierıa en las que se dispone de un conjunto de medidas o datos observadosde dos variables y se quiere hallar la relacion entre ambas. Por ejemplo, la relacion entre altitudy temperatura media en la estratosfera.

Mediante un globo se puede medir la temperatura en distintas epocas del ano y la alturacorrespondiente. Suponga que el resultado de tales mediciones se ha incluido en dos vectores T

de temperaturas (en grados Celsius) y A de alturas (en Kms).

Para realizar este ejemplo se va a suponer que los vectores citados tienen como componentes:

A = [ 21 23 25 26 28 30 31 35 40 45 49]

T = [−50 − 51 − 45 − 44 − 39 − 40 − 39 − 28 − 20 − 15 − 8]

La grafica que se muestra en la figura 10.2 muestra en el eje vertical (eje y) la altura y enel horizontal (eje x) la temperatura. Como puede verse, parece existir una relacion entre lasobservaciones de ambas variables. Mas aun, esta relacion es aproximadamente lineal pues seasemeja a una recta.

!60 !50 !40 !30 !20 !10 020

25

30

35

40

45

50

temperatura (oC)

alti

tud

(K

ms)

Datos observados

Figura 10.2: Mediciones realizadas con globo en la estratosfera.

206 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

Una vez hecha esta observacion es posible preguntarse si alguna recta del tipo y(x) = ax + b

proporciona una relacion valida a la vista de las mediciones disponibles.

Dada una observacion consistente en el par (xk, yk) se denomina error de ajuste a la diferenciaentre el valor observado yk y el valor dado por la recta para el valor de x observado y(xk) =axk + b. La desviacion cuadratica es es cuadrado de dicho error (yk − y(xk))2.

El metodo de los mınimos cuadrados permite obtener los valores de a y b que producen elmejor ajuste posible en cierto sentido1.

Las formulas para obtener los valores de a y de b son de sobra conocidas:

a =n

n�k=1

xkyk −n�

k=1xk

n�k=1

yk

n

n�k=1

x2k −

�n�

k=1xk

�2

b =

n�k=1

yk − a

n�k=1

xk

n

siendo n el numero de observaciones. Estas formulas aplicadas a los datos de altitud ytemperatura dan como resultado los valores

a =11(−10840)− (−379)(353)

11 · 15177− 143641= 0.6242

b = (353− a · (−379))/11 = 53.6

En la figura 10.3 se muestran de nuevo los datos de temperatura y altitud incluyendo ademasla recta de ajuste obtenida con las formulas anteriores que resulta ser y = 0.624x + 53.6.

El problema que se pretende resolver puede enunciarse como: dado un conjunto de medidasconsistentes en pares (xi, yi) acomodadas en dos vectores x ∈ IRn e y ∈ IRn (con n > 0 entero),hallar los parametros a y b de la recta de ajuste por mınimos cuadrados. Suponga que losvectores y su dimension ya han sido leıdos.

1La recta de mınimos cuadrados, como indica su nombre, es la que hace mınima la suma de las desviaciones

cuadraticas.

c� MRA & JAAR 2010 DISA. ESI. US. 207

!60 !50 !40 !30 !20 !10 020

25

30

35

40

45

50

temperatura (oC)

alti

tud

(K

ms)

Datos observados y recta de ajuste

Figura 10.3: Recta de ajuste de los datos experimentales.

10.3 Calculo aproximado de areas

Como es sabido, la integral definida de una funcion equivale al area que queda bajo la curva dedicha funcion entre los lımites de integracion. Por ejemplo, la integral indefinida (o primitiva)de y = 1 es

�1dx = x, por tanto la integral definida entre las abscisas 1 y 5 es:

� 5

11dx = (5− 1) = 4

Este resultado puede comprobarse de manera inmediata sin mas que trazar la grafica dey = 1 y observar que el area del rectangulo es igual al producto de la base por la altura 4 ·1 = 4.

Segun lo anterior, parece claro que para calcular el area de y =f(x) entre dos abscisas xi,xf basta con hallar la primitiva de f(x), digamos g(x) =

�f(x)dx y luego obtener la diferencia

g(xf )−g(xi).

Este metodo presenta un inconveniente, y es que existen funciones para las cuales no seconocen primitivas. Este es el caso, por ejemplo de la funcion f(x) = e−x2 .

El calculo aproximado de integrales consiste en hallar un valor numerico h(xi, xf ) que sea lomas parecido posible al area que se desea calcular g(xf )−g(xi).

208 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

Un metodo muy simple consiste en dividir el area en rectangulos como los que se muestran enla figura 10.4. Observese que se ha dividido el intervalo [xi, xf ] en n trozos iguales, resultandolos subintervalos: [x1, x2], [x2, x3], ... [xn, xn+1], siendo x1 = xi y xn+1 = xf . La altura decada rectangulo se calcula mediante el valor de la funcion. Ası, para el primer rectangulo laaltura es f(x1), para el segundo rectangulo f(x2) y para el ultimo rectangulo (el n) es f(xn).

x1

xn+1

xi

xf

f(x)

x2

xn

xk

f(x1)

Figura 10.4: Calculo aproximado del area bajo la curva f mediante suma de rectangulos

El area bajo la curva es aproximadamente igual a la suma de las areas de los n rectangulos.Se va a indicar mediante h(xi, xf , n) el valor de dicha suma. Puesto que la base de todos elloses igual a d = (xf − xi)/n se tiene que:

h(xi, xf , n) = d

n�

k=1

f(xk) (10.1)

La suma anterior puede llevarse a cabo mediante un programa de computador. Notese quela formula (10.1) solo contiene variables y funciones conocidas. Se supone que aunque no seconoce la expresion analıtica de la funcion primitiva g(x) sı se conoce la de f(x) y tambien sesupone que los valores de f(x) se pueden calcular para cualquier x ∈ [xi, xf ].

El problema que se pretende resolver puede enunciarse como: dados dos valores xi, xf

(xi < xf ) y una funcion f(x), hallar el area bajo la curva f de forma aproximada.

Resulta evidente que el resultado de (10.1) depende del numero de rectangulos que se util-icen. Si se toma un valor demasiado bajo para n es resultado sera poco aproximado pues la”escalera” de rectangulos sera demasiado tosca. Por contra un valor demasiado alto de n pro-ducira resultados finos a costa de un tiempo de calculo elevado. En el algoritmo se dejara quen sea una variable a elegir por el usuario.

c� MRA & JAAR 2010 DISA. ESI. US. 209

10.4 Integracion numerica de ecuaciones diferenciales

10.4.1 Introduccion

Un problema clasico en ingenierıa es el calculo de soluciones aproximadas de ecuaciones difer-enciales usando metodos numericos.

Una ecuacion diferencial es aquella en la que aparecen la incognita y sus derivadas. Porejemplo la ecuacion

dx

dt+ x = 0

En esta ecuacion x no representa un numero sino una funcion del tiempo x(t). La solucionde la ecuacion es una funcion tal que derivada respecto al tiempo y sumada a sı misma produzcael valor cero.

En algunos casos es posible obtener la solucion utilizando herramientas del calculo. En elejemplo mostrado es simple pasando dt al segundo miembro y tomando integral.

dx

dt+ x = 0

dx

dt= −x

− dx

xdt= 1

−dx

x= dt

−�

dx

x=

�dt

La integral de la izquierda es el logaritmo neperiano de x, la integral de la derecha es t,si suponemos que en el instante t = 0 se conoce el valor de x al cual simbolizamos mediantex(0) = x0 se tiene que:

−� t

0

dx

x=

� t

0dt

210 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

−(lnx− lnx0) = (t− 0)

−(lnx

x0) = t

(lnx

x0) = −t

x

x0= e

−t

x(t) = x0e−t

Sin embargo hay ocasiones donde no se conocen maneras para calcular soluciones manipu-lando las ecuaciones como en el ejemplo anterior. Tal es el caso de ecuaciones diferenciales enlas cuales aparecen terminos que no son lineales.

Como ejemplo considere el problema de un paracaidista cayendo en la atmosfera. La caıdaesta gobernada por la accion de la fuerza de gravedad y la fuerza de rozamiento con el aire.

Fg − Fr = mdv

dt

donde Fg es la fuerza de la gravedad que atrae al paracaidista hacia el suelo, Fr es la fuerzade rozamiento que se opone a la caıda, v es la velocidad vertical hacia abajo con la que viaja elmovil y m es su masa.

Se sabe que Fg = mg siendo g = 9.8m/s2, por otra parte la resistencia aerodinamica dependede muchos factores. Simplificando mucho se puede considerar que Fr = kv2. Es decir, laresistencia es proporcional al cuadrado de la velocidad.

La ecuacion diferencial queda entonces:

mg − kv2 = m

dv

dt

dividiendo por m y reagrupando terminos se obtiene:

dv

dt= g −Bv

2

siendo B = k/m.

Esta ecuacion no puede resolverse con lapiz y papel por lo que se necesitan tecnicas deintegracion numerica las cuales se pueden programar en un ordenador usando un lenguaje dealto nivel como MATLAB.

c� MRA & JAAR 2010 DISA. ESI. US. 211

10.4.2 El metodo de Euler

Una forma simple de obtener soluciones aproximadas a ecuaciones como la anterior es el metodode Euler.

Sea la ecuacion dxdt = f(t) con condicion inicial x(0) = x0. En el instante de tiempo t = 0 se

sabe que x(t) = x0, ademas se sabe que

x(0) = f(0) = limt−→0

x(t)− x0

t− 0≈ x(h)− x0

h

tomando un valor h suficientemente pequeno. Es decir, que el valor de x(t) en un instante t = h

proximo a cero es aproximadamente x0 + hf(0) lo cual se indica mediante x(h) ≈ x0 + hf(0).Frecuentemente el valor calculado de forma aproximada se indica mediante x(h), por lo quex(h) ≈ x(h) = x0 + hf(0).

Del mismo modo, para el instante 2h se puede escribir x(2h) ≈ x(h) + hf(h), como x(h)no es conocido se puede utilizar su valor aproximado x(h), por lo que x(2h) ≈ x(h) + hf(h) ≈x(h) + hf(h) = x(2h).

Procediendo de la misma manera se puede obtener una secuencia de valores aproximados{x(kh)}, k = 1, 2, · · · . Notese que este metodo equivale a hacer una extrapolacion lineal usandola derivada en cada punto.

Para ilustrar el metodo de Euler se parte de la situacion mostrada en la figura 10.5 (a). Eleje horizontal representa la variable t, en el eje vertical se ha colocado el valor x(0) = x0. Apartir de este punto se traza una recta con pendiente f(0). Sobre esta recta se halla el puntode abcisa h y ordenada x(h) = x0 + hf(0) que constituye el primer valor aproximado. A partirde ahı se pasa a una nueva situacion, mostrada en 10.5 (b): ahora se toma x(h) como punto departida para trazar una nueva recta de pendiente f(h) y obtener sobre ella el punto de abcisa 2h

y ordenada x(2h) = x(h) + hf(h) que constituye el segundo punto de la solucion aproximada.

En la figura 10.5 (c) se muestra el resultado obtenido al repetir los pasos anteriores 50 vecescon h = 0.1, siendo f(t) = cos(t) y x(0) = 0. Se observa que la solucion proporcionada porla integracion numerica es un conjunto de valores {x(kh)}, k = 1, 2, · · · 50. Estos valores sehan representado uniendo mediante segmentos los puntos (kh, x(kh)), de forma que se obtieneuna aproximacion mediante trozos rectos. En la citada figura se muestra tambien con trazopunteado la solucion exacta obtenida resolviendo dx

dt = cos(t), con x(0) = 0 que da comoresultado x(t) =sen(t). Puede observarse que la discrepancia no es muy alta.

El problema que se pretende resolver puede enunciarse como: dada una ecuacion diferencialde primer orden en la forma dx

dt = f(t) con condicion inicial x(0) = x0 calcular de forma

212 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

0

xx(h)

ht

0

x(h) x(2h)

t2h

x

0 h

0

0 0.5 1 1.5 2 2.5 30

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

(a) (b) (c)

Figura 10.5: El metodo de Euler para integracion numerica

aproximada mediante el metodo de Euler los valores de la trayectoria x(t) para t = h, 2h, · · · , Nh

siendo h el paso de integracion dado y N el numero de pasos (tambien dado).

10.5 Ecuaciones trascendentes

Existen ecuaciones cuyas soluciones no pueden hallarse con lapiz y papel intentando despejar lavariable buscada. Este es el caso de ecuaciones como cos(x) = x.

El problema se puede replantear como la busqueda del punto de corte con el eje horizontalde la funcion y = cos(x) − x. Para calcular (de forma numerica) el paso por cero de y(x) sepueden aplicar diversos metodos. Uno de ellos se comenta a continuacion.

10.5.1 Metodo de la biseccion

Se quiere resolver el problema de hallar el paso por cero (o raız) de una funcion y = f(x) dentro deun cierto intervalo [xi, xf ]. Se sabe que f es continua y tambien que en los extremos del intervalotoma valores de distinto signo. Sin perdida de generalidad se puede suponer que f(xi) > 0 yf(xf ) < 0 (en caso contrario basta con buscar el paso por cero de −f(x)).

La situacion comentada aparece descrita en la figura 10.6. De la propiedad de continuidadde la funcion f se obtiene que debe existir al menos un paso por cero en el intervalo citado.Interesa calcular ese valor x∗ que cumple f(x∗) = 0 aunque sea de modo aproximado.

El metodo de la biseccion consiste en dividir el intervalo en otro mas pequeno que sigaconteniendo el punto de corte. Este procedimiento se repite varias veces hasta que el intervalo

c� MRA & JAAR 2010 DISA. ESI. US. 213

xi

xf

f(x)

x*

Figura 10.6: Funcion con un pase por cero en el intervalo mostrado.

sea lo bastante pequeno. Llegado este momento se puede tomar como valor aproximado del ceroel punto medio del ultimo intervalo.

Para realizar la biseccion se toma el punto medio del intervalo actual xm = (xi + xf )/2 y seevalua la funcion en dicho punto, pueden darse tres casos:

• a) la funcion en xm es del mismo signo que f(xi). En tal caso se toma como nuevo intervaloel [xm, xf ] y se repite el proceso.

• b) la funcion en xm es del mismo signo que f(xf ). En tal caso se toma como nuevo intervaloel [xi, xm] y se repite el proceso.

• c) f(xm) = 0 en tal caso no es preciso buscar mas, se ha hallado un pase por cero de lafuncion.

El metodo de la biseccion termina o bien cuando se halla un punto en el que la funcion valecero o cuando el intervalo es lo suficientemente pequeno. Por ejemplo, si se necesita conocerel pase por cero con dos decimales el metodo ha de aplicarse hasta que el intervalo tenga unalongitud menor o igual a 0.01.

En la figura 10.7 se muestra como actuarıa el metodo de la biseccion con la misma funcion dela figura 10.6. Se han representado tres etapas con los pasos descritos anteriormente (indicadasmediante un numero encuadrado situado en la parte superior de cada grafica). La longituddel intervalo, que se ha indicado en la parte inferior, disminuye a la mitad en cada etapa conrespecto a la anterior.

Para ilustrar el metodo se va a considerar la funcion cos x−x. El intervalo en el que existe unpase por cero se obtiene facilmente recordando que cos (0) = 1, por lo que f(0) = cos (0)− 0 =1 > 0 y por otra parte cos (π/2) = 1, por lo que f(π/2) = cos (π/2)− pi/2 = 0− π/2 < 0.

214 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

xi

xi

xf

f(x)

xm

2

xf

f(x)

xm

1

xi

xf

f(x)

xm

3

Figura 10.7: Funcionamiento del metodo de la biseccion.

Por tanto el primer intervalo considerado es [xi, xf ] = [0, π/2]. El punto medio de esteintervalo es xm = (xi + xf )/2 = π/4. Al evaluar la funcion se obtiene que f(xm) = −0.0783 < 0,por lo que se trata del caso b). El nuevo intervalo ha de ser [0, π/4].

Repitiendo el proceso varias veces se obtienen los valores que figuran en la tabla siguiente:

Intervalo Punto medio xm Valor de f(xm) Longitud intervalo[0, π/2] π/4 -0.0783 1.5708[0, π/4] π/8 0.5312 0.7854

[π/8, π/4] 3π/16 0.2424 0.3927[3π/16, π/4] 7π/32 0.0858 0.1963[7π/32, π/4] 15π/64 0.0046 0.0982[15π/64, π/4] 31π/128 -0.0366 0.0491

[15π/64, 31π/128] 61π/256 -0.0159 0.0245[15π/64, 61π/256] 121π/512 -0.0056 0.0123[15π/64, 121π/512] 245π/1024 -0.0211 0.0061

La columna de la derecha indica la longitud del intervalo considerado; es decir xf−xi. Puedeobservarse que el valor en cada etapa es la mitad que en la anterior. Esta cantidad tiene granimportancia en el metodo. Observese que si se toma xm como valor aproximado de x∗ el errorcometido no sera nunca mayor que la longitud del intervalo. Por tanto, si se desea la solucionaproximada con un decimal exacto esta se puede tomar como 15π/64 (que se obtiene con tansolo cinco iteraciones); si se precisan dos decimales exactos entonces hay que tomar 245π/1024(son necesarias nueve iteraciones para ello).

La figura 10.8 muestra la funcion f(x) = cos x−x. Los cırculos y las lıneas verticales indicanlos valores de xm en las cuatro primeras etapas. Los numeros que figuran encima de los cırculosindican la etapa en la que han sido obtenidos. Puede comprobarse que en la primera etapa seobtiene (por casualidad) un valor muy cercano al paso por cero.

Una vez presentado el metodo es posible enunciar el problema de forma sucinta como: dada

c� MRA & JAAR 2010 DISA. ESI. US. 215

0 0.5 1 1.5!1.5

!1

!0.5

0

0.5

1

1.5

1

2

34

x

y

cos(x)!x

Figura 10.8: Ejemplo de uso del metodo de la biseccion.

una funcion f(x) y un intervalo inicial [xi, xf ] tales que f(xi) · f(xf ) < 0 aplicar el metodo de labiseccion hasta que el intervalo resultante tenga una longitud menor que cierto valor dado d. Elalgoritmo dara como resultado xm, el punto medio del intervalo final.

10.6 Superficies

Una superficie z = f(x, y) definida en un rectangulo [xi, xf ]× [yi, yf ] puede representarse medi-ante un conjunto discreto de alturas medidas en algunos puntos del dominio. Por ejemplo, si setoma una rejilla en el rectangulo con nx × ny puntos, las alturas de los puntos (xj , yi) seran losvalores zij = f(xj , yi) para i = 1, · · · , ny y j = 1, · · · , nx que se pueden incluir en una matrizZ ∈ IRny×nx .

A modo de ejemplo considere la funcion z = f(x, y) = x2+y2 en el rectangulo [−1, 1]× [−2, 2].Si se toma una rejilla de ancho 0.5 se obtienen los valores siguientes:

x = {−1,−0.5, 0, 0.5, 1}

y = {−2,−1.5,−1,−0.5, 0, 0.5, 1, 1.5, 2}

216 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

Z =

5.00 3.25 2.00 1.25 1.00 1.25 2.00 3.25 5.004.25 2.50 1.25 0.50 0.25 0.50 1.25 2.50 4.254.00 2.25 1.00 0.25 0.00 0.25 1.00 2.25 4.004.25 2.50 1.25 0.50 0.25 0.50 1.25 2.50 4.255.00 3.25 2.00 1.25 1.00 1.25 2.00 3.25 5.00

La figura 10.9 muestra la rejilla en el rectangulo considerado y la superficie z = f(x, y)calculada en los puntos de la rejilla.

!2 !1 0 1 2!1.5

!1

!0.5

0

0.5

1

1.5rejilla

x

y

!2 !1 0 1 2!1

0

10

1

2

3

4

5superficie f(x,y)

xy

Figura 10.9: Ejemplo de uso del metodo de la biseccion.

Una superficie cualquiera, como por ejemplo la formada por las montanas y valles del terreno,puede ser representada aproximadamente por una matriz. Usando esta representacion es posibleresolver algunos problemas de ingenierıa.

10.6.1 Busqueda de extremos

Dada una matriz de alturas como la descrita en 10.6 con ny filas y nx columnas se deseadeterminar los maximos y mınimos. El problema es equivalente a buscar las cimas y depresionesde un terreno.

Para concretar mas lo expuesto considerese la superficie mostrada en la figura 10.10 y sucorrespondiente grafico de curvas de nivel. Puede observarse que existe mas de una cumbre ymas de una depresion. El objetivo no es hallar la cumbre mas alta o la sima mas profunda sinoindicar en que lugares existe alguna de estas caracterısticas del terreno.

Para solucionar el problema se puede usar la idea de que una cumbre es un punto del terreno

c� MRA & JAAR 2010 DISA. ESI. US. 217

1020

3040

5060

10

20

30

40

50

10

20

30

j

superficie

i10 20 30 40 50 60

5

10

15

20

25

30

35

40

45

50

55

j

i

5

10

15

20

25

Figura 10.10: Terreno con multiples cumbres y simas (izquierda) y mapa con curvas de nivel(derecha). La barra de la derecha indica la correspondencia entre tonos de gris y altura.

que sobresale de los puntos vecinos. Este hecho sera visible en la matriz de alturas pues lacumbre correspondera a algun elemento ai,j con la propiedad de ser mayor que sus vecinos.

Por ejemplo, en la matriz siguiente

0 0 1 2 2 1 0 0 00 0 2 2 2 2 1 0 00 0 2 2 2 2 1 0 00 1 1 2 3 1 1 0 00 0 1 1 2 1 1 0 00 0 1 1 2 1 1 0 00 0 1 1 2 1 0 0 0

hay una sola cumbre, correspondiente al elemento a4,5. Puede verse que los elementos adya-centes tienen menor valor.

Ha de tenerse en cuenta que los vecinos que hay que comprobar son: el de arriba, el deabajo, el de la izquierda, el de la derecha y tambien los cuatro situados en las diagonales; esdecir, arriba a la izquierda, arriba a la derecha, abajo a la izquierda y abajo a la derecha.

Los elementos que estan situados en los bordes de la matriz (los de las filas primera y ultimay los de las columnas primera y ultima) no pueden ser comprobados porque no tienen todos susvecinos, por ello se dejan fuera del analisis.

El algoritmo para detectar cumbres debera analizar cada uno de los elementos interiores de

218 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

la matriz y comprobar si se cumple o no la condicion de ser mayor que los vecinos.

De forma breve puede enunciarse el problema como:

Dada una matriz de alturas z ∈ IRny×nx con ny filas y nx columnas y dos vectores x ∈ IRnx

e y ∈ IRny , hallar las coordenadas (x, y, z) de los extremos (cimas y depresiones) de la superficierepresentada por z.

10.7 Transporte

Se dispone de una lista de n aeropuertos y las distancias o tiempos de vuelo entre cada unode ellos y los demas. Esa informacion se ha incluido en una matriz D ∈ IRn×n siendo dkj ladistancia (o tiempo de vuelo) para ir del aeropuerto k al j siguiendo la ruta establecida en cadacaso.

No todos los trayectos posibles tienen vuelos, por lo que se dispone de otra matriz C ∈ IRn×n

tal que sus elementos indican si existe o no vuelo directo entre dos aeropuertos. Esto se lograhaciendo que ckj = 0 si no hay vuelo y que ckj = 1 en caso de que si haya vuelo.

Dado un aeropuerto origen ao con ao ∈ 1, 2, · · · , n y otro destino ad �= ao con ad ∈ 1, 2, · · · , n

se desea calcular:

• La lista de todos los trayectos posibles que parten de ao y que pasan solo una vez o ningunapor cada uno de los aeropuertos acabando en ad.

• Distancia total de cada uno de los trayectos anteriores.

• Trayecto de mınima distancia entre el aeropuerto origen y el aeropuerto de destino.

10.8 Tratamiento de textos

10.8.1 Palabras en orden inverso

El problema consiste en leer una frase del teclado y escribirla luego al reves. Por ejemplo, si selee la frase Hola amigo. se ha de escribir en la pantalla .ogima aloH que es la frase escrita dederecha a izquierda.

c� MRA & JAAR 2010 DISA. ESI. US. 219

10.8.2 Palındromo

Problema Leer una palabra y decidir si es palındromo. El final de la palabra es indicado conel punto. Para ser palındromo debe ocurrir que exista un eje de simetrıa en la palabra. Lapalabra puede tener un numero par o impar de caracteres; en este ultimo caso el eje de simetrıacontendra el caracter central.

Ejemplos: abba, abcba.

10.8.3 Mensaje oculto

Una frase puede cambiarse para que resulte irreconocible. Una forma muy simple consiste encambiar cada caracter por el siguiente del alfabeto. Por ejemplo, la palabra IBM se convierte enHAL.

El programa que se desea construir ha de codificar, mediante esta tecnica simple, una fraseque se leera del teclado. Considere que la frase leıda consiste unicamente en una palabra formadapor letras (sin numeros ni otros caracteres).

Para simplificar no tenga en cuenta el caso de letras con tilde o dieresis.

10.8.4 Mensaje oculto II

Se puede expandir el programa anterior para que opere tambien con frases que contienen carac-teres que no son letras, tales como los numeros y signos de puntuacion. Los unicos caracteresque se han de modificar son las letras.

Por ejemplo, si la frase que se introduce es ¿Quedamos a las 6h? el resultado ha de ser¿Rvfebnpt b mbt 6i?

Para simplificar no tenga en cuenta el caso de letras con tilde o dieresis.

10.8.5 Descifrar mensaje

Se trata ahora de resolver el problema inverso: dado un mensaje codificado proporcionar la fraseoriginal.

220 TEMA 10. ALGUNOS PROBLEMAS DE INGENIERIA

El programa ha de leer del teclado una frase codificada, como por ejemplo ¿Rvfebnpt bmbt 6i?. Como resultado el programa ha de escribir en la pantalla el mensaje sin codificar¿Quedamos a las 6h?.

Para simplificar no tenga en cuenta el caso de letras con tilde o dieresis.

10.8.6 Mensaje oculto II

En los dos problemas anteriores se ha ignorado el caso de la letra z. Esta letra plantea unproblema para ser codificada pues no existe otra letra posterior. Una forma de resolver esteproblema es ”asignar” de forma artificial la a como letra siguiente a la z. De este modo unafrase como zona 3 se codifica en apob 3.

Para simplificar no tenga en cuenta el caso de letras con tilde o dieresis.

10.8.7 Pase a mayusculas

Se desea cambiar una frase de forma que todas las letras queden en mayusculas. El programaleera una frase del teclado y escribira como resultado la misma frase pero con las letras cambiadasde forma que todas esten en mayusculas. Por ejemplo, la frase Tengo clase a las 16h en laplanta E-2 ha de transformarse en TENGO CLASE A LAS 16H EN LA PLANTA E-2.

Observese que las letras que ya estaban en mayusculas se quedan igual. Los caracteres queno son letras no se ven afectados.

Para simplificar no tenga en cuenta el caso de letras con tilde o dieresis.

10.9 Tratamiento de archivos

10.9.1 Agenda telefonica

Se desea crear una agenda telefonica. Esta agenda consiste en un archivo de texto en el queaparecen nombres, apellidos y numeros de telefono.

Esta tarea puede realizarse con la libreta de notas, pero en lugar de eso queremos desarrollarun programa en MATLAB que recoja los datos de la agenda y los introduzca en un archivo.

c� MRA & JAAR 2010 DISA. ESI. US. 221

El programa ha de preguntar al usuario el nombre, apellidos y numero de telefono de unapersona. Posteriormente preguntara si desea anadir otra persona a la agenda o grabar los datos.Si escoge anadir el programa ha de volver a preguntar el nombre, apellidos y numero de telefono,en caso contrario el programa escribira los datos en un archivo de texto.

El archivo de texto ha de tener el formato siguiente: los dos primeros caracteres son unnumero de orden, a continuacion viene un espacio. Los 15 caracteres siguientes se reservan parael nombre. A continuacion debe aparecer una coma. Los 30 espacios siguientes se dejan paralos dos apellidos. Despues ha de aparecer la palabra Tel y un espacio en blanco. Finalmente seescribe el telefono y se pasa a la lınea siguiente.

En el recuadro siguiente se puede observar un ejemplo de dicho archivo de texto.

01 Pedro, Perez Repitre Tel 56 90 0202 Ana, Regues Dıaz Tel 11 32 4503 Juan, Borda Ruiz Tel 34 43 7804 Antonio, Garcıa Wrkczy Tel 21 32 43

10.9.2 Agenda telefonica II

Para consultar la lista de telefonos confeccionada con el programa anterior es posible usar lalibreta de notas. En lugar de eso se quiere crear un programa en MATLAB que lea el archivo ypresente en la pantalla la informacion que contiene.

El programa no recibe dato alguno. Su mision consiste en leer el archivo que contiene laagenda y mostrar en la pantalla la lista de nombres, apellidos y telefonos exactamente en lamisma forma en la que aparece en el archivo.

10.9.3 Agenda telefonica III

En una agenda es frecuente que haya que anadir nuevos telefonos o borrar alguno existente . Seha de realizar un programa que lea el archivo (creado con el programa de 10.9.1), presente sucontenido en pantalla y pregunte al usuario si desea anadir o eliminar algo. En caso de que sedesee anadir el programa preguntara al usuario los datos del mismo modo que en el programade 10.9.1. Si se desea eliminar una entrada de la agenda (una lınea de datos) el programapreguntara que numero de lınea se desea eliminar. El programa concluye escribiendo un nuevoarchivo con los cambios realizados.

c� MRA & JAAR 2010 DISA. ESI. US. 223

Bibliografıa

Basica

• P. Anasagasti, Fundamentos de los computadores. Paraninfo, 1990.

• M. R. Arahal, Fundamentos de informatica. Escuela Superior de Ingenieros, Universidadde Sevilla, 1999.

• T. Aranda, Notas sobre MATLAB. Universidad de Oviedo, Servicio de Publicaciones,1999.

• D. C. Lay, Algebra Lineal y sus aplicaciones. Pearson,1999.

Avanzada

• J. Mathews, Metodos numericos con MATLAB. Prentice Hall, 2000.

• C. Perez Lopez, Matematica informatizada con MATLAB, Ra-Ma, 1996.

• K. Sigmon , Introduccion a MATLAB. University of Florida, 1992. (Traduccion de Ce-lestino Montes. Escuela Superior de Ingenieros, Universidad de Sevilla).

• M. J. Soto Prieto, Algebra lineal con MATLAB y MAPLE. Prentice-Hall Internacional,1995.

• G. Brassard y P. Bratley, Fundamentos de algoritmia. Prentice Hall, 1997.