Sei sulla pagina 1di 4

Desplazamiento de una estructura en oscilacin amortiguada

El desplazamiento de una estructura en una oscilacin amortiguada viene dada por la


ecuacin:
y = 9e kt cos t
Si k = 0.7; = 4 ,
determinar por mtodos numricos y programas en MATLAB el tiempo para que el
desplazamiento disminuya a 3.5 con una precisin de cuatro dgitos decimales
significativos.
SOLUCIN:
Se trata de hallar la raz de la ecuacin:
9e kt cos t 3.5 = 0

Vamos a utilizar dos mtodos distintos: el de Newton-Raphson y el de la secante.


a) Newton-Raphson
f (t ) = 9e kt cos t 3.5
cuya derivada es:
f (t ) = 9ke kt cos t 9e kt sent = 9e kt (k cos t + sent )
La frmula recurrente de Newton-Raphson es:

t i +1 = t i

f (t i )
f (t i )

Escribimos la siguiente funcin (genrica que nos va a servir para aplicar el mtodo
de Newton-Raphson a otros problemas diferentes) (Programa 1):
function[x]=NR(x,p)
ant=-inf;
while abs(x-ant)>p
ant=x;
x=x-f(x)/fprima(x);
end
Observamos que simplemente le pasamos un valor inicial, x, y le ordenamos que
aplique iterativamente la frmula de Newton-Raphson hasta alcanzar la precisin que
le hemos fijado,p, y nos devuelve el valor buscado . Hay que definir dos funciones, f
y fprima que son, respectivamente, la funcin de la que buscamos los ceros y su
derivada , correspondientes a cada problema. La variable ant, en donde vamos a
guardar el valor calculado en la ltima iteracin para compararlo con el nuevo, la

inicializamos a inf (representacin en MATLAB del menor nmero negativo que


puede almacenar el ordenador) para asegurarnos que siempre entramos la primera vez
en el bucle while-end
Para este problema en concreto, las funciones f y fprima son, en este caso:
function[y]=f(x)
y=9*exp(-0.7*x)*cos(4*x)-3.5;
y
function[y]=fprima(x)
y=-6.3*exp(-0.7*x)*cos(4*x)-36*exp(-0.7*x)*sin(4*x);
Tomamos como valor inicial t 0 = 0.5 y como p =0.00005 (nos piden precisin de
cuatro dgitos decimales significativos)
En el Command Windows hacemos la llamada:
>> t=NR(0.5,0.00005)
y obtenemos el resultado:
t=
0.2704
que es el resultado buscado.
Podemos comprobar tambin en el Command Windows:
>> f(0.2704)
ans =
-6.4316e-005
>>
que nos confirma que 0.2704 es un valor aproximado, con la precisin exigida, al cero
exacto buscado de la funcin.
Recordamos que el mtodo de Newton-Raphson es un mtodo abierto en el que, en
principio , no est asegurada la convergencia.
Sin embargo en este caso s podamos haber asegurado que iba a converger por el
valor inicial escogido (0.5) y cumplirse la relacin de convergencia:

f (t ) f (t ) < ( f (t )) 2 en un punto prximo al valor buscado.

Podramos estar tambin interesados en el nmero de iteraciones que han sido


necesarias para conseguir la precisin deseada. Utilizaramos, entonces, una variante
de nuestra funcin de Newton-Raphson:
function[x,nit]=NR(x,p)
ant=-inf;
nit=0;
while abs(x-ant)>p
ant=x;
x=x-f(x)/fprima(x);
nit=nit+1;
end
Y as , al llamar de nuevo a la funcin en el Command Windows:
>> [t,nit]=NR(0.5,0.00005)
obtenemos:
t=
0.2704

nit =
4
Hemos necesitado nicamente 4 iteraciones (El mtodo de Newton-Raphson
converge realmente rpido si escogemos adecuadamente el valor inicial!).
Podramos tambin estar interesados en limitar el nmero de iteraciones para evitar
entrar en un proceso no convergente o excesivamente lento en converger. Una
variante de nuestra funcin NR sera:

function[x,nit]=NR(x,p,nmaxit)
ant=-inf;
nit=0;
while abs(x-ant)>p
ant=x;
x=x-f(x)/fprima(x);
if nit>nmaxit
disp(Se han superado el numero maximo de iteraciones permitidas);
return
end
nit=nit+1;
end

b) Mtodo de la Secante
La frmula recurrente e el mtodo de la secante es:

t n +1 = t n

f (t n )(t n t n 1 )
f (t n ) f (t n 1 )

que viene a ser la frmula de Newton-Raphson sustituyendo la primera derivada por la


diferencia finita dividida de primer orden.
Escribimos una funcin MATLAB genrica para el mtodo de la secante (Programa
2):
function[x3]=secante(x1,x2,p)
while abs(x2-x1)>p
x3=x2-f(x2)*(x2-x1)/(f(x2)-f(x1));
x1=x2;
x2=x3;
end
En caso de que nos interesara contar el nmero de iteraciones o limitar el nmero
mximo de ellas a realizar emplearamos variantes del tipo de las funciones de
Newton-Raphson que desarrollamos en el apartado anterior.
La funcin f es la misma, obviamente, que utilizamos para el mtodo de NewtonRaphson. Una de las ventajas (quizs la nica) del mtodo de la secante frente al de
Newton-Raphson es que no utiliza la derivada, por tanto en este caso no necesitamos
la funcin fprima.
Recordamos que ambos mtodos son del tipo abierto por lo que no est asegurada la
convergencia y es necesario efectuar convenientemente la eleccin de los valores
iniciales, lo que se puede hacer por tanteos o aplicando criterios fsicos del problema.
Tomamos como valores iniciales: t 0 = 0.3; t1 = 0.7 y la misma funcin f que
utilizamos en el mtodo anterior:
>> t=secante(0.3,0.7,0.00005)

t=
0.2704
obteniendo, el mismo resultado que con el mtodo de Newton-Raphson.

Potrebbero piacerti anche