Académique Documents
Professionnel Documents
Culture Documents
---------
_
q
,
-
c
-q x
2
ox
Nos dice que si la parte real de q es mayor que cero entonces la integral es n
q , y si no, no sabe hacerlo.
Tambin es posible hacer integrales numricamente. Probemos hacer la integral de g en algun intervalo razonable.
Para eso hay que darle valores a a y b, entonces, por ejemplo, podemos hacer una funcin que dependa de estos
valores:
In[43]:= funciona_, b_ : NIntegrategx, x, Pi 6, Pi 3
Ahora intentamos evaluar la integral para cualquier valor de a y de b:
8 manual.nb
In[44]:= funcion1, 2
NIntegrate::inum : Integrand
-0.588138 a + b Sin[1.27324 a b] is not numerical at {x] = {0.785398].
Out[44]= NIntegrateg[x], x,
----
6
,
----
3
No funciona. Por qu? Es porque la dependencia en a y b no est explcita y no la entendi. Creemos una funcin
g2 que ya tenga como variables a a y b:
In[45]:= g2x_, a_, b_ gx
Out[45]= a Log[x Cos[x]] + b Sin
a b
--------
x
Entonces ahora s es posible definir nuestra "funcin", ya que la dependencia en a y b es explcita:
In[46]:= funciona_, b_ : NIntegrateg2x, a, b, x, Pi 6, Pi 3
Ahora evaluamos:
In[47]:= funcion1, 2
Out[47]= 0.109469
Podemos hacerlo para otros valores de a y b:
In[48]:= funcion1, 0
Out[48]= 0.330295
El smbolo ":=" es ms que una asignacin. Si te das cuenta, adems de servir como asignacin hace que la operacion definida no sea
ejecutada inmediatamente sino cuando se le llame ms adelante. O sea, es como un pequeo programa que luego ser ejecutado.
Uso de vectores y matrices
Vectores
Definamos un par de vectores en tres dimensiones:
In[1]:= v1 a1, b1, c1
v2 a2, b2, c2
Out[1]= {a1, b1, c1]
Out[2]= {a2, b2, c2]
Notar que un vector es tal si los parntesis que ocupas son del tipo "de llave = { }"
Podemos hacer el producto punto entre ellos:
In[3]:= Dotv1, v2
Out[3]= a1 a2 + b1 b2 + c1 c2
manual.nb 9
o tambin, que resulta ser lo mismo
In[4]:= v1.v2
Out[4]= a1 a2 + b1 b2 + c1 c2
Tambin el producto cruz:
In[5]:= Crossv1, v2
Out[5]= {-b2 c1 + b1 c2, a2 c1 - a1 c2, -a2 b1 + a1 b2]
Y ojo con esta multiplicacin:
In[6]:= v1 v2
Out[6]= {a1 a2, b1 b2, c1 c2]
Matrices
Definamos un par de ellas:
In[7]:= M m11, m12, m13, m21, m22, m23, m31, m32, m33;
P p11, p12, p13, p21, p22, p23, p31, p32, p33;
Te das cuenta que es un vector de vectores?
Podemos verlas en el formato tradicional:
In[9]:= MatrixFormM
Out[9]//MatrixForm=
Veamos la multiplicacin:
In[10]:= MatrixFormM.P
Out[10]//MatrixForm=
m11 p11 + m12 p21 + m13 p31 m11 p12 + m12 p22 + m13 p32 m11 p13 + m12 p23 + m13 p33
m21 p11 + m22 p21 + m23 p31 m21 p12 + m22 p22 + m23 p32 m21 p13 + m22 p23 + m23 p33
m31 p11 + m32 p21 + m33 p31 m31 p12 + m32 p22 + m33 p32 m31 p13 + m32 p23 + m33 p33
|
Tambin es posible sacar el determinante, los valores propios, la inversa,etc. Para eso te recomiendo mirar el Help. (List
and Matrices/Vector(Matrix)operation)
En el programa todo lo que est escrito entre llaves y separado por comas debidamente es un vector o una mtriz y responder a las propiedades de
estos.
Adems, como es de esperar, podemos multiplicar matrices con vectores y todas las mezclas posibles:
In[11]:= M.v1
Out[11]= {a1 m11 + b1 m12 + c1 m13, a1 m21 + b1 m22 + c1 m23, a1 m31 + b1 m32 + c1 m33]
10 manual.nb
Resolucin de ecuaciones
Usar funciones Solve[], NSolve[] para ecuaciones (o sistemas de ecuaciones) algebraicas y DSolve[]y
NDSolve[]para ecuaciones (o sistemas de ecuaciones) diferenciales. Lo mejor es ver el Help, aqu solo te muestro un
ejemplo. Ojo, porque no es la nica manera de hacer lo mismo.
Ejemplo
Sistema de ecuaciones diferenciales, dos dimensiones:
Supongamos que hay un planeador que se mueve con con velocidad v[t] y un ngulo [t] con la horizontal. La
interaccin con el aire est caracterizada por un parmetro d. El movimiento es modelado por un sistema de ecua-
ciones diferenciales acopladas:
In[1]:= eq1d_ Sint d vt^2 Dvt, t
eq2 Cost vt^2 vt Dt, t
Out[1]= -Sin[[t]] - d v[t]
2
== v
[t]
Out[2]= -Cos[[t]] + v[t]
2
== v[t]
[t]
Lo que se ha hecho es asignarle a cada ecuacin un nombre (eq1[d] y eq2); la utilidad de esto es que luego al solo
poner el nombre se est diciendo que hay una igualdad entre dos trminos, o sea la ecuacin. Mira el Help y vers
que no hay porqu hacerlo de esta manera.
Se ha definido la primera ecuacin como funcin del parmetro d. La igualdad con doble signo igual, en las ecua-
ciones, es para asignar la igualdad entre los dos trminos; es indispensable que as se escriba una ecuacin.
La solucin del sistema se buscar numricamente, as que lo que hacemos es, primero, definir el valor mximo de la
variable t, y luego plantear la solucin como funcin del parmetro d (tambin podra hacerse como funcin de las
condiciones iniciales, o simplemete con todo ya predefinido):
In[3]:= tmax 35;
sol1d_ :
NDSolveeq1d, eq2, v0 1, 0 1, vt, t, t, 0, tmax
Estamos resolviendo para las funciones v[t] y [t] con t entre cero y tmax y con las condiciones iniciales v[0]=1
y [0]=1. La solucin (ambas funciones v[t] y [t]) es funcin de d y se llama sol1[d].
Ahora creamos un par de soluciones, para d=0.0:
In[5]:= x1t_ vt . Flattensol10.0;
y1t_ t . Flattensol10.0;
Lo que se est haciendo es asignar a la funcin x1[t] la funcin v[t] bajo la condicin d=0.0 y a la funcin y1[t] se le est
asignando [t] tambin bajo d=0.0. Entonces tenemos las dos soluciones que queremos para un valor dado de d (en este caso d=0).
Acerca de la funcin Flatten[] es mejor que veas el Help. Lo que hace es quitar los parntesis de ms afuera. El smbolo "/." sirve para
asignar.
Hacemos otros tres par de soluciones para diferentes valores de d:
In[7]:= x2t_ vt . Flattensol10.05;
y2t_ t . Flattensol10.05;
manual.nb 11
In[9]:= x3t_ vt . Flattensol10.2;
y3t_ t . Flattensol10.2;
In[11]:= x4t_ vt . Flattensol10.4;
y4t_ t . Flattensol10.4;
y las graficamos en un arreglo:
In[18]:= graph1 ParametricPlotx1t, y1t, t, 0, tmax,
DisplayFunction Identity, PlotLabel "d0.0", AxesLabel "v", "";
graph2 ParametricPlotx2t, y2t, t, 0, tmax,
DisplayFunction Identity, PlotLabel "d0.05", AxesLabel "v", "";
graph3 ParametricPlotx3t, y3t, t, 0, tmax,
DisplayFunction Identity, PlotLabel "d0.2", AxesLabel "v", "";
graph4 ParametricPlotx4t, y4t, t, 0, tmax,
DisplayFunction Identity, PlotLabel "d0.4", AxesLabel "v", "";
In[22]:= ShowGraphicsArraygraph1, graph2, graph3, graph4;
0.940.960.98 1.02
v
-0.26
-0.24
-0.22
-0.18
-0.16
-0.14
d=0.2
0.958 0.9620.9640.9660.968
v
-0.386
-0.384
-0.382
-0.378
-0.376
d=0.4
0.250.50.75 1 1.251.5
v
-1
-0.5
0.5
1
d=0.0
0.250.50.75 1 1.251.5
v
-1
-0.5
0.5
1
d=0.05
12 manual.nb