Ecuaciones Diferenciales Con MATLAB Cesar Perez Lopez
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
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
r§
Í
"*
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