Ecuaciones Diferenciales Con MATLAB Cesar Perez Lopez

October 4, 2017 | Author: prodescargar | Category: Numerical Analysis, Equations, Differential Equations, Analysis, Physics & Mathematics
Share Embed Donate


Short Description

Download Ecuaciones Diferenciales Con MATLAB Cesar Perez Lopez...

Description

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........25

1l EcuACIoNES DIFERENCIALES DE PRIMER oRDEN ]JECUACIONESENVARIABLESSEPARADAS..................

]j

............... EXACTAS...

ECUACIONES DIFERENCIALES HOMOGÉNEAS

:' 4 ECUACIONES DIFERENCIALES

1,i ECUACIONES DIFERENCIALES LINEAIES

]I

...............25 ...............28 ........... 30 ............ 33 .................... 35

TACIONES DIFERENCIALES DE ORDEN SUPEROR. TRANSFORMADA DE ...................37

I,ñPLACEYTIPOSESPECIALESDEECUACIONES...... 3.I ECUACIONES ORDINARIAS DE ORDEN

SUPERIOR.

.....,.,..,...,...37

Jl

ECUACIONES LINEALES DE ORDEN SUPERIORHOMOGÉNEAS EN ..................39 COEFICIENTES CONSTANTES.

]S ECUACIONES NO HOMOGÉNEAS CON COEFICIENTES CONSTANTES, \-ARTACIÓN DE

PARÁMETROS...........

....,.,41

J.+ ECUACIONES NO HOMOGÉNEAS CON COEFICIENTES VARIABLES.

CAUCHY-EULER.... 3*i TRANSFORMADA DE LAPLACE .................. -1.6 POLINOMTOS ORTOGONALES ECL]ACIONES DE

,.,....44 .............45 ............. 48

3.6.1 Polinomios de Chebychev de primera y segunda especie.....................'........... 48

Legendre................... 3.6.3 Polinomios asociados de Legendre 3.6.4 Polinomios de Hermite................... 3.6.2 Polinomios de

........................49 ..........................49 ..........................49

4

CON ECUACIONES DIFERENCIALES

MÑ 50

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

so

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

Jacobi 3.6'7 Polinomios de Gegenbauer de 3.6.8 Polinomios DE AIRY Y 3.7 FLTNCIONES

""""""' BESSEL

.."...".

51

ECUACIONESDIFERENCIALESponITÉroDoSAPRoXIMADOS...................53

"""""53 4.lEcuAcIoNEs"o*Ñ"o*o*'**á*AI-lNo'un{EArEsYNoI.lN{FAtrs' """"""' 53 rr¡Étooosepnoxnr¡anos TAYLoR """"""" LAS sERIES DE """""' 56 4.2 Er- MÉroDo DE 4.3

Er-MÉroDoDERtrNGE-Kurre""""

DIFERENcIALEs srsrEMAs DE EcuAcroNEs TTAS"""""""""' DIFERENCIAS FTN

Y EcuAcIoi::.::................ se ........59

5.lSISTEMAS,"u**io*II.IEALES;OMoGENEASCoNCoEFICIENTES coN CoEFICIENTES CONSTA\TTES

OE*oáo*"^*r*ono*oo^t* CONSTANTES 53EcuAcloNEsÑ'*u**'FINnAs"""'

s2 STSTEMAS

........60

""""""""'

A LAs EcuAcroNrs EN MATLAB' APLIcAcroNEs NuuÉnTco o cÁl,cut """

MATLAB Y LA PRoGRAMactÓN 6.2 EotronoE rExro""""

6.1

6.3

"""""

61

65

"""""' 65 """""'67

ScuPrs"

"""""""'73 6.4Ft-lNctoNesyM-rtcrrenos.FLINCTI0N,EVALYFEVAL...'.....................68 6.5

Verueelss

LocALES Y

GLoBALEs

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

6.6TtposDEDAros 6.7

Cor¡rn.ot-t';;;;;'BucLEsFoR'wHILErIFELSEIF ....'..""" "' "'' ""''' ""2

INDICE

Euler....... 6.9.2 Método de Heun....... 6.9.3 Método de las series de Taylor...... 6.9.1 Método de

...............:.....

5

...... 86

......81 ...... 88

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

7.I SOLUCIÓN NUMÉRICADEECUACIONES DIFERENCIALES .........................95 7.2 ECUACIoNES DIFERENCIALES oRDINARIAS CON VALORES INICIALES ......................... 95 7.3 EcUACToNES DTFERENCTALES oRDINARIAS coN vALoRES EN LA FRoNTERA.............. 99 7.4 EcUACtoNES DIFERENCTALES EN DERTvADAS

pARCIALES...

................. 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 Grn la precisión que sea necesaria. Además, a diferencia de las *¡ladoras, podemos realizar operaciones no sÓlo con nÚmeros 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 ¡p sabemos, para obtener los resultados es necesario teclear Enter una vez 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

"j

{

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

tI

ú 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

m

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

f,

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

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

b, ¡

I

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, puede encontrar soluciones algebraicas de ecuaciones polinómicas y sistemas de ecuaciones, 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.

r

: I

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.

ECUACIONES DIFERENCIALES CON MNTLqg

10

1)Podemoselevaralcubolasiguienteexpresiónalgebraica: 2. Esto se consigue tedeándo la siguiente alexpresiÓn: otra expresión gebraica: li-pJro tr(-* r ¡1x*Z¡xürzrg;l El iesultado será

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



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

ans =

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

2)Podemosfactorizarelresultadodelcálculodelejemploanterior

+ tecleandá: factor('((x + 1)*(x + 2)-(x 2)"2)^3') »

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

ans = -(x+2)^3

3)PodemosresolverlaintegralindefinidadelafunciÓn

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

»»

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 =

ii:l fl

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

t,i

[l

rl rt

5)PodemosexpresarelresultadoanteriorconnotaciÓnmatemática más elegante:

,1 I

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

fl;E

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

11

a-

n:

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

al-

-L/2 xcos(x)

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

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

68 ,. -Llg x +2/45x I

fxr

7)

Podemos resolver

-L|3LSx

la

10

+

o(x

L2 )

ecuación 3ax-7x^2+x^3=0

(a, es

un

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

ETII

Ll2* (49-L2*al L/2* (49-L2*al

n n

0l (L/211

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

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

T Éüca

-=

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

-L

12

I I

ECUACIONES DIFERENCIALES CON MATLAB

. .

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

Por otra parte, Matlab puede utilizar las librerías del programa Maple V, para trabajar con matemática simbÓlica y poder extender así su campo de ,"óión. De eita forma, se puede usar Matlab para trabajar en temas como la las formas diferenciales, la geometría euclídea, la geometría proyectiva, estadística, etc.

A su vez, tambíén se pueden ampliar temas del cálculo numéri@, utilizano las librerías desde Matlab las librerías de Maple (combinatori4 optimización, teoría de números, etc')

MATLAB Y MAPLE

qtr Matlab se apoya en las librerías del programa Maple . Siempre Matlah' sea necesario acudir á cualquier comado o función de Maple desde se utiliza el comando "maplá" seguido de la sintaxis correspondiente en d posible si entorno Maple. Hay que constatai que esta disponibilidad solo es ;'Tóolbox" de cálculo simbólico "Extended Symbolic Mill se ha instaiado el Toolbox". 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

ap

I

e'

Para utilizar una funciÓn Maple con N argumentos desde Matlab 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 )')

,--

b

cApÍruLo 1. tNTRoDUccrórrr pRÁcrtca A MATLAB

13

ans = 3

e

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

0

h o,

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

a,

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. Veamos algunos ejemplos de gráficos con Matlab

l, la

't) Podemos representar

efitre

-xl4 y

ru/4,

la función xSeno(1/x) para x variando 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) ->1:

;

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') »

»»

FuncioFe6

o.E

EEno y Coséño sohre los mismas

ejeE

ü-E

É

ñ4

-q

E n,:

۟ g

-ü.2 -ú,4 r0

E

A.6

.il.{-

-A_2

ú

tr_:

Varisble independaeñIe X

[.4

0.5

O.E

Figura 1.2

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

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

v !r

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. » t=0:pi/50:1O*pi;

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

)n

b

Figura 1.4

16

ECUACIONES DIFERENCIALES CON MATLAB

Podemos representar una curva plana dada por sus coordenadre r= Cos(2t).Sen(2t) paratvariandoentre 0yn, tomando puntc equidistantes una centésima en el intervalo considerado. ver figura 1.5.

polares

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

»r

},='¡,13¡1tn2-11'; ezplot(y,[-5,5])

x"3t{x^2- ) 1



0

-1rt

'5

I

Figura 1-6

En conceptos.

el correspondiente

capítulo

de gráficos ampliaremos

estos

cnpiruro AS

1. rNrRoDuccróru pnÁclrca A MATLAB 17

}IOTACION GENERAL

OS

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 to qet started: intro, omnands fop nore infornátion:

d€mo, help hetp help, uhatsneu, info,

subscribe

A:[123;456;7ACl

Figura 1-7

no

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

:- 2*2 lt

Figura 1-8 tos

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, 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 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

:iiliiruda

l.larrix inverse. -',-.''Y) is the inve,se of the square matrix X. - ,.,::ning messaqe -is prin¿€'¿ if X is badJv scafed ot :-==::i y sinqular. -:== a-¿so SLASH, PINV, COND, CONDEST, NNLS, LSCOV.

ide ide

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

r lrclp matlab\elfun

era

!-=:=::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. and dissect - Base 2 loqarlthn ctonos sobre

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

floating

point number.

point

2A

ECUACIONES DIFERENCIALES CON MATLAB

abs

conj imag realunwrap

isreal cpTxpair

-

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.

Roundinq and remainder. fix f foor ceif round mod

rem

stqn

-

tawards zero. towards minus infinity. towards plus lnfinlty. towards nearest integer. Modulus (siqned remainder after division) Round Round Round Round

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

__

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 l-:=ctorio de D : \MATLAB52\bin 13/A3/98 0:76

lde



rdos s los ¡ndo

ta"S BAT :-: _10 DLL :3E-Z BAT ::W-)OL BAT :': -:?TS BAT ;I;: DLL :Tr-DLL .}E{ BAT

in

m,_:_,:-> [x1 ,x2] =ss¡r"cion2 (l ,2,31

x7: -1.0000 + 1.4742i .-a

-

-1.0000 - 7.4742i

CAPíIULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAs ECUACIONES... 73

Si pedimos ayuda sobre la función ecuación2 tenemos lo siguiente:

>> help ecuacion2

Esta

función

resuefve

fa

ecuación

de

segundo qrado

ax^2+bx+c:0

cuyos coeficientes son a, b y c (parámetros de entrada) y cuyas sofuciones son x7 y x2 (parámetros de salida) La evaluación de una función en sus argumentos (o parámetros de entrada) cuando son cadenas se realiza a través del comando eval, cuya sintaxis es la siguiente: eval(expresión)

Ejecuta la expresión cuando es una cadena

Como ejemplo evaluamos una expresión carácter que define matiz mágica de orden 4.

la

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

M4: 162313 511108 97672 474757 6.5

VARIABLES LOCALES Y GLOBALES

Normalmente, cada función de MATLAB definida como un M-fichero contiene sus variables como variables locales, es decir, como variables que tienen su efecto en el inter¡or del M-fichero, separadamente de otros M-ficheros y del espacio de trabajo base. No obstante, es pos¡ble definir var¡ables en el interior de M-ficheros de modo que tengan efecto simultáneamente en el interior de otros M-ficheros y en el propio espacio de trabajo base. Para ello es preciso definir las variables como globales con 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 función

es accesible separadamente para el resto de las funciones y para

el

espacio de trabajo base línea de comandos. Si la variable global no existe, la primera vez que se define en la sentencia GLOBAL, se inicializará como

74

ECUACIONES DIFERENCIALES CON MATLAB

la matriz vacía. Si ya existe una variable con el mismo nombre que la que se está definiendo como global, MATLAB emite un mensaje de peligro y cambia el valor de la variable a enlazar como global. Es conveniente declarar una variable como global en cada función que necesite acceso a ella, y también en la línea de comandos, para tener acceso a ella desde el espacio de trabajo base. En el interior de las funciones el comando GLOBAL se sitúa al principio (antes de cualquier ocurrencia de la variable). Como ejemplo, supongamos que se quiere estudiar el efecto de los coeficientes de interacción cr y B en el modelo de Lotka-Volterra:

t1 = 3'1-a}r3t,

i

z=

-j

z+

P-u1J2

Para ello creamos la función lotka en el M-fichero lotka.m de la Figura 6-14.

Figura 6-14

Si posteriormente sobre la línea de comandos escribimos

lo

siguiente:

)) global ALPIA BETA ALPHA = 0.01 BETA = 0.02

ya se podrán utilizar estos valores globales para o y B en el interior del M-fichero lotka.m (sin tener que volver a especificarlos). por ejempro, podrá realizarse una representación (Figura 6-15) con la sintaxis siguiente:

>> [t,y] = ode23('lotka',0,10, [1; 1]); plot(t,y¡

cAPrruLo 6 CALCULO NUMERTCO EN MATLAB.

APLTCACTONES

A LAS ECUACTONES... 7s

Figura 6-15

6.6 TIPOS DE DATOS En MATLAB hay 14 tipos de datos diferentes que se representan en la Figura 6-'16. ARFIAY

funetion handle

int8. uint§, intl §, uintl Sn

srngJ-e

doubl-e I

int33, uint32

Epar§É

Figura 6-16

A continuación se detallan los distintos tipos de datos: Tioo de dato

Eiemplo

single

Descripción

3*10^38

Precisión numérica simple. Requiere menor almacenamiento que la doble precisión, pero es menor. Este tipo de datos no debe usarse en operaciones

double

3*10^300 5+6i

Doble precisión numérica. Es el tipo de variable más común en MATLAB

matemáticas.

76

ECUACIONES DIFERENCIALES CON MATLAB

speye (5)

sparse

int8, uint8, int16, uint16, int32. uint32

uintS (¡nagic (3) )

Matriz disoersa con doble precisión. Enteros con y sin signo y con 8, 16, y 32

bits de longitud. Posibilitan usar cantidades enteras con manejo eficienfe de memoria. Este tipo de datos no debe us

ars e en ooeraciones matemátic as.

char

'HeIIo'

Caracteres (cada carácter tiene una

ce11

{17 'heI1o' ef'e(2)}

lonsitud de 16 bits). Celda kontiene datos de similar tamaño)

structure user class java class

a.daY = L2 a.color = 'Red'

a.mat = maqic(3) inline ('sin (x) ') java. awt. Erame

Esfructura (contiene celdas de similar tamaño) Clase MATLAB (creada con funciones)

Clase

Jwa

(defrnida en API o propia con

.Iava)

function

@humps

Maneja funciones MATLAB. Puede ser

pasada en una lista de argumentos

handle

evaluada con

Y

fevaf.

6.7 CONTROL DE FLUJO: BUCLES FOR, ELSETF

WHILE E IF

El uso de funciones recursivas, cond¡cionales y definidas a trozos

es muy habitual en matemáticas. Para la definición de este tipo

de natural, la definiciÓn eS Como manejo de bucles. el necesario eS funciones de las funciones se hará a través de M-ficheros.

6.7.1El bucle FOR MATLAB dispone de su propia versión de la sentencia DO (definida en la sintaxis de la mayoría de los lenguajes de programaciÓn). Esta sentencia permite ejecutar de forma repetitiva un comando o grupo de comandos varias veces. Por ejemplo:

': *r

i=1:3, x(i)=O,

end

CAPÍIULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 77

La forma general de un bucle FOR es la siguiente:

for

variable

:

expresión

comandos

end

El bucle siempre empieza con la cláusula for y termina con

la

cláusula end, e incluye en su interior todo un conjunto de comandos que se separan por comas. Si algún comando define una variable, se finaliza con punto y coma para evitar repeticiones en la salida. Normalmente, los bucles se utilizan en la sintaxis de M-ficheros. Veamos un ejemplo (Figura 6-17):

Figtra 6-17 En este bucle hemos definido la matriz de Hilbert de orden (m,n). Si su contenido como un M-fichero de nombre matriz.m, podremos construir cualquier matriz de Hilbert posteriormente ejecutando

guardamos

el

M-fichero

y

especificando los valores para las variables

(dimensiones de la matriz) como se indica a continuación:

)) M=matríz(4,51 M7-

0000

0.5000 0.3333 0.2500

0.

s000

0.3333 0.2500 0.2000

0.3333 0 .2s00 0.2000 0.1567

0-2500 0.2000 0.1667 0.1429

0-2000 0.1667 0.7429 0.7250

my

n

78

ECUACIONES DIFERENCIALES CON MATLAB

6.7.2 El bucle

WHILE

MATLAB dispone de su propia versión de la sentencia WHILE definida en la sintaxis de la mayoría de los lenguajes de programación. Esta sentencia permite ejecutar de forma repetitiva un comando o grupo de comandos un número determinado de veces mientras se cumple una condición lógica especificada. La sintaxis general de este bucle es la siguiente: while condición comandos

end

El bucle siempre empieza con la cláusula while seguida de una condición, y termina con la cláusula end, e incluye en su interior todo un conjunto de comandos que se separan por comas y que se ejecutan mientras se cumple la condición. Si algún comando define una variable, se finaliza con punto y coma para evitar repeticiones en la salida. Como ejemplo escribimos un M-fichero (Figura 6-18) que se guarda con el nombre while1.m, cuya ejecución permite calcular el mayor número cuyo factorial no excede a 10100.

Figura 6-18

Ahora ejecutamos el M-fichero.

)

whi1e1

70

CAPÍTULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 79

6.7.3 El bucle IF ELSEIF ELSE END MATLAB, al igual que la mayoría de los lenguajes de programación

estructurada, también incorpora la estructura lF-ELSEIF-ELSE-END. Mediante esta estructura, se pueden ejecutar secuencias de comandos si se cumplen determinadas condiciones. La sintaxis del bucle es la siguiente: if condición comandos

end

En este caso se ejecutan los comandos si la condición es cierta. Pero la sintaxis de este bucle puede ser más general. if condición comandosl else comandos2

end

En este caso se ejecutan los comandosl si la condición es cierta, y se ejecutan los comandos2 si la condición es falsa.

Las sentencias lF, al igual que las sentencias FOR, pueden ser anidadas. Cuando se anidan varias sentencias lF se utiliza la sentencia ELSEIF, cuya sintaxis general es la siguiente: if condiciónl comandosl elseif condición2 comandos2

elseif condición3 comandos3 'else

end

En este caso se ejecutan los comandosl si condición1 es cierta, se ejecutan los comandos2 si condición1 es falsa y condición2 es cierta, se ejecutan los comandos3 si condición'l y condición2 son falsas y condición3 es cierta, y así sucesivamente.

80

ECUACIONES DIFERENCIALES CON MATLAB

La sintaxis anidada anterior es equivalente, pero más rápida de ejecución, a la sintaxis sin anidar siguiente: if condiciónl comandosl else

if condición2 comandos2 else

if condición3 comandos3 else

end end end

Veamos como ejemplo (Figura 6-19) elsel.m siguiente:

el

M-fichero

de

nombre

Figura 6-19

Al ejecutarlo obtendremos el tipo de número (negativo, par o impar) para un valor de n especificado:

)) else1 (8) , elsel (5) , else1 (-10) n es par

CAPÍTUIO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 81

n es impar A: n es neqativo 6.7.4 SWITCH Y CASE La instrucción switch ejecuta ciertas sentencias basadas en el valor de una variable o expresión. su sintaxis básica es la siguiente: switch expresión (escalar o cadena) case

valorl

sentencias case

% Ejecttasi expresión esvalorl

valor2

sentencias '% Ejectta si expresión es valor2

otherwise sentenciass %o Ejeatta si expression no cumple %o

ningún caso

end continuaciÓn se Presenta un ejemplo de una función que devuelve -1, 0, 1 u otro número según sea la entrada (Figura 6-20).

A

Figura 6-20

82

ECUACIONES DIFERENCIALES CON MATLAB

Después ejecutamos el ejemplo anterior.

>> casel (25)

otro vafor

>> casel (-1) menos uno

6.7.5 COI{TINUE La instrucción continue pasa el control a la iteración s¡guiente en un bucle for o while en el cual aparece ignorando las restantes instrucciones en el cuerpo del bucle. A continuación se muestra el M-fichero continue.m (Figura 6-21) que cuenta las líneas de cÓdigo en el fichero magig.m ignorando las líneas blancas y los comentarios.

Figura6-21

Seguidamente ejecutamos el M-fichero.

)) continuel 25 fineas

6.7.6 BREAK La instrucción break finaliza la ejecución de un bucle for o while en el cual aparece continuando la ejecución en la siguiente instrucción fuera del bucle. A continuación se muestra el M-fichero breakl.m (Figura 6-22) que lee las líneas de código en el fichero fft.m saliendo del bucle cuando se encuentre Ia primera línea vacía.

CAPíTULO 6 CALCULO NUMERICO EN MATLAB. APLICACIONES A LAS ECUACIONES... 83

Figra6-22 Después ejecutamos el M-fichero.

>> breakl

Discrete Fourier transforn. is the discrete Fourier transform (DFT) of vector X. For matrices, the FFT operation is appTied to each column. For N-D arrays, the FtrT operation operates on the fitst non-singleton

';FFT

2; Z * Z 6

* 3 z

Z 3

FFT(X)

dlmension.

is the N-po1nt FFT, padded with zeros 1f X ¡as than N points and truncated if it has more.

FFT(X,N)

-¿ess

FFT(X,[],DIM) or trFT(X,N,DIM) applies the FFT operation across the dlmension DIM.

z

& tror Tenqth N input vector x, the DET is a length N vector X, Z with efements ZN X(k) : sum x(n)*expr-i*2*pi*(k-1)*(n-7)/N), 1 > [T,Y] = ode45(Gsistemal,lO L2),[0 1 1])

98

ECUACIONES DIFERENCIALES CON MATLAB

.0001 0.0001 0

0.0002 0.0002 0.0005

17.6736 71-7424 77 - 8772

12.0000

Y-

0313 0..0627

1.0000 1 .0000 1 .0000 1.0000 1 .0000 1 .0000 1.0000 1.0000 1.0000 7.0000 1.0000 1.0000 1 .0000 0.9999 0.9998 0.9997 0.9995 0.9980

1.0000 7.0000 1.0000 1.0000 7.0000 7.0000 1.0000 1.0000 1.0000 1.0000 1.0000 7-0000 1.0000 1.0000 0.9999 0.9998 0.9997

0.8594 0.7257 0.5228 0 .2695 -0 - 0778 -0 .29i6 -0 - 4098 -0.5769 -0.6735 -0.6987

-0.5705 -0.6876 -0.8524 -0.96i1 -0.9990 -0.9540 -0.9702 -0.85s9 -0.7874 -0-7128

0.7894 0.8552 0.9287 0.9815 0.9992

0

.0007 0 .0001

0

0

.0002

0-

0002

0.0005 0 .0007 0.0070 0 .0012 0 .002s 0.0037 0.0050 0.0062 0 .0725 0.0188 0-

0257

0-

0-

9990

0.976i 0-

9548

0.9279 0.8974 0.8650

Para interpretar mejor los resultados, la solución numérica anterior puede graficarse (Figura 7-2) mediante la siguiente sintaxis:

CAPiTULO 7. ECUACIONES DIFERENCIALES CON VALORES INICIALES... 99

FiguraT-2

7.3 ECUACIOI\ES DIFERENCIALES ORDINARIAS CON

VALORES EN LA FRONTERA MATLAB también perm¡te resolver ecuaciones diferenciales ordinarias con valores en la frontera. Los valores en la frontera no son más que condiciones que especifican una relación entre los valores de Ia solución en los puntos inicial y final de la variable independiente. El problema más sencillo de este tipo es el sistema de ecuaciones

.y'

:

f{s,y}

donde x es la variable independiente, y es la variable dependiente e

y' es la derivada de y respecto a x (y'=dy/dx). Además la solución en

el

intervalo [a, b] ha de satisfacer: sLY{n},}i&}J

:

ü

Una forma más general de este tipo de ecuaciones diferenciales puede expresarse como sigue:

1OO ECUACIONES DIFERENCIALES CON MATL,AB

.y"

:

f{:,:,3,,p}

stv(s],"v(á3,s)

:

ü

donde el vector p está formado por parámetros que han de ser determinados simultáneamente con la solución a través de las condiciones de valores en la frontera.

El comando que resuelve estos problemas es bvp4c, cuya sintaxis es la siguiente:

soI sol sol

bwp4c (odefun,

bcfun, solinit)

bvp4c (odefun, bcfun, bvp4c (odefun, bcfun,

solinlt, options) solinit, options ,p7,p2.

En la sintaxis anterior odefun es una función que evalúa las ecuaciones diferenciales f(x,y) y que puede tener la forma siguiente: dydx dydx dydx dydx

odefun odefun odefun odefun

(x, (x, (x, (x,

y) y,p1 ,p2, . . .) y. parametros

)

y.parametros,p7,p2,

..

.)

En la sintaxis de bvp4c el argumento bcfun es una función que computa el residuo en las condiciones en la frontera. Su forma es la siguiente:

res res res res

bcfun bcfun bcfun bcfun

(ya, (ya, (ya, (ya,

yb)

yb,pL,p2, . . .) yb, parametros ) yb, parametro s, p1-, p2,

El argumento solinit es una estructura con los campos x (nodos ordenados de la malla inicial de modo que las condiciones en la frontera son impuestas mediante a = solinit.x(1) y b=solinit.x(end) e y (suposiciones iniciales para la solución de modo que a = solinit.x(1) y b = solinit.x(end) es una suposición para la solución en el nodo solinit.x(i). El comando vpin¡t fija solinit con la sintaxis solinit = vpinit(x,y).

Como ejemplo resolvemos

la ecuación

orden:

y"+

L?l

=

ü

diferencial de segundo

CAPÍIULO 7. ECUACIONES DIFERENCIALES CON VALORES INICIALES,.. 101

cuyas soluciones han de satisfacer las condiciones en la frontera:

"y{t}} = ü *'{4} = -É El problema anterior es equivalente al siguiente:

3'r' = #E ss,

:

-lsrl

Consideramos como suposición inicial una malla de 5 puntos igualmente espaciados en [0,4] y valores constantes y1(x)=0 e y2(x)=Q. ¡¿ sintaxis siguiente recoge estas suposiciones:

>> so]-init = bwpinit(linspace(0,4,5), t1 0]); Codificaremos en MATLAB la función y las condiciones frontera mediante los M-ficheros de las Figuras 7-3 y 7-4.

en

la

FiguraT-4

FiguraT-3

La solución de la ecuación la ofrece la sintaxis siguiente:

)) sol = bwp4c(Gt¡roode,Gtwobc,solinit)

,'

que puede graficarse (Figura 7-5) usando el comando bvpval como sigue:

))y = brpval (so1 ,linspace >>plot(x,y(1 ,:)) ;

(0

,4) I ;

702

ECUACIONES DIFERENCIALES CON MATLAB



Í

"*

Figura 7-5 7

.4 E,CU ACIONES DIFERENCIALES EN DERIVADAS

PARCIALES El módulo básico de MATLAB dispone de funciones que permiten resolver ecuaciones y sistemas de ecuaciones diferenciales en derivadas parciales con valores iniciales en la frontera. La función básica para el cálculo de las soluciones es pedepe, y la función básica para evaluar dichas soluciones es pdeval. La sintaxis de la función pedepe es la siguiente:

sol : sol : sol : pdepe

pdepe (m, pdefun, icfun, bcfun, xmesh, tspan) pdepe (m,pdefun, icfun,bcfun,xmesh, tspan, options) (m,

pdefun, icfun, bcfun,

>«nesh,

tspan, options, p1, p2 . . . )

El parámetro m vale 0, 1 o 2 según la naturaleza de la simetría (bloque, cilíndrica o esférica, respectivamente). El argumento pdefun es la función que define las componentes de la ecuación diferencial, icfun es la función que define las condiciones iniciales, bcfun es la función que define las condiciones frontera, xmesh y tspan son los vectores [x0, x1,...,xn] y [t0, t1,...,tf] que especifican los puntos en los cuales se requiere la solución (n,f>3), options especifica las opciones de cálculo de las soluciones (RelTol, AbsTol, NormControl, lnitialStep, y MaxStep para especificar tolerancia relativa, tolerancia absoluta, tolerancia en norma, paso inicial y paso máximo, respectivamente) y p1,p2,... son parámetros a pasar a las funciones pdefun, icfun y bcfun. La forma de la ecuación diferencial en derivadas parciales es:

CAPíTULO 7. ECUACIONES DIFERENCIALES CON VALORES INICIALES... 1.03

*] ñuár

\ r, ","dr/ "f", donde

alxlb y

áu\\ f áu\ x:r*a -á ¡l.TmÍr{.r, r, H, -., JJ + 8f f,, f, il, 1- j , \ d:\ cl§lr óxr t00) siguiente:

--2 du,

+o[ :

¡.pa

da

i]

__ü

d¡'

-F6r-u2\

dt¿n e)-tt *_'.f; "# +Fqur-a2) = ü.t7o ox.

F(v

) = expi5.?§3] - exp{-11.4$3}

satisfaciendo las condiciones iniciales:

ur(r,0)=

1

ug(r,0)=

0

y las condiciones en la frontera: dra.,

dx =+(0,

f) = 0

f} = 0 ur(1, f) = I rcg{f},

r): o P,r, (,.tr Para utilizar convenientemente la función pdepe, el sistema puede escribirse como: r'1

lil _ ul,,J_-

Lrl

,rl"rl

afo.m+¡a,,rraxi] .[-rru,-u2r'l aTlo.rrotaurrar{ [^r't*, -,,rr]

La condición izquierda en la frontera puede escribirse como:

Irl - lr] * [o.m+{a*,rr"il LI¿rJ

=

LrJ fo.lzotaul,rartl

lo] Lrl

y la condición derecha en la frontera puede escribirse como:

CAPITULO 7. ECUACIONES DIFERENCIALES CON VALORES INICIALES... 107

h, -

L

,'l lo]

fo"m+1aur.a.fl= fol

, J- LrJ'. lo.rzotar,rra,{

t-l

Comenzamos definiendo las funciones en M-ficheros de las Figuras 8-39 a 8-41.

FiguraT-12

Figura 7-13

FigwaT-14 Una vez definidas las funciones de apoyo, se define la función que resuelve el problema mediante el M-fichero de la Figura 7-15.

108

ECUACIONES DIFERENCIALES CON MATLAB

Figura 7-15

Para ejecutar la solución (Figuras 7-16 comandos de MATLAB se utiliza la sintaxis:

y 7-17), en la ventana

>> pdex4

FigluraT-16

FigxaT-17

de

CAPÍTULO 7. ECUACIONES DIFERENCIALES CON VALORES INICIALES... 109

(

Comenzamos definiendo una función de nombre vdp100 en un Mfichero, con la finalidad de almacenar en ella las ecuaciones del sistema. La forma de definir esta función es partir de un vector columna con dos filas vacío, para asignarle posteriormente tres componentes que constituyen la sintaxis de las tres ecuaciones (FiguraT-18).

Figura 7-18

A continuación resolvemos el sistema y graficamos la solucióñ !1 = y1(t) relativa a la primera columna (Figura 7-19) de la salida tecleando lo siguiente en la ventana de comandos:

>> [T,Y] = ode15s(0v$1000, [0 >>

plot(T,Y(:,1),'-')

3000]

,12

oll;

110

ECUACIONES DIFERENCIALES CON MATLAB

Figura 7-19

FiguraT-20

De forma similar graficamos la solución y2 = yZ(t) (Figura 7-20) mediante la sintaxis:

)} plot(T,Yl:,2),'-')

La ecuación dada es equivalente al sistema de diferenciales de primer orden siguiente:

-?1 =

-vZ

3g' = -{A -g

q ffiE g"n}3t

con las siguientes condiciones en la frontera:

3r{ü}-1 = 0 rttÜl : ü }g(a) = 0

ecuaciones

CAPíTULO 7, ECUACIONES DIFERENCIALES CON VALORES INICIALES... 111

Para representar el sistema usamos la función del M-ficheros de la Figura 7-21, para representar las condiciones en Ia frontera usamos la función del M-fichero de la Figura z-22, y mediante la función del M-fichero de la FiguraT-23 realizamos suposiciones para la solución inicial.

FiguraT-21

FigraT-22

FigtraT-23 La solución inicial para l"=1s y 10 puntos igualmente espaciados en n] se calcula mediante la sintaxis MATLAB siguiente: [0,

>> Ia¡nbda = 15;

so].init = bwpinit(Iinspace (0,pi,LOl,Gmat4init,larnbda),. La soluciÓn numérica del sistema se calcula mediante la sintaxis

siguiente:

>> soI = bvp4c(G¡nat4ode,Gmat4bc,solinit),. Para graficar su primera componente en 100 puntos igualmente espaciados en el intervalo [0, n] se utiliza la siguiente siniaxis:

)) xint = linspace(0,pi); Sxint = bwpval_(sol ,xint),. plot(xint,sxint(1, : ) )

T12

ECUACIONES DIFERENCIALE§ CON MATLAB

axis ( [0 pi -1 1.1] xJ-abe1 ( 'x'

)

)

ylabel('solucion y') El resultado se presenta en la FiguraT-24.

FigaraT-24

La ecuación general anterior es

equivalente

al

sistema de

ecuaciones lineales de primer orden siguiente: n,l y 1

:

3'E

= P{1-3r-be--Yr

Y6 E)

cuyas ecuaciones pueden definirse para p=1 mediante el M-fichero de la Figura 7-25.

capirulo

7. EcuActoNES DtFERENcTALES coN vALoRES tNtc¡ALES... 113

FigxaT-25 Si consideramos valores iniciales y1=2 e y2=0 en el intervalo [0,20], se puede resolver el sistema mediante la sintaxis MATLAB siguiente:

>>

[t,y] = ode45(Gvdpl, [0 20] ,f2;

L-

0

0.0000 0.0001 0.0001 0.0001 0.0002 0.0004 0.0005 0.0006 0.0.012

19.9559 19.9780 20.0000 de 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000

7.8729 1.9358

0

-0.0001 -0.0001 -0.0002 -0.0002 -0.000s 1.0366 0.7357

071

TLA

ECUACIONES DIFERENCIALES CON MATLAB

7.9787 2.0046 2.0096 2.0133 2.0158 2.0172

0.4746 0.2562 0.1969 0.7473 0.0892 0.0404

Podemos graficar las soluciones (Figura 7-26) mediante la sintaxis.

plot(t,y( i ,Ll ,'-' ,t,y (: ,2) ,'--') ) xlabel('tiempo t') >>

>> yJ-abe1 ('solucion y' ) >} legend('y_1 ' ,'y_2')

lt

,tt

iI

i.

FiguraT-26

Para resolver el sistema general con el parámetro p se define el sistema mediante el M-fichero de la FiguraT-27.

fuic,§,iüB:

:drdt ='rdpa (qyrmul

dydc = ty{2)

;

uu+

{I-y{I)

"2} *y(2)

:*

-y(l¡ l,

r,t'

::=}I FigwaT-27

r* l

CAPíTULO 7. ECUACIONES DIFERENCIALES CON VALORES INICIALES... 115

Ahora podemos graficar la primera solución (Figura 7-28) el intervalo [0,1500] para y1=2 e y2=O

correspondiente a p=1000 en mediante la sintaxis siguiente:

>> [t,y] = ode15s(0vdp2, [0 1500], [2; 0], [],1000); )) xIabel('tiempo t') >> ylabeI ('solucion y_l')

Si queremos graficar la primera solución para otro valor del parámetro, por ejemplo p=100, en el intervalo [0,1500] para y1=2 e y2=0 (Figura 7-29), utilizaremos la sintaxis:

>> >>

[t,y] = odelSs(Gvdp2, [0 1500], [2; 0], il,100);

plot(t,y( | ,Ll ,'-')

FigwaT-28

;

FiguraT-29

tsBN 9781491271537

llffi[illllil]il[ililll

lilflfiflfltl

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF