Ecuaciones Diferenciales Con MATLAB Cesar Perez Lopez

111
GMatl#Iforks.

Transcript of Ecuaciones Diferenciales Con MATLAB Cesar Perez Lopez

  • GMatl#Iforks.

  • ECUAGIONESDIFERENGIALES

    CON MATLAB

    Ejemplos y ejerciciosresueltos

    CESAR PREZ LPEZ

  • INDICE

    MilTRODUCCIN PRCTICA A MATLABMT,TCTONES DIFERENCIALES DE PRIMER ORDEN. ECUACIONESm[,{cTAS, EN VARIABLES SEPARADAS, HOMOGENEAS Y LINEALES........25

    1l EcuACIoNES DIFERENCIALES DE PRIMER oRDEN ...............25]JECUACIONESENVARIABLESSEPARADAS.................. ...............28]j ECUACIONES DIFERENCIALES HOMOGNEAS ............... ........... 30:' 4 ECUACIONES DIFERENCIALES EXACTAS... ............ 331,i ECUACIONES DIFERENCIALES LINEAIES .................... 35

    ]I TACIONES DIFERENCIALES DE ORDEN SUPEROR. TRANSFORMADA DEI,PLACEYTIPOSESPECIALESDEECUACIONES...... ...................37

    3.I ECUACIONES ORDINARIAS DE ORDEN SUPERIOR. .....,.,..,...,...37J l ECUACIONES LINEALES DE ORDEN SUPERIORHOMOGNEAS ENCOEFICIENTES CONSTANTES. ..................39]S ECUACIONES NO HOMOGNEAS CON COEFICIENTES CONSTANTES,\-ARTACIN DE PARMETROS........... ....,.,41J.+ ECUACIONES NO HOMOGNEAS CON COEFICIENTES VARIABLES.ECL]ACIONES DE CAUCHY-EULER.... ,.,....443*i TRANSFORMADA DE LAPLACE .................. .............45

    -1.6 POLINOMTOS ORTOGONALES ............. 483.6.1 Polinomios de Chebychev de primera y segunda especie.....................'........... 483.6.2 Polinomios de Legendre................... ........................493.6.3 Polinomios asociados de Legendre ..........................493.6.4 Polinomios de Hermite................... ..........................49

  • 4 ECUACIONES DIFERENCIALES CON M 50

    1iilll"-:i:::T'"r;::i:::'""": so3.6'7 Polinomios de Jacobi ""'1""""""'

    """"""""""""" 50

    3.6.8 Polinomios de Gegenbauer """"""' """"""""""""'

    50

    3.7 FLTNCIONES DE AIRY Y BESSEL .."...".

    51

    ECUACIONESDIFERENCIALESponITroDoSAPRoXIMADOS...................534.lEcuAcIoNEs"o*"o*o*'***AI-lNo'un{EArEsYNoI.lN{FAtrs'rrtooosepnoxnranos """""534.2 Er- MroDo DE LAS sERIES DE TAYLoR """""""

    """"""' 53

    4.3 Er-MroDoDERtrNGE-Kurre"""" """""'

    56

    srsrEMAs DE EcuAcroNEs DIFERENcIALEs Y EcuAcIoi::.::................ se

    DIFERENCIAS FTN TTAS"""""""""'5.lSISTEMAS,"u**io*II.IEALES;OMoGENEASCoNCoEFICIENTESCONSTA\TTES

    ........59

    s2 STSTEMAS OE*oo*"^*r*ono*oo^t* coN CoEFICIENTES

    CONSTANTES ........60

    53EcuAcloNEs'*u**'FINnAs"""' """"""""'

    61

    cl,cut o NuunTco EN MATLAB' APLIcAcroNEs A LAs EcuAcroNrs

    6.1 MATLAB Y LA PRoGRAMactN """"" """

    65

    6.2 EotronoE rExro"""" """""'

    65

    6.3 ScuPrs" """""'67

    6.4Ft-lNctoNesyM-rtcrrenos.FLINCTI0N,EVALYFEVAL...'.....................686.5 Verueelss LocALES Y GLoBALEs

    """""""'73

    6.6TtposDEDAros """"""""""'75

    6.7 Corrn.ot-t';;;;;'BucLEsFoR'wHILErIFELSEIF ....'..""" "' "'' ""''' ""2

  • INDICE 5

    6.9.1 Mtodo de Euler....... ...............:..... ...... 866.9.2 Mtodo de Heun....... ......816.9.3 Mtodo de las series de Taylor...... ...... 88

    ECUACIONES EN DIFERENCIAS CON VALORES INICIALES, VALORES ENLA FRONTERA Y EN DERIVADAS PARCIALES ....................... 95

    7.I SOLUCIN NUMRICADEECUACIONES DIFERENCIALES .........................957.2 ECUACIoNES DIFERENCIALES oRDINARIAS CON VALORES INICIALES ......................... 957.3 EcUACToNES DTFERENCTALES oRDINARIAS coN vALoRES EN LA FRoNTERA.............. 997.4 EcUACtoNES DIFERENCTALES EN DERTvADAS pARCIALES... ................. 102

  • Captulo 1

    INTRODUCCION PRACTICA A MATLAB

    ClCuT,O NUMRICO CON MATLABPodemos usar Matlab como una computadora numrica de gran

    poEncia. La mayora de las calculadoras manejan nmeros slo con ungrdo de precisin prefijado, sin embargo Matlab realiza clculos exactosGrn la precisin que sea necesaria. Adems, a diferencia de las*ladoras, podemos realizar operaciones no slo con nmerosivftJuales, sino tambin con objetos tales como las matrices.

    La mayora de los temas del clculo numrico clsico, son tratadosei este software. Soporta clculo matricial, estadstica, interpolacin, ajustepr mnimos cuadrados, integracin numrica, minimizacin de funciones,pgramacin lineal, resolucin numrica de ecuaciones algebraicas yfrrenciales y un largo etctera de procesos de anlisis numrico quehrrrc viendo altratar los sucesivos temas de este libro.

    Veamos algunos ejemplos de clculo numrico con Matlab. (Comop sabemos, para obtener los resultados es necesario teclear Enter una vezffiritas las expresiones correspondientes al lado del prompt ">>")

    1) Podemos calcular sencillamente 4+3 y obtener como resultado 7.

    r*+3

  • 8 ECUACIONES DIFERENCIALES CON MATLAB

    ans =

    7

    2) Tambin podemos obtener el valor de 3 elevado a 100, sin haberfijado antes la precisin, basta para ello teclear 3^100. 3^100

    ans =

    5.1538e+047

    3) Tambin podemos utilizar el comando "format long e" para pasarel resultado de la operacin anterior a notacin cientfica con 16 dgitos msexponente.

    format long e 3^100

    ans =

    5.1 537 7 5207 3201 1 5e +0 47

    4) Tambin podemos trabajar con nmeros complejos. Obtendremosel resultado de la operacin (2+3i) elevado a 10, tecleando la expresin(2+3i)^10,

    (2 + 3)^10

    ans =

    -1.41 5249999999998e+005 -1 .456680000000000e+005i

    5) El resultado anterior tambin se puede obtener en formato corto,utilizando el comando "format short".

    format short (2 + 3)^10

    ans =

    -1 .41 52e+005- I .4567e+005

    {I

    "j{tI

    II

    f,m

    llI

  • b,

    I

    r

    :

    I

    CAPTULo 1. INTRoDUCCIN PRCTICA A MATLAB 9

    6) Tambin podemos calcular el valor de la funcin de Bessel en elpunto 11.5 . Para ello teclearemos Besselj(0,11.5).

    Besselj(O, 11.5)

    ans =

    0.2150

    7) Tambin podemos realizar integrales numricas. Para calcular laintegral entre 0 y n de la funcin Seno(Seno(x)) teclearemos la expresinint(sin(sin('x')), 0, pi).

    int(sin(sin('x')), 0, pi)ans =

    1235191 1 62052677 122517 9981 3685248*pi

    Estos temas sern tratados ms a fondo en sucesivos captulos a lolargo del libro.

    cr,cur.o SIMBLICO coN MATLABMatlab maneja perfectamente el clculo matemtico simblico,

    manipula con facilidad y rapidez las frmulas y expresiones algebraicas ypuede realizar la mayora de operaciones con las mismas. Puede expandir,factorizar y simplificar polinomios y expresiones racionales y trigonomtricas,puede encontrar soluciones algebraicas de ecuaciones polinmicas ysistemas de ecuaciones, puede evaluar derivadas e integralessimblicamente y encontrar funciones solucin de ecuaciones diferenciales,puede manipular series de potencias, lmites y muchas otras facetas de lamatemtica algebraica.

    Para realizar esta tarea, Matlab requiere que todas las variables (oexpresiones algebricas) se escriban entre comillas simples. Cuando Matlabrecibe una variable o expresin entre comillas, considera que es simblica.

    Veamos algunos ejemplos de clculo simblico con Matlab.

  • ,,

    ii:lflt,i

    [lrlrt,1

    I

    10 ECUACIONES DIFERENCIALES CON MNTLqg

    1)Podemoselevaralcubolasiguienteexpresinalgebraica:(x+1)(x+2)- (x+2) 2. Esto se consigue tedendo la siguiente expresin:li-pJro tr(-* r 1x*Zxrzrg;l El iesultado ser otra expresin al gebraica:

    > expand('((x + 1).(x + 2)'(x + 2)1243',

    ans =

    -x^3-6*x^2'12"x'8

    2)Podemosfactorizarelresultadodelclculodelejemploanteriortecleand: factor('((x + 1)*(x + 2)-(x + 2)"2)^3')

    factor('(( + 1)*(x + 2)'(x + 2)42n'',

    ans =

    -(x+2)^33)Podemosresolverlaintegralindefinidadelafuncin

    (x^2)Sen'o(x)^2 tecleando: i nt('x^2*sin(x)^2"'x')

    int('x^2*sin(x)^2','x')ans =

    x^2*(-112*cos(x)*sin(x)+1t2*x|.1l2*x*cos(x)^2+1/4*cos(x)*sin(x)+1/4*x.l/3*x^3

    4) Podemos simplificar el resultado anterior:

    > simplify(int('x^2*sin(x)^2','x'))ans =

    -112*x^2*cos(x)*sin(x)+l/6*x^3-l/2*x*cos(x)^2+1l4"cos(x)*sin(x)+114*x5)Podemosexpresarelresultadoanteriorconnotacinmatemtica

    ms elegante:

    pretty(simplify(int('x^2*sin(x)^2','x')

    fl;E

  • a-

    n:al-

    fxr

    ETII

    Tca

    cnpruLo 1. rNTRoDUcclru pncrlcn A MATLAB 11

    7.12x cos(x) sin(x) +L/6x -L/2 xcos(x)1/4 cos(x) sin(x) + L/4 x

    6) Podemos desarrollar en serie de potencias de orden 12 la funcin)^2, presentando el resultado en forma elegante:

    ^2*sin(x)^2',12))68I

    ,. -Llg

    10 L2+ o(x )x +2/45x -L|3LSx

    7) Podemos resolver la ecuacin 3ax-7x^2+x^3=0 (a, es un

    a*x-7*x^2+ x^3 = 0.,'x')

    0lLl2* (49-L2*al n (L/211L/2* (49-L2*al n lL/2) 18) Podemos hallar las cinco soluciones de la ecuacin x^5+2x+1=0:

    rS+2*x+1 ,,,x')

    z 5+2*_2+11

    Como el resultado obtenido no expresa explcitamente las cincoaplicamos el comando "allvalues":

    solve('x^5+2*x+1','x'))

    -=

    I--?01873568855861 9- . 87 96 97 L97 9298240* i):--7018735688558 61 9+ . 87 9697L97 9298240*il

    -.48638903s934s4301

  • -L

    12 ECUACIONES DIFERENCIALES CON MATLAB

    I . 9450680868231334- . 8545175L44390459*ilI . 94s0680868231334+. 8s45175t44390459*il

    Por otra parte, Matlab puede utilizar las libreras del programa MapleV, para trabajar con matemtica simblica y poder extender as su campo de,"in. De eita forma, se puede usar Matlab para trabajar en temas comolas formas diferenciales, la geometra eucldea, la geometra proyectiva, laestadstica, etc.

    A su vez, tambn se pueden ampliar temas del clculo numri@,utilizano las libreras desde Matlab las libreras de Maple (combinatori4optimizacin, teora de nmeros, etc')

    MATLAB Y MAPLE

    Matlab se apoya en las libreras del programa Maple . Siempre qtrsea necesario acudir cualquier comado o funcin de Maple desde Matlah'se utiliza el comando "mapl" seguido de la sintaxis correspondiente en dentorno Maple. Hay que constatai que esta disponibilidad solo es posible sise ha instaiado el ;'Tolbox" de clculo simblico "Extended Symbolic MillToolbox".

    Para utilizar un comando Maple desde Matlab, Ia sintaxis es hsiguiente:

    maple('si ntaxis-del-comando-en-entorno-Maple')o tambin:

    m dpl e's i ntaxis-d e l-co man d o-en-e nto rn o-M a p I e'

    Para utilizar una funcin Maple con N argumentos desde Matlab bsintaxis es la siguiente:

    maple('sintaxis-de-la-funcin-en-entorno-Maple', argumentol,argumento2, ..., argumentoN)

    Veamos algunos ejemplos al respecto.

    1) Podemos calcular el lmite de la funcin (x^3-1)/(x-1) cuando ,--

    maple('limit((x^3'1 )/(x'1),x=l )')

  • ee0h

    cApruLo 1. tNTRoDUccrrrr pRcrtca A MATLAB 13

    ans =

    3

    Tambin podra haberse utilizado la siguiente sintaxis:

    r maple'limit((x^3-l )/(x-1 ),x=1 )';ans =

    3

    2) Podemos calcular el mximo comn divisor entre 10.000 y 5.000:r maple('gcd', 10000, 5000)lfls =

    5{n0

    CNTTCOS CON MATLABMatlab produce grficos de dos y tres dimensiones, as como

    mntornos y grficos de densidad. Se pueden representar los grficos y listarbs datos, permite el control de colores, sombreados y otras caractersticasde los grficos, tambin soporta grficos animados. Los grficos producidospor Matlab son portables a otros programas.

    Veamos algunos ejemplos de grficos con Matlab't) Podemos representar la funcin xSeno(1/x) para x variando

    efitre -xl4 y ru/4, tomando 300 puntos equidistantes del intervalo. Ver figura1.1

    r r=linspace(-pi/4,pi/4,300) ; y=x.r'sin(1./x)' plot(x,y)

    o,a,

    ueb,el

    rsirth

    la

    l, la

    ->1:

  • 74 ECUACIONES DIFERENCIALES CON MATLAB

    Figura 1.1

    2) Podemos dotar al grfico anterior de las opciones de marco yrejilla, as como de ttulo para el propio grfico y etiquetas para sus ejes. Verfigura 1.2.

    x=l i nspa ce(-pil 4,pil 4,300) ; y=x.*sn(1./x); plot(x,y); grid; xlabel('Variable independiente X'); ylabel('Variables dependientes Y, Z'); title('Funciones Seno y Coseno sobre los mismos ejes')

    FuncioFe6 EEno y Coso sohre los mismas ejeE

    Figura 1.2

    3) Podemos generar un grfico de superficie paru laz=Sen(sqrt(yt')+y^2)lsqrt(x^2+y^2), haciendo variar x e y en el inte-.

    =

    valores (-7.5,7.5), tomando puntos equidistantes en 5 dcimas . Ver flq--.

    o.E

    -E

    -

    4-q

    E n,:g

    -.2

    -,4r0 E A.6 .il.{- -A_2 tr_: [.4 0.5 O.EVarisble independaeIe X

  • CAPTULo 1. INTRoDUCCIN PRCTICA A MATLAB 15

    v!r

    x=-7.5:.5:7.5; Y=x; [X,Y]=ss h g rid(x,y) ; Z=sin(sqrt(X.^2+Y.^2))./sqrt(x. ^2+Y .^21:' surf(X,Y,Z)

    Estos grficos tridimensionales permiten a la perfeccin hacerse unaidea de las figuras en el espacio, y son muy tiles a la hora de determinarvisualmente intersecciones entre distintos cuerpos, generacin devolmenes de revolucin y desarrollos de todo tipo.

    4) Podemos generar un grfico tridimensional, correspondiente a lahlice en coordenadas paramtricas: x=Sen(t), y=Cos(t), z=t. Ver figura 1.4.

    t=0:pi/50:1O*pi; plot3(si n(t),cos(t),t)

    )nb

    Figura 1.3

    Figura 1.4

  • 16 ECUACIONES DIFERENCIALES CON MATLAB

    Podemos representar una curva plana dada por sus coordenadrepolares r= Cos(2t).Sen(2t) paratvariandoentre 0yn, tomando puntcequidistantes una centsima en el intervalo considerado. ver figura 1.5.

    t=0:.1:2*pi; r=sin(2*t).*cos(2*t); polar(t,r)

    Figura 1.5

    6) Podemos realizar un grfico de una funcin considerada comosimblica, utilizando el comando "ezplot". Ver figura 1-6

    },=',131tn2-11';r ezplot(y,[-5,5])

    1

    0

    -1rt

    x"3t{x^2- 1 )

    '5 I

    En elconceptos.

    Figura 1-6

    correspondiente captulo de grficos ampliaremos estos

  • AS

    OS

    no

    tos

    cnpiruro 1. rNrRoDuccrru pnclrca A MATLAB 17

    }IOTACION GENERALSiempre que se utiliza un programa, es necesario conocer las

    caractersticas generales sobre notacin, con la finalidad de introducirnos enla prctica con el mismo. La mejor forma de aprender Matlab es utilizar elprograma. Cada ejemplo consiste en el input del usuario encabezado con elprompt "" y la respuesta de Matlab en la lnea siguiente. Ver figura 1-7.

    En otras ocasiones, y dependiendo del tipo de entrada (input deusuario) que se le proponga a Matlab, devuelve la respuesta utilizando laexpresin "ans= n'. Verfigura 1-8

    :- 2*2

    lt

    Es necesario poner atencin en la diferencia entre maysculas yminsculas, eltipo de parntesis o corchetes, la cantidad de espacios y en Iapuntuacin (comas, puntos y comas).

    mBads to qet started: intro, dmo, help hetpomnands fop nore inforntion: help, uhatsneu, info, subscribe

    A:[123;456;7ACl

    Figura 1-7

    Figura 1-8

  • 18 ECUACIONES DIFERENCIALES CON MATLAB

    AYUDAS CON COMAI\DOSYa hemos visto en el captulo anterior cmo se obtena ayuda

    utilizando los mens desplegables de Matlab.

    Pero, adems, la ayuda tambin puede obtenerse a travs decomandos (instrucciones o funciones), implementados como objetos deMatlab.

    Se puede utilizar la ayuda de acceso inmediato para acceder adiversa infor-macin utilizando el comando help.

    helpHELP topics:

    matlab\qeneraJmatTab\opsnatlab\lanqmatlab\elmatmatfab\effunmatlab\ specfunmatlab\natfunmatfab\datafunmatfab\pofyfunmatlab\ funfunmatTab\sparfunmatTab\graph2dmatlab\graph3dnatlab\ specqraphmatTab\qraphicsnatfab\uitoolsmatfab\strfunmatfab\iofunmatlab\tinefunmat fab\datatypesmatfab\winfun(DDE/ActiveX)matlab\demostooJbox\ syrnl:o 11ctoolbox\tourtoofbox\locaf

    GeneraL purpose commands.Operators and speciaf characters,Proqramminq Tanquage constructs.Elementary matrices and matrlx manipulation.Elementary math functions.Specialized nath functions.Matrix functions

    - numericaf finear algebra.Data anafysis and Fourier transforms.Interpofation and poTynomials.Function functions and ODE sofvers.Sparse matrices.Two dimensi onaJ graphs.Three dimensional graphs.Specialized qraphs.Handle Graphics.GraphicaT user interface toofs.Character strings.File input/output.Time and dates.Data types and structures.- ttlindows Operating System Interface Fr,ie-.trxamples and demonstrations.SynboLic Math Toofbox.MATLAB TourPreferences.

    For more help on directory/topic, type ,,help topic,,.como vemos, el comando help muestra una lista de los directori:_-

    del programa y de su contenido. Tambin se puede pedir ayuda sob.=cualquer tema del contenido utilizando el comando help tema. help nv

  • CAPTULO 1. INTRODUCCIN PRCTICA A MATLAB 19

    ideide

    ruda

    era

    ctonossobre

    :iilii- l.larrix inverse.-',-.''Y) is the inve,se-

    ,.,::ning messaqe -is:-==::i y sinqular.-:== a-so SLASH, PINV,

    j,=-''^ded methods:-=- p sym/inv.m

    r lrclp matlab\elfun!-=:=::tary math functions.!:-::::cmetric.

    of the square matrix X.prin' if X is badJv scafed ot

    COND, CONDEST, NNLS, LSCOV.

    Szne.Hyperbolic sine.Inverse sine.rnverse hyperbolic sine.Cos ine .Hyperbollc cosine.Inverse cosine.I nverse hypet bol i c cosine.tattYL!1L.

    HyperboTic tanqent.Inverse tangent.Four quadranL inverse tanqenL.Inverse hyperbolic tanqent.Secant.Hyperbolic secant.Inverse secant.Inverse hyperbolic secant.Cosecant.Hyperbolic casecant.Inverse casecant.Inverse hyperbolic casecant.Cotangent.HyperboTic cotanqent.Inverse catangent.Inverse hyperboTic cotanqent.

    Exponential.Naturaf loqarithm.Common (base 70) loqartthm.

    - Base 2 loqarlthn and dissect floating point

    Base 2 povrer and scafe floating point number.Square raot.Next higher power of 2.

  • 2A ECUACIONES DIFERENCIALES CON MATLAB

    abs

    conjimagreal-unwrapisrealcpTxpair

    Roundinq and

    fixf foorceifroundmodremstqn

    - Alcsofute vafue.

    - Phase angle.-

    Complex conlugate.-

    Complex imaqinary part.-

    Complex reaT part.- Unwrap phase angJe.-

    True for reaf array.-

    Sort numbers into complex conjuqate pairs.remainder.

    - Round tawards zero.- Round towards minus infinity.- Round towards plus lnfinlty.-

    Round towards nearest integer.- Modulus (siqned remainder after division)- Remainder after division.- Siqnum.

    Existe un comando de ayuda sobre una determinada secuencia decaracteres (lookfor secuencia) que permite encontrar todas aquellasfunciones o comandos que se refieren a dicha secuencia o la contienen.Este comando es muy til, bien cuando no se dispone de ayuda directa parala secuencia especificada, o bien para ver la ayuda de todos los comandosque contienen la secuencia. Por ejemplo, si buscamos ayuda para todos loscomandos que contienen la secuencia complex, podemos usar el comandolookfor complex para ver en qu comandos Matlab ofrece informacin alrespecto.

    lookfor complexctranspose.m: Z' Complex conjuqate transpose.CONJ Complex conluqate.CPLXPAIR Sort numbers into complex conjuqate pairs.IMAG Complex imaqinary part.REAL Complex real part.CDF2RDF Complex diagonal form to reaf bfock dlaqonaL form.RSF2CStr Real bfock diagonal form to complex diaqonal form.B5ODE Stiff problem, linear with complex eigenvalues (85 of EHL) .CPLXDEMO Maps of functions of a complex variabfe.CPLXGRID Polar coordinate complex qrid.CPLXMAP Plot a function of a complex variabfe.GRAFCPLX Demonstrates complex function pJots in MATLAB.ctranspose.m: *TRANSPOSE Syml:olic matrix complex conjuq_ __transpose.SMOKE Complex matrix wlth a ,,smoke rinq,, pseudospectrum.

  • ldellasnen.parardoss losndoin al

    capruro 1. TNTRoDUCcTru pnclcnA MATLAB 21

    COMANDOS DE ESCAPE Y SALIDA AL ENTORNO DOSExisten tres formas de salir desde la ventana de comandos de

    lilaab al entorno del sistema operativo MS-DOS para ejecutar tareastsrnporales.

    El comando lorden_dos introducido en la ventana de comandos,rerrnite ejecutar la orden de DOS especificada en ambiente Matlab. Por{prnplo:r ldir:- -clumen de fa unidad D no tiene etiquetal- ::fmero de serie def vcfumen es 145C-72P2l-:=ctorio de D : \MATLAB52\bin

    =,- -

    ta"S BAT:-: _10 DLL:3E-Z BAT::W-)OL BAT:':

    -:?TS BAT;I;: DLL:Tr-- DLL.}E{ BAT-

    _-t- _1;sE DATm,_:_,:-

  • 22 ECUACIONES DIFERENCIALES CON MATLAB

    r,},,t;

    i.r

    ir;i..*;B

    Li:

    Figura 1-9

    El comando orden_dos I se utiliza para ejecutar la orden del Doscon pantalla de Matlab.

    con los tres comandos anteriores, no slo pueden ejecutarsecomandos del DOS, sino tambin todo tipo de ficheros ejecutables o tareasbatch.

    El comando dos orden-dos se utiliza tambin para ejecutar la ordendel DOS en modo automtico sobre la ventana de comandos de Matlab.

    Para salir definitivamente de Matlab, basta con teclear quit en laventana de comandos y, a continuacin, pulsar Enter.

    MATLAB Y LA PROGRAMACINCombinando adecuadamente todos los objetos definidos en Matlab,

    adecuados a las reglas de trabajo definidas en el programa, se puedeconstruir un cdigo de programacin muy til en la investigacin matemtica'Los programas consisten habitualmente en una serie de instrucciones en lasque Se calculan valores, se les asigna un nombre y se reutilizan en clculosposteriores.

  • EI DOS

    cutiarser tareas

    a ordenab.

    It en Ia

    Madab,puede

    mca. en laslculm

    cnprulo 1. rNTRoDUcclru pncrca A MATLAB 23

    Al igual que en lenguajes de programacin como C o Fortran, ense pueden escribir programas con bucles, control de flujo e

    condicionales. En Matlab se pueden escribir programastales, es decir, definir una secuencia de pasos estndar a

    Como en C o en Pascal, se puede realizar un clculo repetitivoDo, For o While. El lenguaje de Matlab tambin incluye

    iones condicionales como lf Then Else. Matlab tambin soportafunciones lgicas, como And, Or, Not y Xor.

    Matlab soporta la programacin procedimental (con procesosrecursivos, bucles...), la programacin funcional y la

    in orientada al objeto. Veamos dos ejemplos sencillos deras. El primero genera lamafriz de Hilbert de orden n ,y el segundoIos nmeros de Fibonacci.

    ndo la matriz de Hilbert de orden n'ttfr+j-f )';

    = l:nftri ='la(ii) = eval(t);

    cnd

    los nmeros de Fibonacci$ll;i=l;(i)+f(-r)

  • Captulo 2

    ECUACIONES DIFERENCIALES DER ORDEN. ECUACIONES EXACTAS,

    EN VARIABLES SEPARADAS,HOMOGENEAS Y LINEALES

    MUACIONES DIFERENCTALES DE PRIMER ORDENEtr nmero de comandos que implementa Matlab relativos a este tema

    rrry elevado, pero s muy eficiente. De todas formas, es posible seguirFo{lzrma los mtodos algebricos de resolucin ya conocidos para

    fro de ecuacin diferencial. Tambin se implementan mtodos deaproximados de ecuaciones y sistemas de ecuaciones diferenciales.

    E comando bsico para resolucin de ecuaciones diferenciales esEste comando computa soluciones simblicas de ecuaciones

    ordinarias y sistemas. Las ecuaciones son especificadas porsimblicas conteniendo la letra D para denotar diferenciacin, o

    D2, D3,...,etc, para denotar diferenciacin de orden 2,3,...,etc. Aln de la letra D se sita la variable dependiente (que suele ser y),

    letra no precedida por D es un candidato a variable. Si no se especifica la variable independiente, por defecto es

    se especifica como variable dependiente, la variable independiente esr es la variable independiente por defecto, y en segundo lugar t.

  • 26 ECUACIONES DIFERENCIALES CON MATLAB

    Se pueden especificar condiciones iniciales en ecuacionesadicionales, mediante la forma y(a)=b o Dy(a)=b,...,etc. Si las condicionesiniciales no se especifican, las soluciones de las ecuaciones diferencialescontienen constantes de integracin C1 , C2, ..., etc. Los comandos msimportantes de Matlab que resuelven ecuaciones diferenciales son lossiguientes:

    dsolve('ecuacin','v')Resuelve la ecuacin diferencial siendo v lavariable independiente (si no se especifica 'v', lavariable independiente es x). Solo devuelvesoluciones explcitas

    dsolve('ecuacin','condicin_inicial',...,'v')Resuelve la ecuacin diferencial sujeta a !acondicin inicial especificada

    dsolve('ecuacin','cond1','cond2',...,'condn','v')Resuelve Ia ecuacin diferencial sujeta a lascondiciones iniciales especificadas

    dsolve('ecuacin', 'cond1, cond2,..., condn' , 'v')Resuelve la ecuacin diferencial sujeta a lascondiciones iniciales especificadas

    dsolve('ec1' r'ec?' r..,r'ecn','condl','cond2'r...,'condn','v')Resuelve el sistema diferencial sujeto a lascondiciones iniciales especificadas (explcitas)

    dsolve('ec1, ec2,..., ecn', 'cond1, cond2,..., condn' , 'v')Resuelve el sistema diferencial sujeto a lascondiciones iniciales especificadas

    maple('dsolve(ecuacin, func(var))')Resuelve la ecuacin diferencial, considerando varcomo variable independiente y func como variabledependiente (devuelve soluciones implcitas)

    maple('dsolve({ecuacin, cond1,cond2, ....condn}, func(var))')

  • -leS]esilesnslos

    t, l?

    io varriable

    s)

    CAP|TULO 2. ECUACIONES DIFERENCIALES DE PRIMER ORDEN 27

    Resuelve la ecuacin diferencial sujeta a lascondiciones iniciales especificadas

    maple('dsolve({ec1, ec2,..,ecn}, {func1(var), func2(var),...,funcn(var)})')Resuelve el sistema de ecuaciones diferencialesespecificado (devuelve soluciones implcitas)

    maple('dsolve(ecuacin, func(var),'explicit')')Resuelve la ecuacin diferencial, ofreciendo lasolucin en forma explcita, si es posible

    A continuacin se mostrarn algunos ejemplos.

    Resolvemos en primer lugar ecuaciones diferenciales de primeroreden y primer grado, sin y con valores iniciales.

    pretty(dsolve('Dy = a*y'))exp(a x) Cl

    pretty(dsolve('Df = f + sin(t)'))- l/2 cos(t) - l/2 sin(t) + exp(t) Cl

    Las dos ecuaciones anteriores tambin pueden resolverse de lasuiente forma:r pretty(maple('dsolve(d iff(y(x),x)= a*y,y(x))'))

    y(x) : exp(a x) _Cl

    pretty(maple('dsolve(diff(f(t),t)=f+si n(t),f(t))'))f(t): - 1/2 cos(t) - I/2 sin(t) + exp(t) _Cl

    r pretty(dsolve('Dy = a*Y', 'y(0) = b'))exp(a x) b

    r pretty(dsolve('Df = f + sin(t)','f(pi/2) = g'exp(t)

    - l/2 cos(t) - 1/2 sin(f) + 1/2 **-----exp(l/2 pi)

    Ahora resolvemos una ecuacin de segundo grado y primer orden.

  • 28 ECUACIONES DIFERENfCIALES CON MATLAB

    1 = 6lssre('(Dy)^2 + yn2 = 1', 'y(0) = 0', 's')

    I sin(s)]l-sin(s)lque tambin puede resolverse de la siguiente forma:

    pretty(maple('dsolve({diff(y(s),s)^2 + y(s)"2 = l, y(0) = 0}, y(s))'))y(s)

    - sin(s), y(s) : - sin(s)

    Ahora resolvemos una ecuacin de segundo orden y prmer grado'

    pretty(dsolve('D2y ='an2ny', 'y(0) = 1, Dy(pi/a) = 0'))cos(a x)

    A continuacin resolvemos sistemas sin y con valores iniciales.

    pretty(dsolve('Dx = Y','DY ='x'))x(t) : Cl sin(t) + C2 cos(t), y(t) - Cl cos(t) - C2 sin(t)

    pretty(dsolve('Df = 3*f+4*9', 'Dg = '4*f+3*g'))S6) : - C2 exp(3 x) sin(4 x) + Cl exp(3 x) cos(4 x),

    f(x) : Cl exp(3 x) sin(4 x) + C2 exp(j x) cos(4 x) pretty(dsolve('Df = 3*f+4*9, Dg = {*f+$*g', 'f(0)=0, g(0)=1'))

    S(x) : exp(i x) cos(4 x),f(x) - exp(3 x) sin(4 x)Este ltimo sistema puede resolverse tambin de la siguienE

    forma:

    pretty(maple('dsolve({diff(f(x),x)= 3*f(x)+4*g(x), diff(g(x),x)=4*f(x)+3*9fiLf(0)=0, g(Q)=l ), ff(x), g(x)))'))

    {f(x) : exp(3 x) sin(4 x), g(x) - exp(3 x) cos(4 x)}

    2.2 E,CUACIONES El\ VARIABLES SBPARADASUna ecuacin diferencial en variables separadas presenta la fonna

    f(x)dx = g(y)dy. La resolucin de este tipo de ecuaciones es inmediataponendo it(x)Ox = J g1ydy +C.

  • ado.

    uiente

    99(x)"

    a fonnanediata

    CAPITULO 2. ECUACIONES DIFERENCIALES DE PRIMER ORDEN 29

    Si Matlab no resuelve directamente la ecuacin diferencial conffimcin dsolve, entonces se sigue el mtodo algebrico usual, quep'esenta dificultades especiales para el programa, dada su versatilidadd clculo simblico.

    lanoen

    En primer lugar intentamos resolverla directamente. La ecuacinplede ponerse de la forma:

    Cos Ix] y Ix]j

    -^j2

    1 + y[x]r dsolve('Dy=y*cos(x)/(l +y^2)')'".' Error using ::> tor"@{fuir solution could not befound.

    Luego la ecuacin diferencial no es resoluble con dso/ye.

    Aplicaremos el mtodo algebrico usual de resolucin de lasesuaciones diferenciales en variables separadas (separando variables).r pretty(solve('i nt(cos(x),x)= nt(( 1 +y ^2) ly,y)'l)

    asin(Joqy +1/2v)La funcin solucin ser x=asin(log(y)+112 y2), o lo que es lo

    msmo:

    sir(x)=log(y)+112 y2 + CAhora hallamos el valor C para x=0 e y=1.

    r C=simple('solve(subs(x=0,y=l,sin(x)=l6g ly)+l l2*y^2+G),C)')ra-

    --t lLa funcin solucin ser sin(x)=log(y)+1t2y' - 112

  • 30 ECUACIONES DIFERENCIALES CON MATLAB

    De la misma forma se puede resolver cualquier otra ecuacindiferencial en variables separadas.

    Esta ecuacin diferencial tambin es resoluble directamenEutilizando:

    pretty(maple('dsolve(diff(y(x),x)=y(x)ncos(x)/(1 +y(x)"2),y(x))'))

    loq (y (x) ) + 1/2 y (r)2 - sin (x) : -

    C7

    2.3 BCUACIONES DIFERENCIALES HOMOCXNTSConsideremos una ecuacin diferencial general de primer grado y

    primer orden puesta en la forma M(x,y)dx=N(x,y)dy. Esta ecuacin se dieque es homognea de grado n, si lo son a lavez lasfunciones M y N, esdecir, si se cumple simultneamente:

    M(tx,tY)=t n M(x,Y)N(tx,tY)=t n N(x,Y)

    Para este tipo de ecuaciones, el cambio de la variable x por lavariable v tal que x=vy, transforma Ia ecuacin diferencial inicial (devariables x e y) en otra de variables separadas (de variables u e y). Seresuelve la ecuacin en variables separadas y posteriormente se deshaceel cambio.

    Vamos a resolver la ecuacin por el mtodo algebrico ordinariopara ecuaciones diferenciales homogneas. En primer lugar comprobamossi la ecuacin es homognea

    maple('m ;=(x,y)-)x^ 2-y n2'l;> maple('n =(x,y)->x*y') ; facto('m(t*x,t*y)')

    t^2*(x-y)*(x+y)

    factor('n(t*x,t*y)')

    L

  • on

    CAPTULO 2. ECUACIONES DIFERENCIALES DE PRIMER ORDEN 31

    t"2*x*y

    Luego la ecuacin es homognea de grado 2. Para resolverlaaplicamos el cambio de variable x=vy.

    Antes de realizar las operaciones del cambio de variable, esconveniente cargar la librera difforms, mediante el comandomaple('with(difforms)'), que nos permitir trabajar con formasdiferenciales. Una vez cargada esta librera tambin es conveniente utilizarel comando maple('defform(v=0,x=0,y=Q)', que permite declarar todaslas variables que no van a ser constantes o parmetros en ladiferenciacin.

    maple('with(difforms)');r maple('defform(v=0,x=0,y=Q)')'

    Ahora realizamos ya el cambio de variable x=vy, y agrupamostrminos en d(v) y d(y).

    :rrsrm

    e fy('su bs(x=v*y,m(x,y)*d (x)+n(x,y)*d(y))')

    v^2 *y^ 3 * d(v) +v^3 *y" 2 * d (y) -y"3 * d (v)

    pretty(maple('collect(v^2*y^3*d(v)+v^3*y^2*d(y)-y^3*d(v),{d(v),d(V)})'))233 32(v y -y)d(v)+v y d(y)

    Si dividimos la expresin anterior por v3 y3 , y agrupamos trminosen d(v) y d(y), tenemos ya una ecuacin en variables separadas. pretty(maple('collect(((v^2*y^3-y^3)*d(v)+v^3*y^2*d(y))/(v^3*y^3),{d(v),d(y)})'))

    23

    Ahora obtenemossimplificados totalmente.

    (v y -y)d(v) d(y)

    --- + ----33vvy

    la expresin anterior con todos sus trminos

    'rte

    oyliceCS

    rla(deSe

    are

    ffiariomos

  • 32 ECUACIONES DIFERENCIALES CON MATLAB

    pretty(maple('convert(collect(((v^2*y^3-y^3)*d(v)+v^3*y^2*d(y)/(v^3*y^3),{d(v),d(y)}), parfrac,y)'))

    2

    !: _ _ _ _1_'_ _1!Y'_ . 1!u_',_

    ,tYAhora resolvemos la ecuacin en variables separadas

    pretty(simple('i nt((v^ 2-1llv ^3,v1+ nt(1 /y,y)'))1

    loq(v) +----+loq(y)2u2

    Ahora deshacemos el cambio de variable

    pretty(simple('subs(v=ly,log (v)+1 l2lv "2+log(y))'))2

    -Los (x) * tlz -!--*'

    Ya estamos en condiciones de escribir la solucin general de laecuacin diferencial inicial.

    2v

    log(x) + 112 ----- = C2

    X

    Ahora se representan grficamente las soluciones de esta ecuacindlferencial. Para ello nos basamos en que el grfico de la familia desoluciones con parmetro c, es equivalente al grfico de las curvas denivel correspondiente a la ecuacin sin constante (figura 18-1) [x,y]=mes hgrid(0. I

    =0.05:1 12,-1 : 0.05 : I ) ;y 2=y.^2 J (2*x. ^2)+l og () ; contour(2,65)

  • y^3),

    de la

    uaclonilia devas de

    cnprulo 2. EcuActoNEs DtFERENctALEs DE pRtMER oRDEN 33

    4rl

    J5

    30

    lq

    2U

    15

    1

    5

    Figura 2-1

    2.4 ECTJ ACIONES DIFEREI\CIALES EXACTASLa ecuacin diferencial M(x,y)dx+N(x,y)dy=0 es exacta si se cumple

    que N/x = 1Mly.Si una ecuacin diferencial es exacta, existe unafuncin F tal que su diferencial total dF coincide con la ecuacin, o sea:

    dF=M(x,y)dx+N(x,y)dypor lo tanto F(x,y)=c ser la familia de soluciones de la ecuacindiferencial.

    A continuacin se muestra un ejercicio que sigue el mtodoalgebrico normal de resolucin de este tipo de ecuaciones.

    En primer lugar intentamos resolver la ecuacin con dso/ye maple('m ; =(x,y)->'l +y*exp(x*y)+y*cos(x*y)') ; maple('n : =(x,y)->1 +x*exp(x*y)+xncos(x*y)') ; dsolve('m(x,y)+n(x,y)*Dy=Q')??? Error using::> tornExplicit solution could not be found.

    Se observa que la funcin dsolve nopropuesta. Vamos a intentarlo por el mtodoresolucin de ecuaciones diferenciales exactas.

    resuelvealgebrico

    Ia ecuacinclsico de

  • 34 ECUACIONES DIFERENCIALES CON MATLAB

    En primer lugar comprobamos si la ecuacin diferencial propuestaes realmente exacta

    pretty(si mple(d iff('m(x,y)','y')))exp(y x) + x y exp(y x) + cos(y x) - x sin(y x) y

    pretty(simple(diff('n(x,y)','x')))exp(y x) + x y exp(y x) + cos(y x) - x sin(y x) y

    Por ser exacta, su solucin se puede hallar de la siguiente forma:

    sol ucion I =simplify('i nt(m(x,y),x)+g(y)')solucionl :

    -x + exp (y *x) 1 s in (y*x) + g(y)

    Ahora calculamos la expresin de la funcin g(y), bajo la siguientecondicin : diff(int(m(x,y),x)+g(y),y)=n(x,y)

    pretty(simpl ify('i nt(m(x,y),x)+g(y)'))- x + exp(y x) + sin(y x) + g(y)

    pretty(simplify('diff(-x+exp(y*x)+sin(y*x)+g(y),y)'))d

    x exp(y x) + x cos(y x) * -;rfrr,

    simplify('solve(x*exp(y*x)+x*cos(y*x)+dff(g(y),y)=n(x,y),diff(g(y),y))')ans :

    I

    Luego 9'(y)=1, con lo que la solucin final ser, salvo constante: pretty(simplify('subs(g(y)=int(l,y),-x+exp(y*x)+sin(y.x)+g(y))'))

    - x + exp(y x) + sin(y x) + yPara representar grficamente la familia de soluciones, graficamos

    las curvas de nivel de la solucin sin constante (figura 18-2) [x,y]=meshgrid('2*pil3:.2:2* pilSl:'r z=-X+XP(y.*x)+s n(y.*x)+y; contour(2,100)

  • CAPTULO 2. ECUACIONES DIFERENCIALES DE PRIMER ORDEN 35

    Ha

    fite

    Figura 2-2

    De la misma forma se puede resolver cualquier ecuacin diferencialreducible a exacta mediante un factor integrante.

    2.5 ECUACTONES DIFERENCIALES LINEALESUna ecuacin diferencial lineal de primer orden es deltipo:

    dy/dx + P(x)y = Q(x) con P(x) y a(x) polinomios.Las ecuaciones diferenciales de este tipo se transforman en

    exactas mediante el factor integrante:

    J P(x)oxe

    y su solucin general viene dada por la expresin:

    J p(x)ox I e1xox(e )(le Q(x)dx)Matlab implementa estas soluciones de las ecuaciones

    diferenciales lineales, y las ofrece siempre y cuando la integral del factorintegrante sea evaluable para el programa.

    pretty(s i m ple(dsolve('x*Dy+t*y=x*s i n (x)')))sin (x) cos (x) C1

    - 6 sin (x)

    - cos(x) + 3 ------ + 6 -----* + --------x23

    hr

    I

    18

    .18

    ,14

    lr1D

    I

  • 36 ECUACIONES DIFERENCIALES CON MATLAB

    Otra forma ms eficiente de resolucin de la ecuacin diferencial,que incluye soluciones implcitas, es la siguiente:

    pretty(simplify('dsolve(x*diff(y(x),x)+3*y1x)=x*si n(x),y(x))'))32'

    x cos(x) - 3 x sin(x) + 6 sin(x) - 6 x cos(x) - _C7

    Y l"/ -

    ---------;

  • al,

    Captulo 3

    ECUACIONES DIFERENCIALES DE ORDENST]PEROR TRANSFORMADADE LAPLACE Y

    TIPOS ESPECIALES DE ECUACIOI{ES

    3.1 ECUACIONES ORDINARIAS DE ORDEN SUPERIORLas ecuaciones diferenciales lineales ordinarias de orden n

    tienen la siguiente forma general:

    n (k) (n)I ak(x) y (x)=a0(x)y(x)+a1 (x)y'(x)+l(x)y"(x)+....+ an(x)y (x)=f(x)

    k=0

    Si la funcin f(x) es idnticamente nula la ecuacin se llamahomognea y si f(x) no es Ia funcin cero, la ecuacin se llama nohomognea. Si las funciones ai(x) (i=1...n) son constantes, la ecuacin sedenomina en coeficientes constantes.

    Un concepto de gran inters aqu va a ser el de conjunto defunciones linealmente independientes. if1(x), f2(x),....,fn(x)) es unconjunto de funciones linealmente independientes si para algn x delintervalo comn de definicin, el determinante wronskiano de las funcioneses no nulo. El determinante wronskiano de las funciones, en cualquierpunto x de su campo de definicin comn, se define de la siguiente forma:

  • 38 ECUACIONES DIFERENCIALES CON MATLAB

    f1(x)f1'(x)f1"(x)

    f2(x) f3(x).......,............,.fn(x)f2' (x) f3'(x).....................fn'(x)f2" (x) f3"(x)....................fn"(x)

    = W(x)(n-1) (n-1) (n-1) (n-1)f1 (x) f2 (x) f3 (x).................fn (x)

    Matlab dispone del comando maple('Wronskian') que permitecalcular la matriz wronskiana de un conjunto de funciones. Su sintaxis es:maple('Wronskian(V,variable)')

    Calcula la matriz wronskiana correspondiente alvector de funciones V de variable independiente x

    Un conjunto S = {f1(x),.....,fn(x)} linealmente independiente desoluciones no triviales de la ecuacin lineal homognea de orden n:

    (n)a0(x)y(x)+1 (x)y'(x)+2(x)y"(x)+....+ an(x)y (x) = 0se llama conjunto fundamental de soluciones de la ecuacin.

    Si las funciones ai(x) (i=1....n) son continuas en un intervalo abiertol, entonces la ecuacin homognea tiene un conjunto fundamental desoluciones = {fi(x)} en i.

    Adems, la solucin general de la ecuacin homognea venddada por la funcin:

    n

    f(x) = ci fi(x) donde {ci} es un conjunto de constantes arbitrariasi=0

    La ecuacin:2nni

    a0+a1 m+a2m + ...... +anm =I ai m=0i=0

    se denomina ecuacin caracterstica de la ecuacin diferencidhomognea en coeficientes constantes. Las soluciones de esta ecuacincaracterstica van a determinar las soluciones de la ecuacin diferencidlineal homognea general en coeficientes constantes.

    t-

  • CAPTULO 3. ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR 39

    lite;t-I

    i

    talEx,deIi

    Prtold"I

    ldr

    funciones=maple('vector([exp(x),xnexp(x), x^2*exp(x)])')funciones

    I up (*), x*exp (x), x^2 * exp (x)J

    >r W=maple('Wronskian(funciones,x)')W:

    k*p6), x*exp(x), x"2*exp(x)l[exp(x), exp(x)+x*exp(x), 2*x*exp(x)+x"2*exp(x)Jkxp (x), 2 *exp (x) +x*exp(x), 2 *exp(x) + 4*x*exp (x) +x"2 *"*p (*)l pretty(determ(W))

    32 exp(x)

    Ya tenemos el valor del wronskiano, que evidentemente es siempredistinto de 0, luego el conjunto de funciones es linealmente independiente.

    3.2 ECUACIONES LINEALES DE ORDEN SUPERIORHOMOGENEAS EN COEFTCIENTES CONSTAITES.

    La ecuacin diferencial lineal homognea de orden n:(n)

    aO(x)y(x)+a1 (x)y'(x)+2(x)y"(x)+....+ an(x)y (x) = 0se dice que es de coeficientes constantes cuando las funciones ai(x)(i=1,..,n) son todas constantes (no dependen da la variable x).

    La ecuacin:2

    a0+a1 m+a2m + ...... +anm

    se denomina ecuacin caracterstica de la ecuacin diferencialhomognea en coeficientes constantes. Las soluciones de esta ecuacincaracterstica (m1 , fr2, ...mn) van a determinar las soluciones de laecuacin diferencial lineal homognea general en coeficientes constantes.

    nt=I ai m=0

    i=0hcialErcNit*rl

  • 40 ECUACIONES DIFERENCIALES CON MATLAB

    Si los mi (i=1..n) son todos distintos, una solucin general de laecuacin homognea en coeficientes constantes es:

    m1 x m2x mnxy(x) =c1 e + c2e + ...... +cn ec1, c2,...., cfl son constantes arbitrarias que determinan la familia desoluciones de la ecuacin diferencial.

    Si algn mi es una raz de multiplicidad k de la ecuacincaracterstica, determina los siguientes k trminos de la solucin:

    mix mix 2 mix k mixcie +c(i+1)xe +c(i+2)x e +........ +c(i+k)x e

    Si existe alguna raz compleja mj= a+bi de la ecuacincaracterstica, entonces tambin existe la raz compleja conjugada a-bi.

    Estas dos races determinan simultneamente el siguiente par detrminos de la solucin generalde la ecuacin homognea:

    cj e Cos(bx)+c(i+1)e Sen(bx)Matlab aplica directamente este mtodo de obtencin de las

    soluciones de las ecuaciones lineales homogneas en coeficientesconstantes, al utilizar el comando dsolve o maple('dsolve').

    pretty(dsolve('3*D2y+2*Dy-5*y=0'))Cl exp(x) + C2 exp( 5/j x)

    pretty(dsolve('2*D2y+5*Dy+5*y=0','y(0)=0, Dy(Q)=l /!'t/2 1/2 1/2 1/2

    2/15 3 5 exp( 5/4 x) sin(l/4 3 5 x)

    pretty(simple(dsolve('9*D4y-6*D3y+46*D2y-6*Dy+37*y=g'

  • rmilia &

    ecracilim

    ecuacIlftgada a{"nte Par

    cnprulo 3. EcuActoNES DtFERENctALES DE oRDEN supERtoR 41

    I l) sin(2x) + C2 exp(l/i x) cos(2 x) + C3 sin(x) + C4 cos(x)Si nos fijamos en la solucin, es evidente que la ecuacin

    tiene dos pares de soluciones complejas conjugadas.

    ^4-6kx^ 3+46*x^2 -6*x+37=0')

    Tambin puede resolverse la ecuacin de la forma siguiente:

    ple('dso Ive(9.d iff(y(x),x$4) -6*d iff(y(x),x$3)+46.d iff(y(x),x$2)-,x)+37*y(x)=0,y(x))'))

    3 xt sin(2 x)+ _C2 exp(l/3 x) cos(2 x)+ _C3 sin(x)+ C4 cos(x)

    ACIONES 1\O HOMOGNEAS CON COEFICM,NTESIONSTAI\TES, VARIACION DE PARAMETROS

    Dada la ecuacin lineal no homognea en coeficientes constantes:(k) (n)y (x)=a0(x)y(x)+at (x)y'(x)+l(x)y"(x)+....+ an(x)y (x)=f(x)

    1(x), y2(x),.....,yn(x)) un conjunto de soluciones linealmentede la correspondiente ecuacin homognea:

    n

    )+a1 (x)y'(x)+a2(x)y"(x)+....+ an(x)y (x)= 0Una solucin particular de la ecuacin no homognea viene

    pot.n

    I ui(x) yi(x) donde las funciones ui(x) se obtienen como sigue:1

    f(x) Wi (y1 (x), y2(x),.....,yn(x))

    W (y1 (x), y2(x),.....,yn(x))

  • 42 ECUACIONES DIFERENCIALES CON MATLAB

    Wi (y1(x), y2(x),....,yn(x)) es el determinante de la matriz que resulta alsustituir la i-sima columna del Wronskiano W(y1(x), y2(x),.....,yn(x)), por eltranspuesto del vector (0,0,.....,0, 1 ).

    La solucin general de la ecuacin no homognea viene dadapor la solucin de la homognea ms la solucin particular de la nohomognea, y tendr la forma:

    m1 x m2x mnxy(x)=c1 e +c2e+......+cne + Yp(x)supuestas las races mi de la ecuacin caracterstica de la homogneatodas distintas. Si no lo fueran, nos remitimos a la forma general de lasolucin de una ecuacin homognea, que ya hemos estudiado antes.

    Vamos a seguir el camino algebrico del mtodo de variacin deparmetros para resolver la primera ecuacin. Consideramos la ecuacincaracterstica de la homognea para obtener un conjunto de solucionelinealmente independientes.

    r solve('ma24*+1 3=0')ans :

    [-2+i*t-2-3*vl

    maple('f :=x->x*cos(3*x)^2') ; maple('y1 :=x->exp(-2*x)*cos(3*x)');> maple('y2 : =x-)xp(-2*x)*si n(3*x)') ; maple('W=-)Wrorskian([yl (x),y2(x)],x)') ; pretty(si mplify(maple('det(W(x))')))

    j exp( 4 x)Ya tenemos el wronskiano no nulo, lo que indica que las

    son linealmente independientes. Ahora calculamos las funcionesi=1,2

    > maple('Wl :=x->array([[0,y2(x)],[1,diff((y2Xx),x)]l)'); pretty(simplify(maple('det(W1 (x))')))

    \-

  • EFIF: ,IW,LiE-:- |E:I&Jrdecinnes

    ta alor el

    Jadalno

    ineabla

    nesi(x)

    cnpruro 3. EcUACtoNES DtFERENCIALES DE oRDEN supERtoR 43

    - exp( 2 x) sin(3 x) maple('W2:=x>array(tly1 (x),01,[diff((y1 )(x),x), 1 ]l)'); pretty(si m pl ify(maple('det(W2(x))')))

    exp( 2 x) cos(3 x)Ahora calculamos la solucin particular de la ecuacin no

    homognea.r maple('ul:=x->factor(simplify(int(f(x).det(Wf (x))/det(W(x)),x)))'); maple('ul(x)')

    I 14652300*exp(2*x)*(129285*cos(9*x)*x-6084*cos(9*x)-28730*sin(9*x)*x-I 30 1 3*sin(9*x)+28 I 775*cos(3*x)*x-86700*cos(3*x)- I 87850*sin(3*x)*x-361 25*sin(3*x))

    maple('u2:=x->factor(simplify(int(f(x).det(W2(x))/det(W(x)),x)))'); maple('u2(x)')

    l.' I 4 6 5 2 3 00*exp(2 *x) * ( 5 6 3 5 5 O*cos (3 *x) *x+ I 08 3 7 5 *cos (3 *x) + B 4 5 3 2 5 *s in(3 *x) *x-)60100*sin(3*x)+287j0*cos(9*x)*x+13013*cos(9*x)+ 129285*sin(9*x)*x-6084*sin(9*x))

    > maple('yp :=x-)factor(si mpl ify(y1 (x)*u 1 (x)+y2(x)*u2(x)))') ; maple('yp(x)')

    - 2 3 / 1 1 0 5 *x*cos (3 *x)"2 + 1 3 4 3 6/ I 2 2 I 0 2 5 *cos (3 *x)"2 + 2 4/ I I 0 5 *cos (3 *x) *sin(3 *x) *x+ 3 8 5 2 / I 2 2 I 0 2 5 *cos (3 *x) *sin(3 *x) + 5 4/ I I 05 *x- 2 I I 68/ I 2 2 I 02 5

    Luego ya podemos escribir la solucin general de la no homognea

    m a p I e ('y : =x .> s m p I ify( c I *y 1 (xl+ c2* y 2{x) +yp (x} }' ) ;

    :,: 0,",'"om b i ne(y(x),tris)')

    c 1 *exp (- 2 *x) *cos (3 *x) + c2 *exp(2 *x) *sin(j *x)-2 3 /2 2 I 0*x*cos (6*x) +1/26*x+6718/1221025*cos(6*x)-2/169+12/1105*x*sin(6*x)+ 1926/1221025*sin(6*x)

    Ahora representamos grficamente un conjunto de soluciones, paradeterminados valores de c1 y c2 (figura 18-3) fplot(simpl ify('su bs(c1 =-5,c2=-4,y(x))'), [-1, I ]) hold on fplot(si mpl ify('s ubs(c1 =-5,c2=4,y(x))'), [-1, I ]) fplot(simplify('subs(c1 =-5,c2=2,y(x))'),[-1, I ])

  • 44 ECUACIONES DIFERENCIALES CON MATLAB

    fplot(simplify('subs(cl =-5,c2='2,y(x))'),['1,1 ]) fplot(simplify('subs(c1 =-5,c2=-l,y(x))'),['1,1]) fplot(simplify('subs(cl =-5,c2=1,y(x))'),[-1,1 ]) fp lot(s i m pl ify('su bs (c1 =5,c2='l,y(x))'), [-1, 1 ]) fplot(simplify('subs(c1 =5,c2=-1,y(x))'),['1,1])> f pl ot(s i m pl ify('s u bs(c I =5, c2=-2,y(x))'), ['1, 1 ]) fp lot(si m pl ify('s u bs (c1 =5,c2=2,y(x))'), ['1, 1 ]) fp lot(s i m p ! ify('s u bs (c1=5,c2=4,y(x))'), ['1, 1 ]) f plot(s i m pl ify('s u bs (c1 =5,c2=4,y(x))'), [-1, 1 ] ) fplot(simplify('subs(c1 =0,c2='4,y(x))'),['1, I ]) fp lot(s i m pl ify('s u bs (c1 =0,c2=4,y(x))'), ['1, 1 ]) f p I ot(s i m p I ify('s u bs (c1 =0,c2=2, y(x) )' ), [-1, I ] ) fplot(simplify('su bs(c1 =0,c2='2,y(x))'), ['1, I ]) fplot(simpl ify('subs(c1 =0,c2=-1,y(x))'), ['1, 1 ]) fplot(si mplify('subs(c1 =0,c2=1,y(x))'), ['1, I ])

    Figura 3-1

    Para la segunda ecuacin diferencial aplicamos directamenteDSolve y tenemos la solucin.

    pretty(si mple(dsolve('D2y-2*Dy+y=sxr(x).log(x)')))22

    1/4exp(x) (2 log(x)x *3x +4C7+4C2x)

    3.4 ECUACIONES NO HOMOCXNAS CON COEFICM,NTESVARIABLES. ECUACIOI{ES DB CAUCI{Y.EULER

  • CAPTULO 3. ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR 45

    La ecuacinn k(k)

    lineal no homognea en coeficientes variables:

    I ak x y(x)=a0y(x)+a1 x y'(x)+a2 x y"(x)+....+ an x y (x)=f(x)k=0se denomina ecuacin de Cauchy-Euler.

    Matlab resuelve directamente este tipo de ecuaciones con elcomando dsolve o maple('dsolve').

    pretty(simple(dsolve('x^3*D3y+1 6*x^2*D2y +f $*a*Dy+1 25*y=0'))C1 + C2 sin(3 log(x)) x + C3 cos(3 log(x)) x

    ,t

    3.5 TRANSFORMADA DE LAPLACESea una funcin f(t) una funcin definida en el intervalo [0,co). La

    transformada de Laplace de f(t) es la funcin de variable s:*oo _St

    L{f}(s)=i e f(t)dt,0

    Decimos que f(t) es la transformada inversa de Laplace de F(s) sise cumple:

    -1L{fXs) = F(s) y escribimos L {F(s)i (t) = f(t)

    Matlab aporta los comand os maple('laplace') y maple('invlaplace)que permiten calcular la transformada de Laplace de una expresinrespecto a una variable y la transformada inversa. su sintaxis es lasiguiente:maple('laplace(expresin, t, s)')

    Calcula la transformada de Laplace de la expresincon respecto a t. La transformada es de variable s

    maple('invlaplace(expresin,s,t)')

    n (n)

    ,mente

    iTES

  • 46 ECUACIONES DIFERENCIALES CON MATLAB

    Calcula la transformada inversa de Laplce de laexpresin con respecto a s. La transformadainversa es de variable t

    Veamos algunos ejemplos. pretty(maple('laplace(t^(3/2)-exp(t)+sinh(a*t), t, s)')) ;

    1/2piTa3/4 ----- + -------5/2 s-7 2 2

    pretty(maple('invlaplace(s^2/(s^2+an2n(3/2), s, t)'))- t BesselJ(l, a t) a + BesselJ(0, a t)

    La transformada de Laplace y su inversa se utilizan para resolverdeterminadas ecuaciones diferenciales. El mtodo a seguir es calcular lastransformada de Laplace de cada trmino de la ecuacin para obtener unaecuacn diferencial en transformadas de Laplace y resolverla en funcnde las transformadas de Laplace. Finalmente se halla la solucin de Iaecuacin inicial calculando la transformada inversa de Laplace de lasolucin de la ecuacin en transformadas de Laplace.

    No obstante, Matlab aporta la opcin 'laplace' en el comandomaple('dsolve'), que tuerza al programa a resolver la ecuacin diferencialutilizando transformadas de Laplace. La sintaxis es la siguiente:

    maple('dsolve(ecuacin, func(var),'laplace')

    En primer lugar calculamos las funciones transformadas de Laplacede los dos miembros de la ecuacin diferencial, y aplicamos lascondiciones iniciales.

    > maple('L:=s->laplace(d iff(y(x),x$2)+2*d iff(y(x),x)+4*y(x),x,s)') ; pretty(simplify('subs(y(O)=',(D(y))(0)=r,L(s))'))

    2Japlace(y(x), x, s) s - s - 3 + 2 Taplace(y(x), x, s) s

    + 4 laplace(y(x), x, s)

  • CAPTULO 3, ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR 47

    maple('Ll : =s->laplace(x-exp(-x),x,s)') ; pretty(simpl ify('Ll (s)'))

    s-7+s

    "' ," * ,,

    A continuacin integramos la ecuacin diferencial en transformadasde Laplace

    pretty(simplify(maple('solve(L(s)=1 1", laplace(y(x),x,s))')))33

    y(0)+3s y(A)+D(y) (0) s +D(y)(A)s

    "' ,"*r, ("2 *2s+4)

    Ahora sustitumos en la solucin las condciones iniciales dadas.

    maple('TL: =s-)solve(L(s)=11 1s),laplace(y(x),x,s))') ; pretty(si mpl ify('su bs(y(0)={,(D(y))(0)=1,TL(s))'))

    32+4s +2s +s+7

    u' ,"*r, ("2 *2s+4)Ya hemos obtenido la transformada de Laplace de la solucin de la

    ecuacin diferencial inicial. Para calcular la solucin de la ecuacin inicialcalcularemos la transforma inversa de Laplace de la funcin obtenida en elpso anterior.n maple('TL0 :=s->simpl ify('subs(y(0)=1,(D(y))(0)=l,TL(s))')') ;r solucion=simple(maple('i nvlaplace(TL0(s),s,x)')) ;n petty(solucion)

    2+ 2 y(A) s + s + 1

    solverhr laser unauncindelade la

    manxencid

    r[3Plmsnos t

    It

    1/2 1/2sin (3 x) 3 1/235 cos (3 x)7

    7/4 x - 7/8 - -------- + 5/B3 exp (x) exp (x) 24 exp (x)

    Ya tenemos la solucin de la ecuacin diferencial inicial.

    Tambin se poda haber resuelto directamente mediante:

    pretty(s i m ple(m aple('dsolve({d iff(y(x),x$2)+2.d iff(y(x),x)+4*y()=),y(0)=1, D(y)(0)=1 ),y(x), laplace)')))

  • 48 ECUACIONES DIFERENCIALES CON MATLAB

    1/2 1/21 sin(3 x) 3

    y(x) :7/4 x - 1/8 - -------- + 5/8 ----- +3 exp (x) exp (x)

    1/2_:: _ "_"_:_ !:_ _ _ _ _:)_ _24 exp (x)

    3.6 POLINONIIOS ORTOGOI\ALESDos funciones distintas f(x) y g(x) se dce que son ortogonales en un

    intervalo [a,b] si su producto interno es 0, es decir silnJ f1x)g(x):0'

    ,n ejemplo de familia ortogonal pueden ser las funcionesfn(x)=sen(nx) y g"(x)=cos(nx), n=1,2,3,... en el intervalo [-rc,r].

    Matlab aporta una amplia lista de polinomios ortogonales, que van aser muy tiles a la hora de resolver ciertas ecuaciones diferenciales nolineales de orden superior. Las funciones simblicas que permiten el trabajocon estos polinomios son las siguientes:

    T(n,x)U(n,x)P(n,x)H(n,x)L(n,x)L(n,a,x)P(n,a,b,x)G(n,m,x)

    Polinomios de Chebychev de primera especie.Polinomios de Ghebychev de segunda especie.Polinomios de LegendrePolinomios de Hermite.Polinomios de Laguerre.Polinomios generalizados de Laguerre.Polinomios de Jacobi.Polinomios de Gegenbauer.

    Veamos ahora su relacin con las ecuaciones diferenciales-Precisamente esta relacin es la que permite hallar soluciones dedeterminadas ecuaciones no lineales de orden superior. Para usar estrefunciones es necesario ejecutar antes maple('with orthopoly').

    3.6.1 Polinomios de Chebychev de primera y segunda especicLos polinomios de Chebychev de primera especie son las soluciones

    de la ecuacin diferencial:

    lL

  • CAPIULO 3. ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR 49

    T.(x)T,(x)-'

    (1- ^') y'-x'y-t r'y : 0 n: 0,1,2,...

    Su ortogonalidad viene dada por:

    dx:0 m+n

    Los polinomios de Chebychev de segunda especie cumplen larelacin de ortogonalidad :

    1

    ?J unlxum(x)(1-x2)1/2 dx=g m+n-1

    3.6.2 Polinomios de LegendreSon soluciones de la ecuacin diferencial de Legendre:

    (1 - ^') y'-2x'yt n(n+ 1) y : 0 1

    Su ortogonalidad viene dada por la relacin I pn(r)pr(x)dx=0 m*n3.6.3 Polinomios asociados de Legendre

    Las soluciones de la ecuacin diferencial:

    (l-*') y'-2x'y+{n(n+f t 9tv:Ol-x-son las llamadas funciones asociadas de Legendre

    3.6.4 Polinomios de HermiteLas soluciones de la ecuacin diferencial de Hermite:

    y'-2x'y*2ny: OError! Argumento de modilicador no especificado.se conocen como polinomios de Hermite.

    ., _*

    Su ortogonalidad viene dada por, I Hn(x)Hm(x)e dx=0 m+n-1 Error! Argumento de modilicador no especificado.

    a

    D

    o

    les.de

    stas

    BCre

    ones

  • 50 ECUACIONES DIFERENCIALES CON MATLAB

    3.6.5 Polinomios generalizados de LaguerreLas soluciones de la ecuacin diferencial general de Laguerre:

    xy"+(a+1-x)Y'+oY=0se conocen como polinomios generalizados de Laguerre.

    Su ortogonalidad viene dada

    3.6.6 Polinomios de LaguerreLas soluciones de la ecuacin diferencial de Laguerre:

    x'y+(1-x)y'iny:0Se conocen como polinomios de Laguerre. Se trata del caso particular a=0de los polinomios generalizados de Laguerre

    3.6.7 Polinomios de Jacobi1

    Su ortogonalidad viene dada por: I pn(r)prn(x)(1-x)" (1+x)b dx=O m+n-1

    3.6.8 Polinomios de Gegenbauer

    Su estructura es la siguiente:

    (-2 )" n!r(2 a)r(a+ r+ ]Xr - *')^)

    1

    Ipor: J Ln(x)Lm(x) x" e-'dx=o m+n-1

    t9l" (1 - 2)"*"-idx

    I

    I

    I

    I

    t_

    1f(a+ ;)r(n+2a)G(n,a,x):

    pretty(simple(maple('T(7,x)')))7

    64x -772x3

    +56x -7x

  • CAPiTULO 3. ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR 51

    pretty(smple(maple('P(6,x)')))23t 6 315---x-*--xt6 16

    pretty(simple(maple('H(5,x)')))53

    32x -16Ax +720x pretty(si m ple(maple('L(5,x)')))

    2341-5x+5x -5/3x +5/24x -7/720x

    3.7 FIINCIONIES DE AIRY Y BESSELReciben el nombre de funciones de Airy las soluciones

    linealmente independientes de la ecuacin diferencial lineal de segundoorden:

    Y" - xY = 0 (ecuacin deAirY)Reciben el nombre de funciones de Bessel las soluciones

    linealmente independientes de la ecuacin diferencial:

    y" + y'lx * (k' - n2 lx2 y = g (ecuacin de Bessel)Reciben el nombre de funciones de Bessel modificadas las

    soluciones linealmente independientes de la ecuacin diferencial:y" + y'lx- (k' * n2 /x) y = 0 (ecuacin de Bessel modificada)

    Matlab implementa al respecto las siguientes funciones simblicas:

    Ai(z) y Bi(z) Dan soluciones independientes de Ia ecuacindiferencial de Airy.

    BesselJ(n,z) y BesselY(n,z)Dan soluciones independientes de !a ecuacindiferencial de Bessel.

    Bessell(n,z) y BesselK(n,z)Dan soluciones independientes de la ecuacindiferencial de Bessel modificada.

    105 2+---x -5/16

    16

    {

  • 52 ECUACIONES DIFERENGIALES CON MATLAB

    Se trata de la ecuacin diferencial de Bessel para n=112. Obtendremosdos soluciones linealmente independientes de la siguiente forma:

    pretty(simple(maple('BesselJ (1 /2,x)')))

    2 sin (x)1/2 1/2pix

    pretty(simple(maple('BesselY(1 /2,x)')))1/2

    2 cos (x)1/2 1/2

  • MGS

    Captulo 4

    ECUACIONES DIFERENCIALES PORMETODOSAPROKMADOS

    4.1 BCUACIONES DE ORDEN Y GRADO SUPERIOR A UNO,LINEALES YNO LINEALES, NMTONOS APRO)ilMADOS

    Cuando los mtodos conocidos de resolucin de de ecuacionesdiferenciales y sistemas no ofrecen solucin, se suele recurrir a mtodosde aproximacin. Dentro de los mtodos aproximados los hay simblicos ynumricos. Los simblicos permiten obtener soluciones algebricasaproximadas, y el ms representativo es el de la series de Taylor. Losnumricos permiten obtener conjuntos de puntos de las soluciones, queposteriormente pueden ajustarse por cualquier mtodo algebrico(interpolacin, regresin,....) a la curva que mejor les aproxime. Dichacurva ser una solucin aproximada de la ecuacin diferencial. Entre delos mtodos numricos ms comunes se halla el mtodo de Runge Kuta.

    El uso ms corriente de los mtodos aproximativos es la resolucinde ecuaciones y sistemas de ecuaciones diferenciales no lineales de ordeny grado superiores a uno, siempre que la solucin exacta no sea posible deobtener mediante otros mtodos.

    4.2 EL VTTOOO DE LAS SERIES DB TAYLOREste mtodo ofrece soluciones polinmicas aproximadas de

    ecuaciones diferenciales generales, y se basa en el desarrolo de funciones

  • 54 ECUACIONES DIFERENCIALES CON MATLAB

    en series de potencias de Taylor. Matlab ofrece la opcin 'series' delcomando maple('dsdve'), que permite obtener este tipo de soluciones. Susintaxis es la siguiente:

    maple('dsolve(ecuacin, func(var),'series')Adems existe el comando maple('powsolve') que resuelve

    ecuaciones diferenciales lineales por series de potencias, y cuya sintaxises la siguiente:

    maple('powseries[powsolve](ecuacin, condl,....,condn)')Con el comando maple('conve(polynom)') se puede convertir una

    solucin complicada a polinomio ordenado en potencias de la variable.

    pretty(s i mp le(m apl e('dsolve(4*x^2*d iff(y(x),x$2)+4*x*d iff(y(x),x)+(x^2-1 )*Y(x)=0,Y(x),series)')))

    t/2 2y(x) : Cl x (1 - 1/24 x

    6

    1/2 1/2

    pretty(simplify(maple('convert(_C1*x^(112).1-1124"x^2+111920*x^4+o(x^6))+-G2*(1lx^(112)*!og(x)*(o(x^6))+'llr(112).(1''ll8*x^2+11384*x^4+O(x^6))),polynom)')))

    46+ 7/1920 x + O(x ))

    31/7920 (7920

    _C1 x - 80 _C1 x + _C16

    + 192A _C2 1og(x) o(x ) + 1920

    6 1/2+ 7920

    _C2 o(x )) / x

    5x + 1920

    _C1

    _c2 - 240 _c2

    5x O(x )2

    x +5 C2x

    pretty(maple('dsolve({y(x).d iff(y(x),x$2)+diff(y(x),x)^2+ I =0,Y(0)=1,D(y)(0)=1 ),y(x),series)'))

  • CAPTULO 4. ECUACIONES DIFERENCIALES POR MTODOS APROXIMADOS 55

    *

    u

    eb

    2y(x) :7+x-x +x 4

    -3/2x +5/2x6

    + A(x )

    tl pretty(smple(maple('dsolve({diff(x(t),t$2)+diff(y(t),t)a*x+12=0,diff(y(t),t$2)-l0.diff(x(t),t)-y(t)+/=0,x(0)=1 ,Y(0)=1 ,D(x)(0)=l ,D(y)(0)=1),{x(t),y(t)},series)')))

    2 i 4 387 5 6{y(t) :7 + t + 2 t + (- 43/2 + 20,/3 x) t - 3/2 t + (--- - 3 x) t + A(t ),456

    x(t) :1 + t + (- 13/2 + 2 x) t - 2/3 t +(43/8 - 5/3 x) t + 3/1A t + O(t)] pretty(simple(maple('dsolve({diff(x(t),t$2)+2*diff(x(t),t)+2*diff(y(t),t)+3*diff(z(t),t)+x(t)=1,diff(y(t),t)+diff(z(t),t)-x(t)=0,diff(x(t),t)+z(t)=g),{x(t),y(t),2(t)}, series)')))

    {x(t) = x(0) + D(x) (0) t + (- D(x) (a) - 1/2 x(A) + 1/2) t3

    + (1/2 D(x) (0) + 7/3 x(0) - 1/3) t + (- 1/6 D(x) (0) - 1/8 x(A) + 1/8) t56

    + (1/24 D(x) (0) + 7/30 x(0) -

    1/30) t + o(t ),2

    z(t): z(0) +x(0) t +7/2 D(x)(0) t + (- 7/3D(x)(0) - 1/6x(0) + 1/6) t4

    + (7/8 D(x) (0) + 1/12 x(A) - 1/12) t56

    + (- 1/30 D(x) (0) - 1/40 x(0) + 1/40) t + o(t ),2

    y(t):y(0) +x(0) t+ 1/2 D(x)(0) t + (- 1/3 D(x)(0) - 7/6 x(0) + 1/6) t

    tr

    I

    )._:

    4+,4+

    4+ (1/8 D(x) (0) + 1/12 x(0)

    - 7/72) t

    + (- 1/3A D(x) (0) - 1/40 x(0) + 7/40) t 6+ a(t )

  • 56 ECUACIONES DIFERENCIALES CON MATLAB

    4.3 EL vrroo DE RUNGE-KUTTAEl mtodo de Runge-Kutta permite obtener un conjunto de puntos

    de la solucin aproximada de una ecuacin diferencial. Maple aporta laopcin numeric del comando maple('solve') que posibilita el clculo desoluciones numricas aproximadas de ecuaciones diferenciales. susintaxis es:

    maple('dsolve(ecuacin, func(var),'numeric')

    maple('f := dsolve({3*diff(y(x),x$2)^2 = diff(y(x),x$3)*diff(y(x),x),W''',o(yX0)=r,(o@@2XvX0)=1 ), v(x), numeric)')

    f : : proc (x)' dsolve/numeric/result 2' (x, 3 B 7 9004, I j | ) endAhora calculamos varios puntos de la funcin solucin, para hacer

    una representacin grfica de la misma (figura 18-4). [maple('f(-O.3)'),maple('f(-0.2)'),maple('f(-O.1)'),maple('f(0)'),maple('f(0. I )'), maple('f(0.2)'),maple('f(0.3)')lan:{x: -.j,y(x) : .23s08893s9260396}{y(x) - .3167840433732281, x: -.2} {y(x) -.4045548849869109, x: - l){y(*) : .5000000000000000, x - 0} {x - .1, y(*) :.605s728090006967j{y(x) : .7254033307s97474, x: .z} {y(x) : .A675444679682489, x -.3000400000000000j

    > y=1.2350889359260396,.31 67 8404337 32281,.4045548849869i 09,.S,.6055728090006967,.7254033307 597 47 4,.867 544467 9682a5il; plot((-0.3:.1 :0.3),y)

  • CAPTULO 4. ECUACIONES DIFERENCIALES POR MTODOS APROXIMADOS 57

    tcrladeSu

    Ilx),

    D)),

    Figura 4-1

    Se observa que la figura es de tipo parablico, con lo que podemoaajustar la nube de puntos a una parbola. Dicha parbola ser la solucinsimblica aproximada de la ecuacin diferencial.

    pretty(vpa(poly2sym(polyfit((-O.3:. 1 : 0.3),y,2))))2

    .5747427827483573 x + 1.041293962469090 x + .4991457846921903

    Ya tenemos la funcin polinmica y(x) solucin de la ecuacin

    D,-5,

    u.9

    0,a

    0.7

    0.6

    0,5

    0.4

    D:

    O,?L{: .1 nl t:1 03

  • Captulo 5

    SISTEIUAS DE ECUACIONES DIFERENCIALESY ECUACION{ES EI\ DIFERENCIAS FIMTAS

    5.1 SISTEMAS DE BCUACIONBS LINEALES HOMOCWNASCOI{ COEFICM,NTES CONSTANTES

    Matlab resuelve directamente este tipo de sistemas sin ms queutilizar el comando dsolve o maple('dsolve') con la sintaxis ya conocida

    Un sistema de ecuaciones diferenciales escrito como X'(t) = A X(t),presenta una solucin general de la forma:

    x(t)= ciVie

    siendo i7,k) los autovalores correspondientes a los autovectores {Vk} dematriz A del sistema (k=1 ,2,...n) y todos los i,k distintos.

    Si existiese algun )"k =ak+bki, nmero complejo, genera lasiguiente componente de la solucin general:

    )"i tnTi=1

    ck1

    wk1

    )"k t .k tWk1 e +Ck2Wk2e donde:= % (vk + Vk)cos(bkt) + i2 (Vk - vk)sen(bk t)

  • 60 ECUACIONES DIFERENCIALES CON MATLAB

    Wk2 = itz (ik- Vk)Cos(bkt) - 1t2 (Vk + Vk)Sen(bk t)Vk es el autovector correspondiente al utovalor ik y Vk es su conjugado'

    si existe un fui de multiplicidad m>1, genera una parte de la solucingeneral, de la forma:

    ),it ).it 2 Xil kci e Vi +c(i+1)te V(i+1)+c(i+2)t e V(i+Z+.'..+c(i+k)t e

    pretty(dsolve('Dx='5*x+3*y,Dy=-2*x'1 0*y','t'))y(t) : Ct exP( 7 0 + C2 exP( 8 t),

    *(t) : - 3/2 Cl exP( 7 r) - C2 exP( 8 t)

    Tambin se puede usar la siguiente sintaxis:

    pretty(maple('dsolve({diff(x(t),t)=-5*x(t)+3*y(t),diff(y(t),t)=-2*x(t}-10.y(t)), {x(t),Y(t)})'))

    {y(t) : -Cl exP( 7 t) + -C2 exP( 8 t)'

    x(t) : - i/2 -Cl exp( 7 t) - -C2 exp( I t))

    5.2 SISTEMAS DE ECUACIONES LINIEALES 1\O HOMO'CNSAS CON COEF'ICM,NTES CONSTANTES

    Ahora vamos a considerar sistemas de ecuaciones diferenciales nohomogneas con coeficientes constantes de la forma X' = A X + F(t)'

    sea X = o(t)c la solucin general del sistema homogneo X',=AX-Una solucin particular del sistema no homogneo es:

    -1Xp =o(t)J o(t) F(t) dt

    La solucin general del sistema no homogneo ser X=O(t)c+Xp,con lo que tendremos la solucin general:

    }.i tVK

  • CAPTULO 5. SISTEMAS DE ECUACIONES DIFERENCIALES 61

    -1X = o(t)c + o(t)j o(t) F(0 dt

    Este mtodo es la generalizacin a sistemas de ecuaciones delmtodo de variacin de parmetros para las ecuaciones simples.

    Matlab ofrece directamente la solucin de estos sistemas con elcomando dsolve o maple('dsolve'), siempre y cuando pueda obtener laforma algebrica de las soluciones de las integrales que aparecen en lasolucin.

    pretty(simple(dsolve('Dx-Dy=sp(-t), Dy+*+l*y=5i (t+[)','x(0)=xs,r1g=yo','t')))

    y(t) : 7/50 sin(3) cos(t) + 7/50 cos(3) sin(t) + 5/6 exp( t)+ l/50 sin(3) sin(t) - 1/50 cos(3) cos(t) - 5/7 + 5/7 yo - 5/7 xo

    + (- 7/50 sin(3) + 2/7 yo + 1/50 cos(3) - 5/42 + 5/7 xo) exp(7f)

    5.3 ECUACIONI-ES EN DIFERENCIAS FIMTASMatlab habilita la funcin maple('rsolve'), que permite resolver

    ecuaciones en diferencias finitas y recurrentes en general. Su sintaxis es:

    maple('rsolve({ecuacin, condiciones_iniciales}, funcin)')

    pretty(maple('rsolve({y(m+l )=m*y(m)+(m+1 )!,y(1 )=2},y)'))1/2GAMaA(m) (n +m+2)

    pretty(maple('rsolve({y(2*n)={*y(n)+5,y(1 )=a},y)'))

    o

    (

    p,

  • 62 ECUACIONES DIFERENCIALES CON MATLAB

    loq (n)______ + 7

    2 2 log(2)a n + n (- 20/3 (1/4) + 5/3)

    pretty(maple('rsolve({y(n+2)-3*y(n+1)+!*y(n)=4^n,y(0)=1 ,y({ )=1},y)'))4/3-1/22 +1/64

    pretty(maple('rsolve({x(n)-n*x(n)*x(n+l )=x(n+1 ),x(0)=l },x)'))2

    n+2

    maple('rsolve({x(n+2)-2*x(n+l )+5*()=cos(3*n),x(0)=1,(l )=1 },x)')ans :

    1 /2*(1 -2*/'tt+ 1 /2+(l +2*i)/Yt+(-39+cos(n-2)n3+22*cos(n-5)^3- I 9*cos(n-4)"3 +32*cos(n-3)^3-25*cos(n-2)^3 *cos(l)-25*cos(n-2)^3*cos(j)+100*cos(n-2)"3*cos(1)n2+100*co,t(n-2)^3*cos(3)^2 +10*cos(n-3)/'3+cos(1)^2+10*cos(n-3)^3*cos(3)n2-72*cos(n-3)n3 *cos(3)-7 2*cos (n-3)^3 *cos (l )-49*cos (n-4)^3 xcos( I ) + I 20*cos (n-4)^3 *cos (3)^2 + I 20*cos (n-1)"3*cos( I )^2-49*cos(n-4)^3*cos(3) -60*cos(n-5)^3acos(3)-60+cos(n-5)^3*cos(l)+l69acos(n-2)^3+cos(l)*cos(3)-120+cos(n-2)^3 *cos(3)*cos(l)^2-120*cos(n-2)n3*cos(3)^2*cos(1)-290*cos(n-3)^3*cos(3)"2*cos(l) +200*cos(n-3)^'3*cos(3)"2*cos(l)"2+208*cos(n-3)^3*cos(1)acos(3)-290*cos(n-3)^3*cos(3)* cos(l)"2-100*cos(n-4)n3+cos(3)*cos(1)^2+265+cos(n-4)"3*cos(l)*cos(3)-100*cos(n-4)"3 *cos(3)n2*cos(1)+50*cos(n-5)^3*cos(l)*cos(3)+100*cos(n-2)^3+cos(3)^2*cos(l)^2)/(2 5*cos(3)"2 + 36*cos (l )+cos(3)-3 0*cos (3)-3 0*cos(3)"24cos( I ) + 2 5 *cos ( l)"2-30*cos( I )-30*cos(3)*cos(1)"2+25+25*cos(3)^2*cos(l)^2)+l/4+(-30*i*(l+2*r^n-35+(l-2*i)^n*cos(3)^2 +27a(l-2*i)^n*cos(1)-25*(1-2*i)^n*cos(l)^2-3 5 *(l +2*i)^nacos(3)^2-37+i*(l -2*i)^n*cos(3)-25*(l +2*i)^n*cos(l)^'2+ 2 I *(l-2*i)^n*cos(3)^2*cos(1 )+23*(1 -2*i)^n*cos(3)*cos(112-20*(1 -2+i)^nacos(3)^Z*cos(1)^2+25*i+( I -2*i)^n*cos(3)^2+ I 5 *i+(l -2*i)^n*cos(l)^2-20*(l +2*r^n*cos(3)^2*cos(l )"2- I 5**(l +2*i)^n*cos(1)"2+374i*(l +2+i)t'n*cos(3)+39*i*(l + 2*i)^n*cos(l)-t9*+( I -2*i)nn*cos(l )+ 2 I * (1 + 2*i)^n*cos(3)^ 2*cos( I )+4 + 1 2 *i)^n*cos (3)+ 2 7 + (l +2 *i)^n *cos( I ) +48*i*( l -2+i))t*cos(l )*cos(3)+ I 0*i*(l -2*i)^n*cos(3)^2*cos(l )^2-25*i*(l +2*i)^n*cos(3)"2+ 19*i*(l +2+i)^n*cos(3)*cos(l )^2-48*i*(l+2*i)nnacos(1)*co.t(3) +33*i*(l+2*i)"n*cos(3)^2+cos(l)-24*(1+2*i)^n*cos(l)*cos(3)+23+(l+2*i)^n*cos(3)*cos(l)^2-40*(1 -2*i)^rt-40*(1 +2*i)^n+4 I *(1 -2*i)^nacos(3)-l 0*i*(1 +2*i)^n*cos(3)^2*cos(1)"2-3 3*i+( I -2*i)"n*cos(3)^2*cos(t )+30*i*(1 -2*i)^n-24*(l-2*r^n+cos(l)*cos(3)-19*i*(1-2*)"n*cos(3) *cos(l)"2)/(5*cos(l)"2-6*cos(l)+5)/(5-6+cos(3)+5*cos(3)^2)-3/2+C2*cos(n-2)*cos(l )-2*cos(n-2)'r I O*cct.s(n-2)*cos(1 )^2-5*cos(n-3)*cos(l )+cos(n-3))/(5*cos(l )^2-6*cos(1 )+ 5)-3/8*(*(1 -2*i)^n+cos(l )"2-2*(l -2*i)^n*cos(l )^2-4*i*(l -2*i)^n*cos(l)+ 3*i*(l -2*i)^n-4*(1 -2*i)^n+2*(l -2*i)^n*cos(l )-2*(1 +2*i)^n*cos(1 )^2-*(l +2*i)^n*cos(1 )^2+4*i*(l +2*i)^n+cos(l )-4*(l +2*i)^n-3 *i* ( I + 2+ )/'n+ 2*( I + 2*i)^n+cos(1 ))/(5 *cos (l )^ 2-6*co,s( I )+ 5)

    Ahora intentamos simplificar el resultado no trivial.

    pretty(simple(maple('evalf(rsolve({x(n +2)-2*x(n+1)+5*1=cos(3*n),x(0)=1,11 =1 ),x))')))

    .4373424522418379 (1. - 2. i) + .4373424522418384 (1. + 2. i)

  • -CAPTULO 5. SISTEMAS DE ECUACIONES DIFERENCIALES 63

    9418421 760747166 cos (n)

    4405817940094277 cos(n) sin(n) - .7714545418874307 sin(n)

    - .2069717398607332 cos(n)2

    sin (n)

    3

    .0626567574570487 i (1. +

    . 8765270805583898 cos (n)

    n

    i) t .0626567574514487 i (1. - 2. i)180378847j807544 sin(n)

    2.

  • Captulo 6

    CALCULO I{LMERICO EN MATLAB.APLICACIONES A LAS ECUACTONES

    DIFERENCIALES

    6.1 MATLAB Y LA PROGRAMACIONMATLAB puede utilizarse como un lenguaje de programacin de alto

    nivel que incluye estructuras de datos, funciones, instrucciones de controlde flujo, manejo de entradas/salidas e incluso programacin orientada aobjetos.

    Los programas de MATLAB suelen escribirse en ficherosdenominados M-ficheros. Un M-fichero no es ms que cdigo MATLAB(scripts) que simplemente ejecuta una serie de comandos o funciones queaceptan argumentos y producen una salida. Los M-ficheros se creanutilizando el editor de texto, tal y como ya se vio en el Captulo 2.

    6.2 BDITOR DE TEXTOPara crear un nuevo M-fichero se utiliza el Editor/Debugger, que se

    activa haciendo clic en el botn D de la barra de herramientas de MATLABo mediante File+ New-+ M-file en el escritorio de MATLAB (Figura 6-1) oen la ventana de comandos (Figura 6-2). El Editor/Debugger se abre conun fichero en blanco en el cual crearemos el M-fichero, es decir, un ficherocon cdigo de programacin MATLAB (Figura 6-3). Cuando se trate de

  • 66 ECUACIONES DIFERENCIALES CON MATLAB

    abrir un M-fichero ya existente se utiliza File-+ Open en el escritorio deMATLAB (Figura 6-1) o, alternativamente, se puede utilizar el comandoOpen en la ventana de comandos (Figura 6-2). Tambin se puede abrir elEditor/Debugger haciendo clic con el botn derecho del ratn en el interiorde la ventana Current Directory y eligiendo New -+ M-file en el menemergente resultante (Figura 6-4). La opcin Open de este men abre unM-fichero existente. Se pueden abrir varios M-ficheros simultneamente,en cuyo caso aparecern en ventanas diferentes.

    fr-#rrummf * couuicarions ror-$cnnt.ar stscet rdiWii;$nuo aE$ieil.iutr 'j lenffie+'],out*.e" ToIbo* : otld'

    Figura 6-l

    I Dr\...12\worklmatri1,trc2 Dr\,..ltinnnEelBtrubond.mI D:\,..\Finan.elsudsr,m4 Dit.,,llinihEeldmrtiz,m

    Figura 6-2

    Figura 6-3

    w

    r*#W;*itiJiiit : tu

    Figura 6-4

  • CAPULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 67

    La Figura 6-5 muestra las funciones de los iconos delEditor/Debugger.

    ,{}ru ruete trf-ehe*o *ubAhrir E-$iah*ro v. sxiitsat*

    *rer&-i*hsrcs,,rqqfi+zg:+d-tei*s ee rn S;[-s&ereA X!*i& E&et*l

    Empriroir l{-e&.ero

    6.3 SCRIPTS

    Los scripts son el tipo de M-fichero ms sencillo posible. Un script notiene argumentos de entrada ni de salida. sencillamente est formado porinstrucciones MATLAB que se ejecutan secuencialmente y que podransubmitirse igualmente en serie en la ventana de comandos. Los scriptsoperan con datos existentes en el espacio de trabajo o con nuevos datoscreados por el propio script. cualquier variable que se cree mediante unscript permanecer en el espacio de trabajo y podr utilizarse en clculosposteriores despus de finalizar el script.

    A continuacin se presenta un ejemplo de script que genera variascurvas en polares representando ptalos de flores. Una vez escrita lasintaxis del script en el editor (Figura 6-6), se guarda en la librera detrabajo (work) y simultneamente se ejecuta, haciendo clic en er botn JEo utilizando la opcin save and run del men Debug (o presionando FS).Para pasar de un grfico al siguiente basta con pulsar ENTER.

    +tusr pr:uto d* esrt* p*re de*lggs flrec'fulerfttJIEI;"'li*n paato de mrt*I F1*m*u liaee e*Ml d+ h{-ieheroI I

    '

    &so d* eiecueioa e Es fuaeieI I I .Peuae*reaF;ireiarI I I t 1Ei**rahs**nrs*errarmrt*!* #*\.e@* **6:1*;' ;

    Fe:Et*.{**et

    =i*;'ta; ir iFigura 6-5

    Figura 6-6

  • 68 ECUACIONES DIFERENCIALES CON MATLAB

    Figra6-7 Figura 6-8

    Figura 6-9 Figura 6-10

    6.4 FUNCIONES Y M.FICHEROS. FUI{CTION, BVAL YFEVAL

    Ya sabemos que MATLAB dispone de gran variedad de funcionespara usar en el trabajo cotidiano con el programa. Pero, adems, elprograma ofrece la posibilidad de definir funciones a medida. El caminoms usual para definir una funcin a medida es escribir su definicin en unfichero texto, denominado M-fichero, que ser permanente y que, por lotanto, permitir el uso posterior de la funcin siempre que se requiera.

    MATLAB es habitualmente utilizado en modo comando (ointeractivo), en cuyo caso se submite un comando que se escribe en una

  • CAPTULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 69

    nica lnea sobre la ventana de comandos y se procesa de inmediato. peroMATLAB tambin permite la ejecucin de conjuntos de comandos en modobatch, en cuyo caso se submiten secuencialmente un conjunto decomandos escritos previamente en un fichero. Este fichero (M-fichero) hade ser almacenado en disco con la extensin ".m" en el camino desubdirectorios de MATLAB, utilizando cualquier editor ASCII o Ia subopcinM-file de Ia opcin New del men File de ra barra superior de mens, lacual nos lleva a un editor de texto que permitir escribir las lneas decomandos y guardar el fichero con un determinado nombre. La opcinopen M-File del men File de la barra superior de mens permite editarcualquier M-fichero preexistente.

    Para ejecutar un M-fichero basta con teclear su nombre (sinextensin) en modo interactivo sobre la ventana de comandos y pulsarEnter. MATLAB interpreta secuencialmente todos los comandos osentencias incluidos en las diferentes lneas del M-fichero y los ejecuta.Normalmente no aparecen en pantalla los riterales de los comands queMATLAB va interpretando, salvo que se active er comando echo on, y slose van viendo los resultados de las ejecuciones sucesivas de loscomandos interpretados. Normalmente, el trabajo en modo batch es tilcuando se procesan conjuntos muy largos de comandos de escrituratediosa y con propensin a cometer errores, pero la mayor utilidad sepresenta en Ia automatizacin de procesos. Adems, en las lneas de unM-fichero se pueden introducir textos explicativos y comentarios,empezando cada lnea al efecto por el smbolo %. con el comando Help seaccede al texto explicativo de un M-fichero.

    El comando function permite la definicin de funciones a medida enMATLAB, constituyendo una de la aplicaciones ms tiles de los M-ficheros. La sintaxis de este comando es la siguiente:

    fu nction pa rmetros_sa I ida = nom bre_fu ncin (pa rmetros_e ntrada )cuerpo de la funcin

    una vez que la funcin ha sido definida, se guarda en un M-ficheropara su uso posterior. Es til tambin introducir algn texto explicativo en lasintaxis de la funcin (entre o/o), al cual se acceder con el comando deayuda Help.

    cuando los parmetros de salida son ms de uno, se sitan entrecorchetes y separados por comas. Si los parmetros de entrada son msde uno, se separan por comas. El cuerpo de la funcin es la sintaxis que la

  • 7O ECUACIONES DIFERENCIALES CON MATLAB

    define, y debe incluir comandos o instrucciones que asignen valores a losparmetros de salida. Cada comando o instruccin del cuerpo suele ir enuna lnea que finaliza con una coma o con un punto y coma en caso deque se definan variables (para evitar repeticiones en las salidas al ejecutarla funcin). La funcin se guarda en el M-fichero de nombrenombre_funcin.m.

    A continuacin vamos a definir la funcin funl(x)=n3-2x+cosx,creando el correspondiente M-fichero de nombre fun1.m. Para introducirdicha sintaxis en MATLAB se selecciona la subopcin M-file de la opcinNew del men File de la barra superior de mens (o se hace clic en elbotn D Oe la barra de herramientas de MATLAB), la cual nos lleva aleditor de texto MATLAB Editor/Debugger que permitir escribir las lneasde comandos relativas a la sintaxis de la funcin, tal y como se indica en laFigura 6-11.

    ?.T:.rlt i.:ie e s1B fu.ri* Biepltp=x^3-:*x+cqE (xi

    ;;::;t:Figura 6-11

    Para guardar de forma definitiva dicha sintaxis en MATLAB seselecciona la opcin Save del men File de la barra superior de mens delMATLAB Editor/Debugger, la cual nos lleva a la caja de dilogo Guardar dela Figura 6-12, mediante la cual podemos guardar nuestra funcin con elnombre deseado y en el subdirectorio que se indique como ruta en elcampo Nombre de archivo. Tambin puede hacerse clic en el botn 'l outilizar la opcin Save and run del men Debug.

    Se recomienda guardar las funciones como ficheros de nombre igualal nombre de la funcin y en el subdirectorio de trabajo por defecto deMATLAB C :\MATLAB6pI\work. Precisamente es la situacin que presentael programa por defecto al intentar guardar cualquier funcin a medida y alutilizar el icono JE o la opcin Save and run del men Debug para ejecutary guardar simultneamente el M-fichero actual del editor.

  • eatr

    leelol

    o

    alletaalar

    cnplulo 6 cAlcuLo NUMERtco EN MATLAB. ApLtcActoNEs A LAS EcuActoNEs... 71

    Figurra6-12

    Una vez definida y guardada la funcin anterior en un M-fichero, sepuede utilizar desde la ventana de comandos. Por ejemplo, para hallar elvalor de la funcin en 3nl2 escribimos sobre la ventana de comandos usualde MATLAB:

    ) funl (3*p/2)ans

    -

    95.2274

    Para pedir ayuda sobre la funcin anterior (suponiendo que fuepreviamente introducida como comentario al elaborar el M-fichero que Iadefine) se utiliza el comando help, como sigue:>) heJ-p funlDefinicin de una funcin simple

    La evaluacin de una funcin en sus argumentos (o parmetros deentrada) tambin puede realizarse a travs del comando feval, cuyasintaxis es la siguiente:

    Evala lafuncin F (M-fichero F.m) en losargumentos especificados argl , arg2,...,argn

  • 72 ECUACIONES DIFERENCIALES CON MATLAB

    Como ejemplo construimos un M-fichero de nombreque contiene la funcin ecuacion2, cuyos argumentoscoeficientes de la ecuacin de segundo grado ax2+bx+csalidas son sus dos soluciones (Figura 6-13)'

    ecuacion2.mson los tres- 0 y cuyas

    Si ahora queremos resolver la ecuacin x2+2x+3 = 0 utilizando feval'escribimos en la ventana de comandos lo siguiente:

    >> [x1 rx2]=sr"J-('ecuaciorr2',1,2,31x7:

    -1.0000 + 7.4742i

    x2:-1.0000 - 1.4142i

    Tambin se Puede resolversigue:

    >> [x1 ,x2] =ssr"cion2 (l ,2,31x7:

    -1.0000 + 1.4742i.-a

    -

    -1.0000 - 7.4742i

    la ecuacin de segundo grado como

  • CAPIULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAs ECUACIONES... 73

    Si pedimos ayuda sobre la funcin ecuacin2 tenemos lo siguiente:

    >> help ecuacion2

    Esta funcin resuefveax^2+bx+c:0

    cuyos coeficientes son a,y cuyas sofuciones son x7

    fa ecuacin de segundo qrado

    b y c (parmetros de entrada)y x2 (parmetros de salida)

    La evaluacin de una funcin en sus argumentos (o parmetros deentrada) cuando son cadenas se realiza a travs del comando eval, cuyasintaxis es la siguiente:

    eval(expresin) Ejecuta la expresin cuando es una cadena

    Como ejemplo evaluamos una expresin carcter que define lamatiz mgica de orden 4.

    >> n=4;)) eval ( ['M' num2str (n) ' = magic (n) ' ] )M4:

    6.5 VARIABLES LOCALES Y GLOBALESNormalmente, cada funcin de MATLAB definida como un M-fichero

    contiene sus variables como variables locales, es decir, como variablesque tienen su efecto en el interor del M-fichero, separadamente de otrosM-ficheros y del espacio de trabajo base. No obstante, es posble definirvarables en el interior de M-ficheros de modo que tengan efectosimultneamente en el interior de otros M-ficheros y en el propio espaciode trabajo base. Para ello es preciso definir las variables como globalescon el comando GLOBAL, cuya sintaxis es la siguiente:

    GLOBAL xy 2... Define las vqriables x, y, 2... como globales

    Cualquier variable definida como global en el interior de una funcines accesible separadamente para el resto de las funciones y para elespacio de trabajo base lnea de comandos. Si la variable global no existe,la primera vez que se define en la sentencia GLOBAL, se inicializar como

    16231351110897672474757

  • 74 ECUACIONES DIFERENCIALES CON MATLAB

    la matriz vaca. Si ya existe una variable con el mismo nombre que la quese est definiendo como global, MATLAB emite un mensaje de peligro ycambia el valor de la variable a enlazar como global. Es convenientedeclarar una variable como global en cada funcin que necesite acceso aella, y tambin en la lnea de comandos, para tener acceso a ella desde elespacio de trabajo base. En el interior de las funciones el comandoGLOBAL se sita al principio (antes de cualquier ocurrencia de la variable).

    Como ejemplo, supongamos que se quiere estudiar el efecto de loscoeficientes de interaccin cr y B en el modelo de Lotka-Volterra:

    t1 = 3'1-a}r3t,i z = -j z+ P-u1J2

    Para ello creamos la funcin lotka en el M-fichero lotka.m de laFigura 6-14.

    Si posteriormente sobre la lnea de comandos escribimos losiguiente:)) global ALPIA BETAALPHA = 0.01BETA = 0.02

    ya se podrn utilizar estos valores globales para o y B en el interiordel M-fichero lotka.m (sin tener que volver a especificarlos). por ejempro,podr realizarse una representacin (Figura 6-15) con la sintaxis siguiente:>> [t,y] = ode23('lotka',0,10, [1; 1]); plot(t,y

    Figura 6-14

  • cAPrruLo 6 CALCULO NUMERTCO EN MATLAB. APLTCACTONES A LAS ECUACTONES... 7s

    Figura 6-156.6 TIPOS DE DATOS

    En MATLAB hay 14 tipos de datos diferentes que se representan enla Figura 6-'16.

    ARFIAY

    funetion handle

    int8. uint,intl , uintl Snint33, uint32

    srngJ-e doubl-eI

    Epar

    Figura 6-16

    A continuacin se detallan los distintos tipos de datos:

    Tioo de dato Eiemplo Descripcinsingle 3*10^38 Precisin numrica simple. Requiere

    menor almacenamiento que la dobleprecisin, pero es menor. Este tipo dedatos no debe usarse en operacionesmatemticas.

    double 3*10^3005+6i

    Doble precisin numrica. Es el tipo devariable ms comn en MATLAB

  • 76 ECUACIONES DIFERENCIALES CON MATLAB

    sparse speye (5) Matriz disoersa con doble precisin.int8, uint8,int16,uint16,int32. uint32

    uintS (nagic (3) ) Enteros con y sin signo y con 8, 16, y 32bits de longitud. Posibilitan usarcantidades enteras con manejo eficienfede memoria. Este tipo de datos no debeus ars e en ooeraciones matemtic as.

    char 'HeIIo' Caracteres (cada carcter tiene unalonsitud de 16 bits).

    ce11 {17 'heI1o' ef'e(2)} Celda kontiene datos de similar tamao)structure a.daY = L2

    a.color = 'Red'a.mat = maqic(3)

    Esfructura (contiene celdas de similartamao)

    user class inline ('sin (x) ') Clase MATLAB (creada con funciones)java class java. awt. Erame Clase Jwa (defrnida en API o propia con.Iava)

    functionhandle

    @humps Maneja funciones MATLAB. Puede serpasada en una lista de argumentos Yevaluada con fevaf.

    6.7 CONTROL DE FLUJO: BUCLES FOR, WHILE E IFELSETF

    El uso de funciones recursivas, condcionales y definidas a trozoses muy habitual en matemticas. Para la definicin de este tipo defunciones eS necesario el manejo de bucles. Como eS natural, la definicinde las funciones se har a travs de M-ficheros.

    6.7.1El bucle FORMATLAB dispone de su propia versin de la sentencia DO (definida

    en la sintaxis de la mayora de los lenguajes de programacin). Estasentencia permite ejecutar de forma repetitiva un comando o grupo decomandos varias veces. Por ejemplo:

    ': *r i=1:3, x(i)=O, end

  • CAPIULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 77

    La forma general de un bucle FOR es la siguiente:

    for variable : expresincomandos

    end

    El bucle siempre empieza con la clusula for y termina con laclusula end, e incluye en su interior todo un conjunto de comandos que seseparan por comas. Si algn comando define una variable, se finaliza conpunto y coma para evitar repeticiones en la salida. Normalmente, losbucles se utilizan en la sintaxis de M-ficheros. Veamos un ejemplo (Figura6-17):

    Figtra 6-17

    En este bucle hemos definido la matriz de Hilbert de orden (m,n). Siguardamos su contenido como un M-fichero de nombre matriz.m,podremos construir cualquier matriz de Hilbert posteriormente ejecutandoel M-fichero y especificando los valores para las variables m y n(dimensiones de la matriz) como se indica a continuacin:)) M=matrz(4,51M-

    7 - 00000.50000.33330.2500

    0 . s0000.33330.25000.2000

    0.33330 .2s000.20000.1567

    0-2500 0-20000.2000 0.16670.1667 0.74290.1429 0.7250

  • 78 ECUACIONES DIFERENCIALES CON MATLAB

    6.7.2 El bucle WHILEMATLAB dispone de su propia versin de la sentencia WHILE

    definida en la sintaxis de la mayora de los lenguajes de programacin.Esta sentencia permite ejecutar de forma repetitiva un comando o grupo decomandos un nmero determinado de veces mientras se cumple unacondicin lgica especificada. La sintaxis general de este bucle es lasiguiente:

    while condicincomandos

    end

    El bucle siempre empieza con la clusula while seguida de unacondicin, y termina con la clusula end, e incluye en su interior todo unconjunto de comandos que se separan por comas y que se ejecutanmientras se cumple la condicin. Si algn comando define una variable, sefinaliza con punto y coma para evitar repeticiones en la salida. Comoejemplo escribimos un M-fichero (Figura 6-18) que se guarda con elnombre while1.m, cuya ejecucin permite calcular el mayor nmero cuyofactorial no excede a 10100.

    Figura 6-18

    Ahora ejecutamos el M-fichero.) whi1e1

    70

  • CAPTULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 79

    6.7.3 El bucle IF ELSEIF ELSE ENDMATLAB, al igual que la mayora de los lenguajes de programacin

    estructurada, tambin incorpora la estructura lF-ELSEIF-ELSE-END.Mediante esta estructura, se pueden ejecutar secuencias de comandos sise cumplen determinadas condiciones. La sintaxis del bucle es lasiguiente:

    if condicincomandos

    end

    En este caso se ejecutan los comandos si la condicin es cierta.Pero la sintaxis de este bucle puede ser ms general.

    if condicincomandosl

    elsecomandos2

    end

    En este caso se ejecutan los comandosl si la condicin es cierta, yse ejecutan los comandos2 si la condicin es falsa.

    Las sentencias lF, al igual que las sentencias FOR, pueden seranidadas. Cuando se anidan varias sentencias lF se utiliza la sentenciaELSEIF, cuya sintaxis general es la siguiente:

    if condicinlcomandosl

    elseif condicin2comandos2

    elseif condicin3comandos3

    En este caso se ejecutan los comandosl si condicin1 es cierta, seejecutan los comandos2 si condicin1 es falsa y condicin2 es cierta, seejecutan los comandos3 si condicin'l y condicin2 son falsas y condicin3es cierta, y as sucesivamente.

    'else

    end

  • 80 ECUACIONES DIFERENCIALES CON MATLAB

    La sintaxis anidada anterior es equivalente, pero ms rpida deejecucin, a la sintaxis sin anidar siguiente:

    if condicinlcomandosl

    elseif condicin2

    comandos2else

    if condicin3comandos3

    else

    endend

    end

    Veamos como ejemplo (Figura 6-19) el M-fichero de nombreelsel.m siguiente:

    Figura 6-19

    Al ejecutarlo obtendremos el tipo de nmero (negativo, par o impar)para un valor de n especificado:)) else1 (8) , elsel (5) , else1 (-10)

    n es par

  • CAPTUIO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 81

    n es imparA:n es neqativo

    6.7.4 SWITCH Y CASELa instruccin switch ejecuta ciertas sentencias basadas en el valor

    de una variable o expresin. su sintaxis bsica es la siguiente:

    switch expresin (escalar o cadena)case valorl

    sentencias % Ejecttasi expresin esvalorlcase valor2

    sentencias '% Ejectta si expresin es valor2

    otherwisesentenciass %o Ejeatta si expression no cumple

    end %o ningn caso

    A continuacin se Presentadevuelve -1, 0, 1 u otro nmero segn

    un ejemplo de una funcin quesea la entrada (Figura 6-20).

    Figura 6-20

  • 82 ECUACIONES DIFERENCIALES CON MATLAB

    Despus ejecutamos el ejemplo anterior.>> casel (25)otro vafor>> casel (-1)menos uno

    6.7.5 COI{TINUELa instruccin continue pasa el control a la iteracin sguiente en un

    bucle for o while en el cual aparece ignorando las restantes instruccionesen el cuerpo del bucle. A continuacin se muestra el M-fichero continue.m(Figura 6-21) que cuenta las lneas de cdigo en el fichero magig.mignorando las lneas blancas y los comentarios.

    Seguidamente ejecutamos el M-fichero.)) continuel25 fineas

    6.7.6 BREAKLa instruccin break finaliza la ejecucin de un bucle for o while en

    el cual aparece continuando la ejecucin en la siguiente instruccin fueradel bucle. A continuacin se muestra el M-fichero breakl.m (Figura 6-22)que lee las lneas de cdigo en el fichero fft.m saliendo del bucle cuandose encuentre Ia primera lnea vaca.

    Figura6-21

  • CAPTULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 83

    Figra6-22

    Despus ejecutamos el M-fichero.>> b