Está en la página 1de 111

GMatl#Iforks.

ECUAGIONES

DIFERENGIALES

CON MATLAB

Ejemplos y ejercicios

resueltos

CESAR PÉREZ LÓPEZ

INDICE

MilTRODUCCIÓN PRÁCTICA A MATLAB

MT,TCTONES DIFERENCIALES DE PRIMER ORDEN. ECUACIONES m[,{cTAS, EN VARIABLES SEPARADAS, HOMOGENEAS Y LINEALES

1l EcuACIoNES DIFERENCIALES

DE PRIMER oRDEN

]JECUACIONESENVARIABLESSEPARADAS

]j

:'

ECUACIONES DIFERENCIALES HOMOGÉNEAS

4 ECUACIONES DIFERENCIALES EXACTAS

1,i ECUACIONES

DIFERENCIALES LINEAIES

25

25

28

30

33

35

]I

TACIONES DIFERENCIALES DE ORDEN SUPEROR. TRANSFORMADA DE

,.,

EN

,

,

37

37

39

,.,41

,.,

44

45

I,ñPLACEYTIPOSESPECIALESDEECUACIONES

3.I ECUACIONES ORDINARIAS DE ORDEN SUPERIOR.

J l ECUACIONES LINEALES DE ORDEN SUPERIORHOMOGÉNEAS COEFICIENTES CONSTANTES.

]S ECUACIONES

\-ARTACIÓN DE

J.+ ECUACIONES NO HOMOGÉNEAS CON COEFICIENTES VARIABLES. ECL]ACIONES DE CAUCHY-EULER

3*i TRANSFORMADA DE LAPLACE

-1.6 POLINOMTOS ORTOGONALES

NO HOMOGÉNEAS

PARÁMETROS

CON COEFICIENTES CONSTANTES,

48

' 48

3.6.1 Polinomios de Chebychev de primera y segunda especie

3.6.2 Polinomios de Legendre

49

3.6.3 Polinomios

asociados de Legendre

49

3.6.4 Polinomios de Hermite

49

4 ECUACIONES DIFERENCIALES CON MÑ

50

so

1Íiilll"-:i:::T'"r;::i:::'""":

3.6'7 Polinomios

de Jacobi ""'1""""""'

""""""'

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

""""""""""""' 50

3.6.8 Polinomios de Gegenbauer

3.7 FLTNCIONES DE AIRY Y

BESSEL

"

".

51

ECUACIONESDIFERENCIALESponITÉroDoSAPRoXIMADOS

53

4.lEcuAcIoNEs"o*Ñ"o*o*'**á*AI-lNo'un{EArEsYNoI.lN{FAtrs'

rr¡Étooosepnoxnr¡anos

4.2

Er- MÉroDo DE LAS sERIES

DE TAYLoR """""""

4.3 Er-MÉroDoDERtrNGE-Kurre""""

DE EcuAcroNEs DIFERENcIALEs Y

srsrEMAs

DIFERENCIAS FTN TTAS"""""""""'

EcuAcIoi::.::

"""""53

""""""' 53

"""""' 56

se

59

5.lSISTEMAS,"u**io*II.IEALES;OMoGENEASCoNCoEFICIENTES

CONSTA\TTES OE*oáo*"^*r*ono*oo^t* CONSTANTES

s2 STSTEMAS

coN CoEFICIENTES

60

""""""""' 61

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

cÁl,cut o NuuÉnTco EN MATLAB'

APLIcAcroNEs A LAs EcuAcroNrs

""" 65

6.1 MATLAB Y LA PRoGRAMactÓN """""

6.2 EotronoE rExro""""

6.3 ScuPrs"

"""""' 65

"""""'67

6.4Ft-lNctoNesyM-rtcrrenos.FLINCTI0N,EVALYFEVAL

6.5 Verueelss LocALES Y

GLoBALEs

6.6TtposDEDAros

6.7 Cor¡rn.ot-t';;;;;'BucLEsFoR'wHILErIFELSEIF

 

'

"""""""'73

68

 

""""""""""'75

'

"""

"' "'' ""''' ""2

INDICE 5

6.9.1 Método

de Euler

:

86

6.9.2 Método

de Heun

81

6.9.3 Método de las series de Taylor

ECUACIONES EN DIFERENCIAS CON VALORES INICIALES, VALORES EN LA FRONTERA Y EN DERIVADAS PARCIALES

7.I SOLUCIÓN NUMÉRICADEECUACIONES

DIFERENCIALES

7.2 ECUACIoNES

DIFERENCIALES oRDINARIAS CON VALORES INICIALES

7.3 EcUACToNES DTFERENCTALES oRDINARIAS coN vALoRES EN LA FRoNTERA

7.4 EcUACtoNES DIFERENCTALES

EN DERTvADAS pARCIALES

88

95

95

95

99

102

Capítulo 1

INTRODUCCION PRACTICA A MATLAB

CÁlCuT,O NUMÉRICO CON MATLAB

Podemos usar Matlab como una computadora numérica de gran poEncia. La mayoría de las calculadoras manejan números sólo con un

grdo

de precisión prefijado, sin embargo Matlab realiza cálculos exactos

precisión que sea necesaria. Además,

podemos realizar operaciones

a diferencia de las

no sÓlo con nÚmeros

Grn la

*¡ladoras,

iüvftJuales, sino también con objetos tales como las matrices.

La mayoría de los temas del cálculo numérico clásico, son tratados ei¡ este software. Soporta cálculo matricial, estadística, interpolación, ajuste

pr

mínimos cuadrados, integración numérica, minimización de funciones,

pgramación lineal, resolución numérica de ecuaciones algebraicas y

frrenciales y

un largo etcétera de procesos de análisis numérico que

hrrrc viendo altratar los sucesivos temas de este libro.

Veamos algunos ejemplos de cálculo numérico con Matlab. (Como

sabemos, para obtener los resultados es necesario teclear Enter una vez

¡p

ffiritas 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) También podemos obtener el valor de 3 elevado a 100, sin haber fijado antes la precisión, basta para ello teclear 3^100.

» 3^100

ans =

 

{

5.1538e+047

I

3) También podemos utilizar el comando "format long e" para pasar el resultado de la operación anterior a notación científica con 16 dígitos más

"j {

t

I

exponente.

ú

»» format long e

»» 3^100

I

ans =

I

5.1 537 7 5207 3201 1 5e +0 47

4) También podemos trabajar con números complejos. Obtendremos

el resultado de la operación (2+3i) elevado a 10, tecleando la expresión

(2+3i)^10,

» (2 + 3¡)^10

ans =

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

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

»» format short

» (2 + 3¡)^10

ans =

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

f,

m

ü

l

§

§

l

I

CAPÍTULo 1. INTRoDUCCIÓN PRÁCTICA A MATLAB 9

6) También podemos calcular el valor de la función de Bessel en el

punto 11.5 . Para ello teclearemos Besselj(0,11.5).

» Besselj(O, 11.5)

ans =

0.2150

7) También podemos realizar integrales numéricas. Para calcular la

integral entre 0 y n de la función Seno(Seno(x)) teclearemos la expresión

int(sin(sin('x')), 0, pi).

» int(sin(sin('x')), 0, pi)

ans =

1235191 1 62052677 122517 9981 3685248*pi

Estos temas serán tratados más a fondo en sucesivos capítulos a lo

largo del libro.

cÁr,cur.o SIMBóLICO coN MATLAB

Matlab maneja perfectamente el cálculo matemático simbólico,

manipula con facilidad y rapidez las fórmulas y expresiones algebraicas y

puede realizar la mayoría de operaciones con las mismas. Puede expandir, factorizar y simplificar polinomios y expresiones racionales y trigonométricas,

b,

¡

I

r

:

I

puede

encontrar soluciones

algebraicas de ecuaciones polinómicas y

puede evaluar derivadas e

integrales

simbólicamente y encontrar funciones solución de ecuaciones diferenciales,

puede manipular series de potencias, límites y muchas otras facetas de la

matemática algebraica.

sistemas de ecuaciones,

Para realizar esta tarea, Matlab requiere que todas las variables (o

expresiones algebráicas) se escriban entre comillas simples. Cuando Matlab

recibe una variable o expresión entre comillas, considera que es simbólica.

Veamos algunos ejemplos de cálculo simbólico con Matlab.

10 ECUACIONES DIFERENCIALES CON MNTLqg

1)Podemoselevaralcubolasiguienteexpresiónalgebraica:

2. Esto se consigue

tedeándo la siguiente expresiÓn:

iesultado será otra expresión al gebraica:

(x+1)(x+2)- (x+2)

li-pJro tr(-* r ¡1x*Z¡xürzrg;l El

expand('((x + 1).(x + 2)'(x + 2)12¡43',

ans =

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

2)Podemosfactorizarelresultadodelcálculodelejemploanterior

2)-(x + 2)"2)^3')

tecleandá: factor('((x + 1)*(x +

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

ans =

-(x+2)^3

3)PodemosresolverlaintegralindefinidadelafunciÓn

i nt('x^2*sin(x)^2"'x')

(x^2)Sen'o(x)^2 tecleando:

»» 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:

,,

ii :l fl

t,i

[l rt rl

,1

I

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*x

5)PodemosexpresarelresultadoanteriorconnotaciÓnmatemática

más elegante:

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

fl;E

cnpíruLo 1. rNTRoDUcclóru pnÁcrlcn A MATLAB 11

a-

n:

al-

7.12x cos(x) sin(x)

1/4 cos(x) sin(x)

+L/6x

+ L/4 x

-L/2

xcos(x)

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

fxr

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

,.

I

-Llg

x

68

+2/45x

-L|3LSx

10

+ o(x

L2

)

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

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

ETII

0l

Ll2* (49-L2*al n (L/211

L/2* (49-L2*al n lL/2) 1

8) Podemos hallar las cinco soluciones de la ecuación x^5+2x+1=0:

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

z 5+2*_2+11

Como el resultado obtenido no expresa explícitamente las cinco

aplicamos el comando "allvalues":

T

Éüca

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

-=

9- . 87 96 97 L97 9298240* i)

ü:--7018735688558 61 9+ . 87 9697L97 9298240*il

-.48638903s934s4301

I--?01873568855861

-L

12 ECUACIONES DIFERENCIALES

CON MATLAB

I . 9450680868231334- . 8545175L44390459*il

I . 94s0680868231334+. 8s45175t44390459*il

Por otra parte, V, para trabajar con

,"óión. De eita forma,

las

Matlab puede utilizar las librerías del programa Maple

matemática simbÓlica y poder extender así su campo de

se puede usar Matlab para trabajar en temas como

formas diferenciales, la geometría euclídea, la geometría proyectiva, la

estadística, etc.

A su vez,

tambíén se pueden ampliar temas del cálculo numéri@,

librerías desde Matlab las librerías de Maple (combinatori4

utilizano las

optimización, teoría de números, etc')

MATLAB Y MAPLE

en las librerías del programa Maple . Siempre qtr

Maple desde Matlah' correspondiente en d

Matlab se apoya

sea necesario acudir

entorno Maple. Hay se ha instaiado el Toolbox".

á cualquier comado o función de

de la sintaxis

se utiliza el comando "maplá" seguido

que constatai que

esta disponibilidad solo es posible

si

;'Tóolbox"

de cálculo simbólico "Extended Symbolic

Mill

Para utilizar un comando Maple desde Matlab, Ia sintaxis es h

siguiente:

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

o también:

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 funciÓn Maple con N argumentos desde Matlab b sintaxis es la siguiente:

maple('sintaxis-de-la-función-en-entorno-Maple', argumentol,

argumento2,

,

argumentoN)

Veamos algunos ejemplos al respecto.

1) Podemos calcular el límite de la función (x^3-1)/(x-1) cuando ,--

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

cApÍruLo 1. tNTRoDUccrórrr

pRÁcrtca A MATLAB 13

ans =

e

3

e

0

También podría haberse utilizado la siguiente sintaxis:

h

o,

a,

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

ans =

3

2) Podemos calcular el máximo común divisor entre 10.000 y 5.000:

ue

¡b,

el

rsi

rth

la

r maple('gcd', 10000, 5000)

¿lfls =

5{n0

CNÁTTCOS CON MATLAB

Matlab produce gráficos de dos y tres dimensiones, así como

mntornos y gráficos de densidad. Se pueden representar los gráficos y listar bs datos, permite el control de colores, sombreados y otras características de los gráficos, también soporta gráficos animados. Los gráficos producidos por Matlab son portables a otros programas.

l, la

->1:

Veamos algunos ejemplos de gráficos con Matlab

't) Podemos representar la función xSeno(1/x) para x variando

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

1.1

r r=linspace(-pi/4,pi/4,300) ;

» y=x.r'sin(1./x)'

» plot(x,y)

74 ECUACIONES DIFERENCIALES

CON MATLAB

Figura 1.1

2) Podemos dotar al gráfico anterior de las opciones de marco y

rejilla, así como de título para el propio gráfico y etiquetas para sus ejes. Ver figura 1.2.

» x=l i nspa ce(-pil 4,pil 4,300) ;

» y=x.*s¡n(1./x);

» plot(x,y);

» grid;

» xlabel('Variable independiente X');

»» ylabel('Variables dependientes Y, Z');

» title('Funciones Seno y Coseno sobre los mismos ejes')

É

-

-q

o.E

ü-E

ñ4

E n,:

۟ g

-ü.2

-ú,4 r0 E

FuncioFe6

A.6

.il.{-

EEno

y Coséño

sohre

los

-A_2

ú

tr_:

Varisble independaeñIe X

mismas

[.4

Figura 1.2

ejeE

0.5

O.E

3) Podemos generar un gráfico de superficie paru la

z=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 décimas . Ver flq--.

CAPíTULo 1. INTRoDUCCIÓN PRÁCTICA 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. »» surf(X,Y,Z)

^2+Y .^21:'

Figura 1.3

Estos gráficos tridimensionales permiten a la perfección hacerse una idea de las figuras en el espacio, y son muy útiles a la hora de determinar

visualmente intersecciones entre distintos cuerpos, generación de

volúmenes de revolución y desarrollos de todo tipo.

4) Podemos generar un gráfico tridimensional, correspondiente a la hélice en coordenadas paramétricas: x=Sen(t), y=Cos(t), z=t. Ver figura 1.4.

)n

b

» t=0:pi/50:1O*pi;

» plot3(si n(t),cos(t),t)

Figura 1.4

16 ECUACIONES DIFERENCIALES

CON MATLAB

Podemos representar una curva plana dada por sus coordenadre

0yn, tomando puntc

polares r= Cos(2t).Sen(2t) paratvariandoentre

equidistantes una centésima 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 gráfico de una función considerada como

simbólica, utilizando el comando "ezplot". Ver figura 1-6

»» },='¡,13¡1tn2-11';

»r ezplot(y,[-5,5])

x"3t{x^2- 1 )

En el

conceptos.

0

-1rt

'5

I

Figura 1-6

correspondiente capítulo de gráficos ampliaremos

estos

cnpiruro 1. rNrRoDuccróru pnÁclrca A MATLAB 17

AS

OS

no

tos

}IOTACION GENERAL

Siempre que se utiliza un programa, es necesario conocer las

características generales sobre notación, con la finalidad de introducirnos en la práctica con el mismo. La mejor forma de aprender Matlab es utilizar el programa. Cada ejemplo consiste en el input del usuario encabezado con el prompt "»" y la respuesta de Matlab en la línea siguiente. Ver figura 1-7.

úmBa¡ds

omnands fop

to

qet

nore

started:

infornátion:

intro,

A:[123;456;7ACl

d€mo, help

help,

uhatsneu,

hetp

info,

subscribe

Figura 1-7

En otras ocasiones, y dependiendo del tipo de entrada (input de que se le proponga a Matlab, devuelve la respuesta utilizando la

usuario)

expresión "ans= n'. Verfigura 1-8

:-

lt

2*2

Figura 1-8

Es necesario poner atención en la diferencia entre mayúsculas y

minúsculas, eltipo de paréntesis o corchetes, la cantidad de espacios y en Ia puntuación (comas, puntos y comas).

18 ECUACIONES DIFERENCIALES CON MATLAB

AYUDAS CON COMAI\DOS

Ya hemos visto en el capítulo anterior cómo se obtenía ayuda

utilizando los menús desplegables de Matlab.

Pero, además, la ayuda también puede obtenerse a través de

comandos (instrucciones o funciones), implementados como objetos de

Matlab.

Se puede utilizar la ayuda de acceso inmediato para acceder a

diversa infor-mación utilizando el comando help.

» help

HELP topics:

matlab\qeneraJ

matTab\ops

natlab\lanq

matlab\elmat

matfab\effun

matlab\

specfun

matlab\natfun

matfab\datafun

matfab\pofyfun

matlab\ funfun

matTab\sparfun

matTab\graph2d

matlab\graph3d

natlab\

specqraph

matTab\qraphics

natfab\uitools

matfab\strfun

matfab\iofun

matlab\tinefun

mat fab\datatypes

matfab\winfun

(DDE/ActiveX)

matlab\demos

tooJbox\

syrnl:o 11c

toolbox\tour

toofbox\locaf

GeneraL purpose commands.

Operators

and speciaf characters,

Tanquage constructs.

and

Proqramminq

Elementary

Elementary

Specialized

Matrix

Data

matrices

matrlx manipulation.

algebra.

math functions. nath functions.

functions - numericaf finear

functions

anafysis and Fourier transforms.

and

poTynomials.

and ODE sofvers.

Interpofation

Function

Sparse matrices.

Two dimensi onaJ

graphs.

Three

dimensional graphs.

Specialized qraphs.

Handle Graphics.

GraphicaT

user interface

toofs.

strings.

File input/output.

Time and dates.

Data types and structures.

Character

- ttlindows Operating System Interface

Fr,ie-.

trxamples and demonstrations. SynboLic Math Toofbox.

MATLAB Tour

Preferences.

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. También se puede pedir ayuda sob.=

cualqu¡er tema del contenido utilizando el comando help tema.

» help ¡nv

CAPÍTULO 1. INTRODUCCIÓN

PRÁCTICA A MATLAB 19

ruda

ide

ide

era

ctonos

sobre

:iilii-

l.larrix

inverse.

the inve,se

-',-.''Y) is

- ,.,::ning messaqe -is

:-==::i y sinqular.

-:== a-¿so SLASH, PINV,

j,¡=-''^ded

methods

:-=- p sym/inv.m

of

the square matrix

X.

prin¿€'¿ if

X is

badJv scafed ot

COND, CONDEST, NNLS, LSCOV.

r lrclp matlab\elfun

!-=:=::tary math functions. !:-::::cmetric.

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

Base 2 povrer and scafe floating point number. Square raot.

Next higher

power of 2.

point

2A ECUACIONES DIFERENCIALES

CON MATLAB

abs

- Alcsofute vafue.

- Phase angle.

conj

- Complex conlugate.

imag

- Complex imaqinary part.

real-

- Complex reaT part.

unwrap

isreal

cpTxpair

- Unwrap phase angJe.

- Unwrap phase angJe.

- True for reaf

array.

- Sort numbers into complex c o n j u q a t e pairs.

- Sort numbers into complex conjuqate pairs.

Roundinq and

fix

f foor

ceif

round

mod

rem

stqn

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 de

caracteres (lookfor secuencia) que permite encontrar todas aquellas

funciones o comandos que se refieren a dicha secuencia o la contienen.

Este comando es muy útil, bien cuando no se dispone de ayuda directa para la secuencia especificada, o bien para ver la ayuda de todos los comandos que contienen la secuencia. Por ejemplo, si buscamos ayuda para todos los comandos que contienen la secuencia complex, podemos usar el comando

lookfor complex para ver en qué comandos Matlab ofrece información al

respecto.

» lookfor complex

ctranspose.m:

CONJ

Z'

Complex conjuqate

Complex conluqate.

transpose.

CPLXPAIR Sort numbers into

complex conjuqate pairs.

IMAG

Complex imaqinary part.

REAL

Complex real

part.

CDF2RDF Complex diagonal form to reaf bfock

RSF2CStr Real bfock

B5ODE Stiff problem,

CPLXDEMO Maps of functions of a

dlaqonaL form.

form.

diagonal

linear

form to complex diaqonal

with

complex eigenvalues complex variabfe.

(85 of

CPLXGRID Polar

coordinate

complex qrid. of a complex variabfe.

a ,,smoke rinq,,

CPLXMAP Plot a function

GRAFCPLX Demonstrates complex function pJots in MATLAB. ctranspose.m: *TRANSPOSE Syml:olic matrix complex transpose.

SMOKE Complex matrix

wlth

pseudospectrum.

EHL) .

capÍruro 1. TNTRoDUCcTóru pnÁclcnA MATLAB 21

COMANDOS DE ESCAPE Y SALIDA AL ENTORNO DOS

Existen tres formas de salir desde la ventana de comandos de

lilaüab al entorno del sistema operativo MS-DOS para ejecutar tareas

tsrnporales.

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 etiqueta

l-

::fmero de serie

def

vc¡fumen es 145C-72P2

lde

¡llas

nen.

para

rdos

s los

¡ndo

in al

l-:=ctorio

de D : \MATLAB52\bin

<DIR>

- ta"S BAT _10 DLL

:-:

:3E-Z

::W-)OL BAT

:':

;I;:

:Tr--

.}E{

BAT

- _-t- _1;sE DAT

m,_:_,:-<i DLL

=,-

BAT

BAT

DLL

DLL

-:?TS

<DIR> 1.872

219.136

)

27¿

i4.992

1.973

25.ABB

16.896

2.274

470

66.560

10 archivo (s)

2 directorio (s)

13/A3/98

13/03/98

0:76

0:76

19/01/98 14:14 bccopts.bat

21/08/97 22:24 cLbs770.dJf

L3/03/98

0:28 cnex.bat

conptool.bat

19/01/98 74:74 df50opts.bat

19/01/98 14:14

1B/12/97

1B/12/97 15:34 fnat.dfl

13/03/98

13/03/98

02/05/97

16:34 fenq.dll

0:28 fmex.bat

0:27 license.dat

B:34 w32ssi. dff

11.348.865 bytes

159.383.552 bytes fibres

El comando lorden_dos & se utiliza para ejecutar la orden del DOS especif¡cada en modo background. La orden se ejecuta abriendo una

rentana de ambiente DOS sobre la ventana de trabajo de Matlab tal y como

se indica en la figura 1-9. Para volver a ambiente Matlab basta con pulsar

Eri el ratón en cualquier zona de la ventana de comandos, en cuyo caso se cierra automáticamente la ventana de ambiente DOS. Se puede volver a la

uentana del DOS en cualquier momento para ejecutar cualquier orden del

sbtema operativo pulsando el icono etiquetado Simbolo de MS-DOS situado en la parte inferior de la pantalla.

22 ECUACIONES DIFERENCIALES CON MATLAB

r

,},

,t;

i.r

ir

»

;

i *

;

B

L

i:

Figura 1-9

El comando orden_dos I se utiliza para ejecutar la orden del Dos

con pantalla de Matlab.

con los tres comandos anteriores, no sólo pueden ejecutarse

comandos del DOS, sino también todo tipo de ficheros ejecutables o tareas

batch.

El comando dos orden-dos se utiliza también para ejecutar la orden del DOS en modo automático sobre la ventana de comandos de Matlab.

Para salir definitivamente de Matlab, basta con teclear quit en la

ventana de comandos y, a continuación, pulsar Enter.

MATLAB Y LA PROGRAMACIÓN

Combinando adecuadamente todos los objetos definidos en Matlab,

adecuados a las reglas

de trabajo definidas en el programa, se puede

construir un código de

Los programas consisten habitualmente en una serie de instrucciones en las que Se calculan valores, se les asigna un nombre y se reutilizan en cálculos

posteriores.

programación muy útil en la investigaciÓn matemática'

cnpírulo 1. rNTRoDUcclóru pnÁcrca A MATLAB 23

Al igual que en lenguajes de programación como C o Fortran, en

se pueden escribir programas con bucles, control de flujo condicionales. En Matlab se pueden escribir programas

e

tales, es decir, definir una secuencia de pasos estándar a

Como en C o en Pascal, se puede realizar

un cálculo repetitivo

Do, For o While. El lenguaje de Matlab también incluye

iones condicionales como lf Then Else. Matlab también soporta

funciones lógicas, como And, Or, Not y Xor.

Matlab soporta

la programación procedimental (con

),

procesos

la

recursivos, bucles

la programación funcional y

ión orientada al objeto. Veamos dos ejemplos sencillos de

ras. El primero genera lamafriz de Hilbert de orden n ,y el segundo

Ios números de Fibonacci.

EI DOS

cutiarse

r tareas

a orden

ab.

It en Ia

Madab,

puede

máüca.

¡ en las

álculm

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

l:n

=

ftri

='l¡¡

a(ii) = eval(t);

cnd

los números de Fibonacci

$ll;i=l;

i=i+l

(i)+f(¡-r)<1000

{i+2)=f(i)+f(i+l);

Capítulo 2

ECUACIONES DIFERENCIALES DE

R ORDEN. ECUACIONES EXACTAS,

EN VARIABLES SEPARADAS,

HOMOGENEAS Y LINEALES

MUACIONES DIFERENCTALES DE PRIMER ORDEN

Etr número de comandos que implementa Matlab relativos a este tema

rrry elevado, pero muy eficiente. De todas formas, es posible seguir

los métodos algebráicos de resolución ya conocidos para

Fo{¡lzrma

fro

de ecuación diferencial. También se implementan métodos de

aproximados de ecuaciones y sistemas de ecuaciones diferenciales.

E comando básico para resolución de ecuaciones diferenciales es

Este comando computa soluciones simbólicas de ecuaciones

ordinarias y sistemas. Las ecuaciones son especificadas por

simbólicas conteniendo la letra D para denotar diferenciación, o

A

D2, D3,

,etc,

para denotar diferenciación de orden 2,3,

,etc.

l¡n de la letra D se sitúa 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 es r es la variable independiente por defecto, y en segundo lugar t.

26 ECUACIONES DIFERENCIALES CON MATLAB

Se pueden especificar condiciones iniciales en ecuaciones

adicionales, mediante la forma y(a)=b o Dy(a)=b,

iniciales no se especifican, las soluciones de las ecuaciones diferenciales

contienen constantes de integración C1

importantes de Matlab que resuelven ecuaciones diferenciales son los

, etc. Los comandos más

,etc.

Si las condiciones

, C2,

siguientes:

dsolve('ecuación','v')

Resuelve la ecuación diferencial siendo v la

variable independiente (si no se especifica 'v', la

variable independiente es x). Solo devuelve

soluciones explícitas

dsolve('ecuación','condición_inicial',

,'v')

Resuelve la ecuación diferencial sujeta a !a

condición inicial especificada

dsolve('ecuación','cond1','cond2',

,'condn','v')

Resuelve Ia ecuación diferencial sujeta a las condiciones iniciales especificadas

dsolve('ecuación', 'cond1, cond2,

,

condn' , 'v')

Resuelve la ecuación diferencial sujeta a las condiciones iniciales especificadas

dsolve('ec1' r'ec?' r

,r'ecn','condl','cond2'r

,'condn','v')

Resuelve el sistema diferencial sujeto a las condiciones iniciales especificadas (explícitas)

dsolve('ec1, ec2,

,

ecn', 'cond1, cond2,

,

condn' , 'v')

Resuelve el sistema diferencial sujeto a las condiciones iniciales especificadas

maple('dsolve(ecuación, func(var))')

Resuelve la ecuación diferencial, considerando var como variable independiente y func como variable dependiente (devuelve soluciones implícitas)

maple('dsolve({ecuación, cond1,cond2,

condn},

func(var))')

CAP|TULO 2. ECUACIONES DIFERENCIALES DE PRIMER ORDEN 27

-

leS

]es

iles

nás

los

Resuelve la ecuación diferencial sujeta a las condiciones iniciales especificadas

maple('dsolve({ec1, ec2,

,ecn},

{func1(var), func2(var),

,funcn(var)})')

Resuelve el sistema de ecuaciones diferenciales especificado (devuelve soluciones implícitas)

maple('dsolve(ecuación, func(var),'explicit')')

t, l?

Resuelve la ecuación diferencial, ofreciendo la solución en forma explícita, si es posible

A continuación se mostrarán algunos ejemplos.

Resolvemos en primer lugar ecuaciones diferenciales de primer

oreden 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 también pueden resolverse de la s§uiente forma:

r pretty(maple('dsolve(d iff(y(x),x)= a*y,y(x))'))

s)

io var

riable

»

r

r

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

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

exp(a x) b

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 ecuación de segundo grado y primer orden.

28 ECUACIONES DIFERENfCIALES CON MATLAB

»» 1¡ = 6lss¡re('(Dy)^2 + yn2 = 1', 'y(0) = 0', 's')

I sin(s)]

l-sin(s)l

que también puede resolverse de la siguiente forma:

» pretty(maple('dsolve({diff(y(s),s)^2

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

- sin(s)

+ y(s)"2 = l, y(0) = 0}, y(s))'))

Ahora resolvemos una ecuación de segundo orden y pr¡mer grado'

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

cos(a x)

A continuación 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) :

f(x) :

- C2 exp(3 x) sin(4 x) + Cl exp(3 x) cos(4 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 también 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*9fiL

f(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 SBPARADAS

Una ecuación diferencial en variables separadas presenta la fonna f(x)dx = g(y)dy. La resolución de este