# CÁLCULO

## Límites y continuidad

Se usa la instrucción

limit

para el cálculo de límites de funciones de una variable


limit(expr,x,x0):  Calcula el límite de expr cuando x tiende a x0

limit(expr,x,x0,plus): Calcula el límite de expr cuando x tiende a x0 con x>x0

limit(expr,x,x0,minus): Calcula el límite de expr cuando x tiende a x0 con x<x0


Se pueden utilizar los valores 

inf: infinito

minf: menos infinito

und: indefinido

ind: indefinido, pero acotado

limit(n/(n+1),n,inf);

limit((x^2+3*x+1)/(2*x+3),x,minf);

limit(sin(x)/x,x,0);

Hay dos formas de indicar determinación

Una indeterminación en el que MAXIMA conoce que la función está acotada

limit(cos(x),x,inf);

limit(cos(1/x),x,0);

Y otra donde o no está acotada o MAXIMA no sabe si lo está

limit(abs(x)/x,x,0);

En este caso, hay que estudiar los límites laterales

limit(abs(x)/x,x,0,plus);

limit(abs(x)/x,x,0,minus);

Infinitos

limit(1/x,x,0,plus);

limit(1/x,x,0,minus);

limit(1/x,x,0);

Este último infinito es un infinito en módulo (complejo)

## Límites de funciones de varias variables

Límites direccionales

f(x,y):=(x^2-y^2)/(x^2+y^2);
define(g(x),f(x,m*x));
limit(g(x),x,0);

Límites iterados

limit(limit((x^2-y^2)/(x^2+y^2),x,0),y,0);
limit(limit((x^2-y^2)/(x^2+y^2),y,0),x,0);

En polares

kill(all)$
f(x,y):=(x^2-y^2)/(x^2+y^2);
f(r*cos(t),r*sin(t));
limit(%,r,0);

## Derivación

Para derivar la función, utilizaremos la instrucción

diff

Funciones de una variable

f(x):=exp(x)*sin(x);
diff(f(x),x);

Podemos derivar sucesivamente

diff(f(x),x,3);

Podemos reutilizar la derivada

f(x):=x^4+sin(x^2);
define(g(x),diff(f(x),x));

diff(f(x),x);

df(x):=''%;

''(diff(f(x),x)),x=1;

Diferencia entre ' y ''

'diff(f(x),x)=''diff(f(x),x);

Ojo a los errores

remfunction(all);
f(x):=cos(x);

g(x):=diff(f(x),x);

g(2);

h(x):=''(diff(f(x),x));

h(2);

Funciones de varias variables

kill(all);
f(x,y):=x*sin(y*x);
diff(f(x,y),x);
diff(f(x,y),y);

Podemos derivar sucesivamente

diff(f(x,y),x,2,y,3);

Gradiente y jacobiano

remfunctions(all)$
f(x,y):=sin(x)*cos(y^2);
jacobian([f(x,y)],[x,y]);   

F(x,y):=[x*y, sin(x)*cos(y^2)];
jacobian(F(x,y),[x,y]);

jacobian

Hessiano

hessian(f(x,y),[x,y]);

## Funciones implícitas

La función x^2 + y^2 = 1, define a y como función implícita de x en el punto (0,1)

Podemos indicar esta dependencia, mediante la instrucción depends

ec : x^2 +y^2 = 1;
depends(y,x);

Podemos comprobar las dependencias mediante la instrucción

    dependencies

dependencies
;

Si derivamos la ecuación respecto de x, se tiene en cuenta esta dependencia

diff(ec,x);

Otro ejemplo

ec2 : 2*x*y+cos(x*y)+y;

diff(ec2,x);

Podemos eliminar esta dependencia con el comando 

remove

remove(y,dependency);

Al calcular a hora la derivada, la variable y es independiente de x

diff(ec2,x);

Lo comprobamos, viendo que no existen dependencias

dependencies;

Para el caso de un sistema de ecuaciones

Veamos el caso del examen:

ec1 : x*u^2 - y*v^2 -1 =0;
ec2 : x^2*u+y^2*v+7=0;

/*Las funciones serán */
define(f1(x,y,u,v),lhs(ec1));
define(f2(x,y,u,v),lhs(ec2));

/* Comprobamos que se cumplen las ecuaciones en el punto (1,3,2,-1) */
f1(1,3,2,-1);
f2(1,3,2,-1);

/* Comprobamos que el Jacobiano no se anula */
define(JF(x,y,u,v),jacobian([f1(x,y,u,v),f2(x,y,u,v)],[u,v]));
JF(1,3,2,-1);
determinant(JF(1,3,2,-1));

/* Vemos que el determinante es no nulo y podemos expresar u y v como funciones de x e y */
depends([u,v],[x,y]);

/* Ya es posible derivar las ecuaciones respecto de x e y */
dec1x: diff(ec1,x);
dec1y: diff(ec1,y);
dec2x: diff(ec2,x);
dec2y: diff(ec2,y);

/* Despejamos las derivadas */

sol:solve([dec1x,dec1y,dec2x,dec2y],[diff(u,x),diff(u,y),diff(v,x),diff(v,y)]);

define(dux(x,y,u,v),rhs(sol[1][1]));
define(duy(x,y,u,v),rhs(sol[1][2]));
define(dvx(x,y,u,v),rhs(sol[1][3]));
define(dvy(x,y,u,v),rhs(sol[1][4]));

dux(1,3,2,-1);
duy(1,3,2,-1);
dvx(1,3,2,-1);
dvy(1,3,2,-1);

También se podía resolver usando la expresión del teorema

remove([u,v],dependency);
define(A(x,y,u,v),jacobian([f1(x,y,u,v),f2(x,y,u,v)],[x,y]));

-invert(JF(1,3,2,-1)).A(1,3,2,-1);