Autor: ochoscar (Página 5 de 7)

Técnicas de Integración en Cálculo

A continuación se presentan una serie de Técnicas de Integración en Cálculo que permiten realizar el proceso de integración, de integrales complejas que no se encuentran relacionadas en las integraciones de funciones básicas definidas al principio de esta página.

Si quieres aprende sobre derivación sigue el siguiente link.

1. Sustitución

La regla de sustitución es muy versátil y aplica en muchos casos, esta regla es correspondiente a la regla de la cadena para la derivación y establece de forma general lo siguiente: Si $u=g(x)$ es una función derivable cuyo rango es un intervalo $I$ y $f$ es continua sobre $I$, entonces:

$\int f(g(x))g'(x)dx=\int f(u)du$

La regla de la sustitución también funciona para la evaluación de integrales definidas, en este caso la regla establece lo siguiente:

$\int_a^b f(g(x))g'(x)dx=\int_{g(a)}^{g(b)} f(u)du=F(g(x))\biggr\rvert_a^b=F(u)\biggr\rvert_{g(a)}^{g(b)}$

Un ejemplo de la aplicación de esta regla se da a continuación:

Integrar $\int x^3\cos (x^4+2)dx$, para este caso hagamos $u=x^4+2$, de tal forma que $du=4x^3dx$ o lo que es lo mismo $x^3dx=\frac{du}{4}$, la integral original queda de la forma: $\int \frac{\cos(u)}{4}du=\sin(u)$, finalmente reemplazamos de nuevo para volver a la variable original $x$ de esta manera la respuesta a la integral es: $\sin(x^4+2)$ lo cual se puede corroborar mediante derivación.

2. Simetría

Se puede aplicar simetría para evaluar funciones definidas si estas son pares o impares de la siguiente manera:

  • Si una función es par f(x)=f(−x)f(x)=f(-x) entonces la integral ∫a−af(x)dx=2∫a0f(x)dx∫-aaf(x)dx=2∫0af(x)dx
  • Si una función es par $f(x)=f(-x)$ entonces la integral $\int_{-a}^af(x)dx=2\int_0^af(x)dx$
  • Si una función es impar $f(-x)=-f(x)$ entonces la integral $\int_{-a}^af(x)dx=0$

3. Integración por partes

Entre las Técnicas de Integración en Cálculo, la integración por partes hace uso de la regla del producto para derivación a fin de simplificar la integral y obtener una integral más sencilla. En términos generales se puede escribir la regla de integración por partes de la siguiente manera:

$\int udv = uv-\int vdu$

Se debe elegir en la integral original $u$ y $v$ de manera que $u$ sea fácil de derivar y sea fácil obtener $v$ integrando $dv$.

A continuación se muestra un ejemplo de aplicación de esta regla. Integrar

$\int e^x\sin x dx$ 

Elegimos:

$u=e^x$ de forma que $du=e^xdx$

$dv=sinxdx$ de forma que $v=−cosx$

Reemplazando en la fórmula de integración por partes se obtiene:

$\int e^x\sin x dx=-e^x\cos x-\int (-\cos x)e^xdx$

En este caso debemos volver a integrar por partes pues la segunda integral es igual de compleja que la original. En este nuevo caso tenemos que resolver la integral 

\int e^x\cos xdx

Elegimos:

$u=e^x$ de forma que $du=e^xdx$
$dv=\cos xdx$ de forma que $v=\sin x$

Reemplazando en la fórmula de integración por partes se obtiene:

$\int e^x\cos xdx=e^x\sin x – \int e^x\sin xdx$

Ahora se reemplaza este resultado en la primera integral por partes obteniendo:

$\int e^x\sin x dx=-e^x\cos x + e^x\sin x – \int e^x\sin xdx$

Para finalmente despejar y obtener la solución:

$\int e^x\sin x dx=\frac{-e^x\cos x + e^x\sin x}{2}$

4. Integración trigonométrica

Otra Técnica de Integración en Cálculo es la sustitución trigonométrica la cual es útil cuando se tiene integrales que impliquen raíces. Las siguientes sustituciones pueden ser útiles:

  • Un factor de la forma $\sqrt{a^2-x^2}$ puede tratarse con la sustitución $x=a\sin \theta$
  • Un factor de la forma $\sqrt{a^2+x^2}$ puede tratarse con la sustitución $x=a\tan \theta$
  • Un factor de la forma $\sqrt{x^2-a^2}$ puede tratarse con la sustitución $x=a\sec \theta$

A continuación se muestra un ejemplo del uso de esta técnica. Integrar

$\int \sqrt{r^2-x^2}dx$

Usamos la sustitución: $x=r\sin\theta$ lo que equivale a $\theta=\sin^{-1}\frac{x}{r}$ Y por lo tanto $dx=r\cos\theta d\theta$ La integral original es ahora:

$\int \sqrt{r^2-x^2}dx=r\int \sqrt{r^2-r^2\sin^2\theta}\cos\theta d\theta=r\int\sqrt{r^2\cos^2\theta}\cos\theta d\theta=r^2\int\cos^2\theta d\theta$

Para resolver esta nueva integral recurrimos a las fórmulas de ángulo doble:

$\cos^2\theta=\frac{1}{2}(1+\cos{2\theta})$


Convirtiendo nuevamente esta integral trigonométrica en:

$r^2\int\cos^2\theta d\theta=r^2\int \frac{1}{2}(1+\cos{2\theta})d\theta=r^2\biggl(\frac{\theta}{2}+\frac{\sin{2\theta}}{4}\biggl)$

Al volver a la variable original se obtiene:

$\int \sqrt{r^2-x^2}dx=r^2\biggl(\frac{\sin^{-1}\frac{x}{r}}{2}+\frac{\sin{(2\sin^{-1}\frac{x}{r}})}{4}\biggl)$

5. Integración por fracciones parciales

La técnica de fracciones parciales permite reducir una fracción dada en forma de cociente de polinomios a una forma más sencilla en términos de fracciones simples que pueden integrarse fácilmente. Por ejemplo la integral:

$\int \frac{5x-4}{2x^2+x-1}dx$

Puede simplificarse notablemente si se aplica fracciones parciales:

$\int \biggl( \frac{3}{x+1}-\frac{1}{2x-1} \biggr)dx$

Esta última integral es muy fácil de resolver aplicando sustituciones.

6. Artículos de Interés

Aplicaciones Prácticas de la Derivación

Cuando estudiamos derivadas y cualquier rama de la matemática queremos encontrar en que situaciones reales o aplicadas las podemos utilizar, en este artículo se explora los resultados más útiles de Aplicaciones Practicas de la Derivación.

Si quieres aprender Álgebra Lineal te recomiendo seguir este enlace.

1. Máximos y mínimos

Una función $f$ tiene un máximo absoluto (o máximo global) en $c$ si $f(c) \ge f(x) \forall x \in D$, donde $D$ es el dominio de $f$. El número $f(c)$ se llama valor máximo de $f$ en $D$, De manera análoga, $f$ tiene un mínimo absoluto en $c$ si $f(c) \le f(x) \forall x \in D$; el número $f(c)$ se denomina valor mínimo de $f$ en $D$, los valores máximo y mínimo de $f$ se conocen como valores extremos de $f$, Una función $f$ posee un máximo local (o máximo relativo) en $c$ si $f(c) \ge f(x)$ cuando $x$ está cercano a $c$ o alternativamente para todo $x$ en un intervalo abierto que contiene a $c$, De manera análoga, $f$ tiene un mínimo local en $c$ si $f(c) \le f(x)$ cuando $x$ está cerca de $c$.

2. Teorema del valor extremo

Una de las Aplicaciones Prácticas de la Derivación es el Teorema del Valor Extremo que se analiza aquí. Si $f$ es continua sobre un intervalo cerrado $[a,b]$, entonces $f$ alcanza un valor máximo absoluto $f(c)$ y un valor mínimo absoluto $f(d)$ en algunos números $c$ y $d$ en $[a,b]$

3. Teorema de Fermat

Si $f$ tiene un máximo o un mínimo locales en $c$ y si $f'(c)$ existe, entonces $f'(c)=0$.
Es importante anotar respecto de este teorema que dice que los máximos o mínimos cumplen una condición y no que en los puntos en los cuales $f'(c)=0$ sea necesariamente un máximo o un mínimo; en otras palabras el teorema de Fermat da los puntos en los cuales se podría comenzar a buscar máximos y mínimos.

4. Números críticos

Un número críticos son otra de las Aplicaciones Prácticas de la Derivación y para una función $f$ es un número $c$ en el dominio de $f$ tal que $f'(c)=0$ o $f'(c)$ no existe. Con esta definición se podría reescribir el teorema de Fermat de la siguiente manera: Si $f$ tiene un extremo local en $c$, entonces $c$ es un número crítico de $f$.

5. Método del intervalo cerrado

El siguiente método permite hallar los máximos y mínimos absolutos de una función continua sobre un intervalo cerrado: Para hallar los valores máximos y mínimos absolutos de una función $f$ sobre un intervalo cerrado $[a,b]$:

  • Encuentre los valores de $f$ en los números críticos de $f$ en $(a,b)$
  • Halle los valores de $f$ en los puntos extremos del intervalo
  • El más grande de los valores de los pasos anteriores es el valor máximo absoluto, el valor más pequeño es el valor mínimo absoluto.

6. Teorema del valor medio

Si es una función derivable sobre el intervalo $[a,b]$ entonces existe un número $c$ entre $a$ y $b$ tal que:

$f'(c)=\frac{f(b)-f(a)}{b-a}$

o lo que equivale a:

$f(b)-f(a)=f'(c)(b-a)$

En palabras lo que este teorema dice es entre el punto $a$ y $b$ se puede trazar una recta cuya pendiente es igual a la pendiente de la recta tangente en algún punto del recorrido que la función $f$ realiza de $a$ a $b$.

7. Prueba de la primera derivada

Esta prueba permite determinar los máximos y mínimos locales de una función. La prueba afirma lo siguiente: Suponga que $c$ es un número crítico de una función continua $f$

  • Si $f’$ cambia de positiva a negativa en $c$ entonces $f$ tiene un máximo local en $c$
  • Si $f’$ cambia de negativa a positiva en $c$ entonces $f$ tiene un mínimo local en $c$
  • Si $f’$ no cambia de signo en $c$ entonces $f$ no tiene ni máximos ni mínimos locales en $c$

8. Prueba de la segunda derivada

Esta prueba permite determinar los máximos y mínimos locales de una función. La prueba afirma lo siguiente: Suponga que $f′′$ es continua cerca de $c$

  • Si $f'(c)=0$ y $f”(c) \gt 0$ entonces $f$ tiene un mínimo local en $c$
  • Si $f'(c)=0$ y $f”(c) \lt 0$ entonces $f$ tiene un máximo local en $c$

9. Artículos de Interés

Reglas de Derivación en Cálculo

En este artículo encontraras una compilación de las Reglas de Derivación en Cálculo incluyendo algunos conceptos importantes que ayudan a facilitar este proceso como la derivación basados en la regla de la cadena o la derivación logaritmica.

Para comprender los principios de las derivadas visita este link.

1. Reglas de derivación

Dado que el cálculo de derivadas con límites es un poco engorroso se tiene la posibilidad de calcular derivadas con unas sencillas Reglas de Derivación. Los resultados que se resumen a continuación se entregan sin demostración.

1.1. Derivada de una función constante

La derivada de esta función es:

$\frac{d}{dx}\biggl(c\biggr)=0$

7.2. Derivada de la función potencia

Sea la función:

$f(x)=x^n \text{ ; } n\in \mathbb R$

Su derivada es:

$\frac{d}{dx}\biggl(x^n\biggr)=nx^{n-1}$

1.3. Regla del múltiplo constante

Sea la función $f(x)$ diferenciable y $c$ una constante que no depende de $x$ entonces su derivada es:

$\frac{d}{dx}\biggl(cf(x)\biggr)=c\frac{d}{dx}f(x)$

1.4. Regla de la suma y la diferencia

Sea las funciones $f(x)$ y $g(x)$ ambas diferenciable entonces se cumple que:

$\frac{d}{dx}\biggl(f(x)+g(x)\biggr)=\frac{d}{dx}f(x)+\frac{d}{dx}g(x)$

$\frac{d}{dx}\biggl(f(x)-g(x)\biggr)=\frac{d}{dx}f(x)-\frac{d}{dx}g(x)$

1.5. Definición del número $e$

Las Reglas de Derivación para una función exponencial $f(x)=a^x$ donde el número aa se conoce como base, existe un número para el cual la pendiente de la función exponencial en $x=0$ es 1. Es decir, una función exponencial donde la pendiente de su recta tangente vale lo mismo que la función, este número se conoce como $e$ y se trata de un número irracional.

 Función exponencial
Figura 6. Función exponencial

Formalmente el número $e$ se puede definir como el número tal que:

$\lim_{h \to 0}\frac{e^h-1}{h}=1$

El valor de este número se aproxima a: $e \approx 2.71828$ Utilizando estos hechos y la definición de derivada se puede expresar el número $e$ con los siguientes límites alternativos:

$e=\lim_{x \to 0}(1+x)^{\frac{1}{x}}=\lim_{n \to \infty}\biggl(1+\frac{1}{n}\biggr)^n$

1.6. Derivada de la función exponencial natural

La derivada de esta función es:

$\frac{d}{dx}\biggl(e^x\biggr)=e^x$

1.7. Derivada de la función exponencial

La derivada de esta función en la cual el exponente varía y la base es un número real es:

$\frac{d}{dx}\biggl(a^x\biggr)=a^x\ln a$

1.8. Regla del producto y del cociente

En general, la Regla de Derivación del producto no es el producto de las derivadas, similarmente ocurre con la división. A continuación se muestran las fórmulas correctas para calcular estas derivadas. En primer lugar se muestra la fórmula para el producto. Si tanto $f$ como $g$ son diferenciables, entonces:

$\frac{d}{dx}\biggl[f(x)g(x)\biggr]=f(x)\frac{d}{dx}\biggl[g(x)\biggr]+g(x)\frac{d}{dx}\biggl[f(x)\biggr]$

En segundo lugar se muestra la fórmula para el cociente. Si tanto $f$ como $g$ son diferenciables, entonces:

$\frac{d}{dx}\biggl[\frac{f(x)}{g(x)}\biggr]=\frac{g(x)\frac{d}{dx}[f(x)]-f(x)\frac{d}{dx}[g(x)]}{[g(x)]^2}$

1.9. Derivadas de funciones trigonométricas

Antes de mostrar las Reglas de Derivación de las funciones trigonométricas es importante contar con dos resultados en cuando a límites trigonométricos comunes:

$\lim_{\theta \to 0}\frac{\sin\theta}{\theta}=1$

$\lim_{\theta \to 0}\frac{\cos\theta-1}{\theta}=0$

Los límites anteriores que se pueden obtener con argumentos geométricos y con ayuda del teorema de la compresión sirven para calcular las siguientes derivadas de funciones trigonométricas.

Derivada del seno

$\frac{d}{dx}\biggl(\sin x\biggr)=\cos x$


Derivada del coseno

$\frac{d}{dx}\biggl(\cos x\biggr)=-\sin x$


Derivada de la tangente

$\frac{d}{dx}\biggl(\tan x\biggr)=\sec^2 x$


Derivada de la cosecante

$\frac{d}{dx}\biggl(\csc x\biggr)=-\csc x \cot x$


Derivada de la secante

$\frac{d}{dx}\biggl(\sec x\biggr)=\sec x \tan x$


Derivada de la cotangente

$\frac{d}{dx}\biggl(\cot x\biggr)=-csc^2 x$

2. Regla de la cadena

Esta Regla de Derivación en Cálculo permite derivar funciones compuestas que son funciones más complejas que las funciones sencillas anteriormente relacionadas. Si $g$ es derivable en $x$ y $f$ es derivable en $g(x)$, entonces la función compuesta F=f∘gF=f∘g definida por $F(x)=f(g(x))$ es derivable en $x$ y $F’$ está dada por el producto

$F'(x)=f'(g(x)) \cdot g'(x)$

En la notación de Leibniz, si tanto $y=f(u)$ como $u=g(x)$ son funciones diferenciables entonces:

$\frac{dy}{dx}=\frac{dy}{du}\frac{du}{dx}$

3. Derivadas de funciones trigonométricas inversas

Derivada de seno inverso

$\frac{d}{dx}\biggl(\sin ^{-1}x\biggr)=\frac{1}{\sqrt{1-x^2}}$


Derivada de coseno inverso

$\frac{d}{dx}\biggl(\cos ^{-1}x\biggr)=-\frac{1}{{\sqrt{1-x^2}}}$


Derivada de tangente inversa

$\frac{d}{dx}\biggl(\tan ^{-1}x\biggr)=\frac{1}{{1+x^2}}$

4. Derivadas de funciones logarítmicas

La Regla de Derivación en Cálculo de la función logaritmo en base $a$ es:

$\frac{d}{dx}\biggl(\log_a x\biggr)=\frac{1}{x\ln a}$

Similarmente la derivada de la función logaritmo natural es:

$\frac{d}{dx}\biggl(\ln x\biggr)=\frac{1}{x}$

5. Derivación logarítmica

En ocasiones se tienen funciones difíciles de derivar por su complejidad operativa, por ejemplo funciones que incluyan muchas raíces y fracciones. Una forma fácil de derivar estas funciones consiste en utilizar el método denominado derivación logarítmica el cual se aplica siguiendo los siguientes tres pasos:

  • Tome el logaritmo natural en ambos miembros de $y=f(x)$ esto convertirá las potencias en multiplicaciones, las divisiones en restas y las multiplicaciones en sumas utilizando leyes de logaritmos.
  • Derive implícitamente respecto a $x$
  • Despeje en la ecuación resultante $y’$

6. Artículos de Interés

Matrices Inversas Transpuesta Elementales y sus Operaciones

En este artículo se tratan los diferentes tipos de Matrices que son muy utilizados en el día a día de cualquier persona que trabaje con temas de matemáticas, ingeniería o incluso Excel, se consideran las Matrices Inversas Transpuestas Elementales y sus Operaciones que se pueden realizar entre ellas.

Si quieres más información de Álgebra Lineal y vectores sigue este enlace.

1. Matrices Inversas en Álgebra Lineal

Las matrices inversas de $\mathbf A$ es aquella que multiplicada por $\mathbf A$ produce la matriz identidad de $\mathbf I$ del mismo tamaño de $\mathbf A$. No todas las matrices tienen inversa y solo se encuentra definida para matrices cuadradas. El concepto es poderoso y simple porque permite resolver el sistema de ecuaciones $\mathbf A \cdot x=b$  con una simple multiplicación, así:

$\mathbf A \cdot x=b$

$\mathbf A^{-1} \mathbf A \cdot x=\mathbf A^{-1} \cdot b$

$\mathbf I \cdot x = \mathbf A^{-1} \cdot b$

$x = \mathbf A^{-1} \cdot b$

Hemos denotado la inversa de $\mathbf A$ como $\mathbf A^-1$ donde se cumplen las siguientes propiedades:

$\mathbf A_n \mathbf I_n = \mathbf I_n \mathbf A_n = \mathbf A_n$

$\mathbf A_n \mathbf A_n^{-1} = I_n$

Para calcular la inversa de una matriz puede recurrir a la solución de sistemas de ecuaciones o a determinantes, veamos ambos casos.

1.1. Procedimiento para encontrar la matriz inversa usando sistemas de ecuaciones

  • Escriba la matriz aumentada del sistema $\mathbf A| \mathbf I$
  • Reduzca el sistema para poner $\mathbf A$ en su forma reducida por reglones
  • Se decide si $\mathbf A$ es invertible

La solución se define entonces según corresponda:

  • Si la forma escalonada reducida por reglones de $\mathbf A$ es la matriz identidad, entonces la inversa se encuentra a la izquierda en el sistema resuelto
  • Si en la reducción existe un reglón de ceros a la izquierda, la matriz $\mathbf A$ no es invertible

1.2. Procedimiento para encontrar la inversa usando determinantes

Para hallar la inversa usando determinantes basta recurrir a la siguiente multiplicación:

$\mathbf A^{-1} = \frac{1}{\det \mathbf A}\begin{bmatrix} a_{11} & -a_{12} \\ -a_{21} & a_{22} \end{bmatrix}$

Donde el determinante de una matriz cuadrada de tamaño 2 es:

$\det \mathbf A = a_{11}a_{22}-a_{12}a_{21}$

2. Matriz transpuesta

Además de las Matrices Inversas existen las Transpuestas y se define como $\mathbf A^t$ de una matriz $\mathbf A$ se obtiene al escribir las filas como columnas. Las matrices transpuestas tienen muchas propiedades útiles, a continuación se muestran estas propiedades:

${(\mathbf A^t)}^t=\mathbf A$

$(\mathbf A^t\mathbf B^t)=\mathbf A^t\mathbf B^t$

$(\mathbf A^t + \mathbf B^t)=\mathbf A^t + \mathbf B^t$

Si $\mathbf A$ es invertible, entonces $\mathbf A^t$ es invertible y ${(\mathbf A^t)}^{-1}={(\mathbf A^{-1})}^{t}$

Se dice que una matriz es simétrica si su transpuesta es igual a la matriz, note que sólo las matrices cuadradas pueden ser también simétricas.

3. Matrices elementales y matrices inversas

Como complemento a las Matrices Inversas y Transpuestas existe las matrices Elementales y sus Operaciones que se estudian en esta sección. Una operación elemental entre renglones puede representarse a través de una operación de multiplicación entre matrices, la matriz por la cual se multiplica se llama matriz elemental. Adicionalmente, una matriz inversa (o las operaciones de eliminación Gauss-Jordan) se puede representar como una multiplicación de matrices elementales, esto quiere decir que si una matriz es invertible se puede representar como una multiplicación de matrices elementales.

Matriz elementalEfecto de multiplicación
MultiplicaciónMultiplica el reglón $i$ de $\mathbf A$ por $c$
SumaMultiplica el reglón $i$ de $\mathbf A$ por $c$ y lo suma al reglón $j$
PermutaciónPermuta los reglones $i$ y $j$ de $\mathbf A$

La representación simbólica de estas operaciones y las matrices correspondientes se muestran a continuación.

3.1. Multiplicación de matrices

RepresentaciónMatriz ElementalObservación
$cR_i$$\begin{bmatrix} 1 & 0 & 0 \\ 0 & c & 0 \\ 0 & 0 & 1 \end{bmatrix}$Siendo $i$ el reglón 2 en este ejemplo

3.2. Suma de matrices

RepresentaciónMatriz ElementalObservación
$R_j+cR_i$$\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ c & 0 & 1 \end{bmatrix}$Siendo $i$ el reglón 1 y $j$ el reglón 3 en este ejemplo

3.3. Permutación de matrices

RepresentaciónMatriz ElementalObservación
$P_{ij}$$\begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ c & 0 & 1 \end{bmatrix}$Siendo $i$ el reglón 2 y $j$ el reglón 3 en este ejemplo

4. Factorización de Matrices en Álgebra Lineal

Factorización: $\mathbf A = \mathbf {LU}$

Suponga que una matriz $\mathbf A$ invertible puede reducir por renglones a una matriz triangular superior sin realizar permutaciones. Entonces existen matrices únicas $\mathbf L$ y $\mathbf U$ tales que $\mathbf L$ es triangular inferior con unos en la diagonal, $\mathbf U$ es una matriz triangular superior invertible y $\mathbf A = \mathbf L \mathbf U$. Para hallar la factorización se puede reducir la matriz $\mathbf A$ por renglones (sin dejar unos en la diagonal principal) y la matriz resultante será la matriz $\mathbf U$. De forma similar si se expresan las operaciones elementales sobre renglones como matrices y se multiplican estas matrices se obtiene la matriz $\mathbf L$.

Factorización: $\mathbf {PA} = \mathbf{LU}$

Sea $\mathbf A$ cualquier matriz $mxn$. Entonces existe una matriz de permutación $\mathbf P$ tal que $\mathbf{PA}=\mathbf{LU}$ donde $\mathbf L$ y $\mathbf U$ son como en la factorización $\mathbf{LU}$, en general $\mathbf P$, $\mathbf A$ y $\mathbf U$ no son únicas. Para hallar esta factorización se procede como en el caso anterior, pero las permutaciones que se requieran hacer para obtener una matriz triangular superior (proceso de reducción por reglones) se expresan en una matriz de permutación $\mathbf P$ haciendo uso de matrices elementales.

5. Artículos de Interés

Determinantes en Álgebra Lineal

Los determinantes son herramientas operativas del álgebra de matrices y lineal que permite simplificar ciertas operaciones que se realizan como el cálculo de la matriz inversa y la determinación del rango de una matriz.

Siga este vínculo para obtener más información de álgebra lineal.

1. Determinantes de Matrices en Álgebra Lineal

Las siguientes son definiciones útiles acerca de los determinantes de matrices.

  • El determinante de una matriz cuadrada se expresa como $\det \mathbf A=|\mathbf A|$ note que aquí las barras no indican valor absoluto
  • Se llama $\text{menor} ij$ de una matriz cuadrada $\mathbf A$ representado con $M_{ij}$ a la matriz obtenida al eliminar el reglón $i$ y la columna $j$ de la matriz $\mathbf A$
  • El $\text{cofactor} ijij$ de una matriz cuadrada denotado por $A_{ij}$ esta dado por $A_{ij}=(-1)^{i+j}|M_{ij}|$

Con estas definiciones podemos expresar fácilmente el determinante de cualquier matriz utilizando una expresión conocida como expansión por cofactores, así:

$\det \mathbf A=\sum_{k=1}^n a_{1k}A_{1k}$

Esta expansión por cofactores también se puede llevar a cabo tomando cualquier fila o columna de la matriz. Note que esto lleva a que si cualquier fila o columna de la matriz sean sus componentes cero, entonces el determinante será cero también. Para algunas matrices el cálculo del determinante se puede simplificar, por ejemplo, para las matrices triangulares (superiores o inferiores) el determinante es solo el producto los componentes de su diagonal principal.

2. Propiedades de los determinantes

  • $\det \mathbf {AB}=\det \mathbf A \det \mathbf B$
  • Si una matriz $\mathbf A$ tiene factorización $\mathbf A=\mathbf L \mathbf U$ entonces $\det \mathbf{A} = \det \mathbf{U}$
  • Si una matriz $\mathbf A$ tiene factorización $\mathbf{PA=LU}$ entonces $\det \mathbf{A} = \frac {\det \mathbf{U}}{\det \mathbf P} = \pm \det \mathbf U$
  • $\det \mathbf A = \det \mathbf A^t$
  • Si una columna o fila de $\mathbf A$ se multiplica por un escalar $c$ entonces el determinante de la nueva matriz es $c| \mathbf A|$
  • Sea tres matrices $\mathbf{A,B,C}$, $\mathbf A$ y $\mathbf B$ son idénticas excepto por una columna $j$, y $\mathbf C$ es idéntica a $\mathbf A,\mathbf B$,  excepto que la columna de $\mathbf C$ es la suma de las columnas $j$ de $\mathbf A,\mathbf B$, entonces $\det \mathbf C = \det \mathbf A + \det \mathbf B$, la misma afirmación es cierta para un reglón $i$
  • El intercambio de dos reglones (o columnas) de una matriz, tiene el efecto de multiplicar su determinante por $−1$
  • Si una matriz tiene dos reglones (o columnas) iguales entonces su determinante es cero
  • Si una matriz tiene un reglón (o columna) igual a cero entonces su determinante es cero
  • Si una matriz tiene un reglón (o columna) múltiplo escalar de otro entonces su determinante es cero
  • Si una matriz se suma un múltiplo escalar de un reglón (o columna) a otro entonces su determinante no cambia
  • Si $\mathbf E$ es una matriz elemental que representa la operación de intercambio de dos filas, entonces $\det \mathbf E=-1$
  • Si $\mathbf E$ es una matriz elemental que representa la operación de suma de una fila con un múltiplo de otra fila, entonces $\det \mathbf E=-1$
  • Si $\mathbf E$ es una matriz elemental que representa la operación de multiplicación de una fila por un escalar cc, entonces $\det \mathbf E=c$

3. Determinantes y matrices inversas

Una de las propiedades más importantes de los determinantes se relaciona con la invertibilidad de una matriz, así: Una matriz es invertible, si su determinante es diferente de cero A continuación se explorará un concepto importante denominado adjunta de una matriz. Sea $\mathbf A$ una matriz y $\mathbf A_{ij}$ el cofactor de la matriz para los relgones $i$ y $j$; sea $\mathbf B$ otra matriz pero esta construida con los cofactores de la matriz $\mathbf A$ así:

$\begin{bmatrix} A_{11} & A_{12} & \dotsm & A_{1n} \\ A_{21} & A_{22} & \dotsm & A_{2n} \\ \vdots & \vdots & & \vdots \\ A_{n1} & A_{n2} & \dotsm & A_{nn} \end{bmatrix}$

Se denomina matriz adjunta de $\mathbf A$ a la matriz $\mathbf B^t$, es decir a la matriz de cofactores transpuesta. La adjunta se puede representar simbólicamente así:

$adj \mathbf A=\mathbf B^t$

La utilidad de la matriz adjunta tiene que ver con los siguientes dos resultados:

$(\mathbf A)(adj \mathbf A)=(\det \mathbf A)(\mathbf I)$

$\mathbf A^{-1}=\frac{1}{\det \mathbf A}adj \mathbf A$

Observe que el primer resultado pone en la diagonal principal el valor del determinante y el segundo resultado implica un cálculo para obtener la inversa de una matriz.

4. Regla de Cramer

La regla de Cramer es otro método que permite encontrar la solución a un sistema de ecuaciones simultáneas, con $n$ ecuaciones y $n$ incógnitas. El método actualmente está en desuso, pero tiene trascendencia historia. Sea el sistema de ecuaciones:

$\mathbf{Ax}=\mathbf b$

Donde se representara con $D$ el determinante de la matriz $\mathbf A$. Adicionalmente, se tienen $n$ matrices representadas como $\mathbf A_i$ donde cada matriz es la misma matriz $\mathbf A$ pero cambiando la columna $i$ por el vector $\mathbf b$, respectivamente se cuentan con los determinantes de cada una de estas matrices representados como $D_i$, entonces la solución al sistema de ecuaciones es:

$x_i=\frac{D_i}{D}$

5. Artículos de Interés

Sistemas de Ecuaciones Simultaneas con Matrices

En muchas ocasiones se presentan situaciones que implican resolver ecuaciones simultaneas, y aunque existen muchas técnicas el uso de matrices ayuda a resolver estas ecuaciones de forma fácil y rápida, en este artículo Sistemas de Ecuaciones Simultaneas con Matrices en Álgebra Lineal aprenderás como resolver estos sistemas.

Sigue este enlace si quieres aprender temas básicos de matemáticas.

1. Sistema de ecuaciones usando Matrices en Álgebra Lineal

1.1. Eliminación de Gauss Jordan usando Matrices en Álgebra Lineal

El proceso de eliminación de Gauss – Jordan sirve para solucionar la anterior ecuación, para ello se debe escribir la matriz aumentada del sistema $\mathbf A$ seguida del vector $b$ de la siguiente manera:

$\left(\begin{array}{cc|c}
a_{11} & a_{12} & b_1\\
a_{21} & a_{22} & b_2\\
\end{array}\right)$

Donde la idea es obtener una matriz escalonada reducida por reglones y pivote y luego utilizar una sustitución hacia adelante. Para lograr esta matriz se deben hacer tres operaciones fundamentales que puede ser:

  • Conmutación de filas
  • División de una fila por un escalar diferente de cero
  • Adicionar p veces una fila a otra

La notación para estas operaciones fundamentales con reglones es la siguiente:

$R_i \rightarrow cR_i$ Reemplaza la fila i-esima, por ella misma multiplicada por un escalar

$R_j \rightarrow R_j+cR_i$ Sustituye el j-esimo reglón por la suma del reglón $j$ más el reglón $i$ multiplicado por $c$

$R_j \leftrightarrows R_i$ Intercambia los reglones $i$ con el reglón $j$

Las matrices que se obtienen después de realizar una operación fundamental se denominan matrices equivalentes por reglones. Una matriz se encuentra en su forma escalonada reducida por reglones y pivote siempre que:

  • Si existe una fila de ceros esta es la última
  • El primer elemento para una fila que no es toda de ceros es uno
  • Para dos reglones que no todos sus elementos son ceros, entonces el primer uno en el reglón de más abajo también se encuentra más a la derecha.
  • Cualquier columna que contiene un uno y este uno es el primer elemento en el reglón donde aparece tiene ceros en el resto de sus posiciones. El primer uno para un reglón diferente de cero se llama pivote para el reglón

2. Sistemas homogéneos

Un sistema de ecuaciones se dice que es homogéneo cuando el vector bb tiene todas sus componentes en cero, y, por lo tanto, la matriz aumentada del sistema que le corresponde es la siguiente:

$\left(\begin{array}{cc|c}
a_{11} & a_{12} & 0\\
a_{21} & a_{22} & 0\\
\end{array}\right)$

Todos los sistemas homogéneos tiene una solución trivial, es decir, la solución es entonces $x_1=x_2=0$. Para todo sistema homogéneo también se cumple que si tiene más incógnitas que ecuaciones ($n>m$) tiene un número infinito de soluciones. Para un sistema no homogéneo y su correspondiente sistema homogéneo, se pueden encontrar todas las soluciones teniendo en cuenta que si $\mathbf x_1$ es solución y $\mathbf x_2$ también es solución del sistema no homogéneo entonces $\mathbf x_1− \mathbf x_2$ es solución al sistema homogéneo relacionado. Lo anterior es muy útil y se puede representar como $\mathbf y= \mathbf x+ \mathbf h$ donde $\mathbf x$ e $\mathbf y$ es una solución del sistema no homogéneo y $\mathbf h$ es solución del sistema homogéneo, por lo tanto, para encontrar todas las soluciones al sistema no homogéneo basta con encontrar una solución del sistema no homogéneo y todas las soluciones del sistema homogéneo relacionado.

3. Artículos de Interés

Rectas y Planos en Geometría

En el estudio de cualquier disciplina matemática un tema que es fundamental es comprender las bases geométricas que nos permiten trasladar lo que imaginamos al mundo real de lo que vemos y palpamos, en esta sección se explora las diferentes representaciones de las Rectas y Planos en Geometría.

Si deseas más información de geometría vectorial sigue este enlace.

1. Rectas

Para las Recta en Geometría en el espacio se tiene la siguiente ecuación vectorial:

$\overrightarrow{OR}=\overrightarrow{OP}+t\mathbf v$

Donde el vector $\mathbf v$ es un vector paralelo a $\overrightarrow {PR}$. Extendiendo los componentes se puede obtener las siguientes relaciones denominadas ecuaciones paramétricas de la recta:

$x=x_1+t(x_2-x_1)$

$y=y_1+t(y_2-y_1)$

$z=z_1+t(z_2-z_1)$

Si se despeja $t$ en las ecuaciones anteriores y se igualan definiendo $a=x_2−x_1$, $b=y_2−y_1$ y $c=z_2−z_1$ se obtienen las llamadas ecuaciones simétricas de la recta:

$\frac{x-x_1}{a}=\frac{y-y_1}{b}=\frac{z-z_1}{c}$

Tenga en cuenta que las ecuaciones paramétricas o simétricas de una recta no son únicas.

2. Planos

Los Rectas y Planos en Geometría se pueden definir de forma vectorial, para el caso de planos una forma es la siguiente: sea $P$ un punto y $\mathbf n$ un vector dado diferente de cero, el conjunto de puntos $Q$ que cumplen

$\overrightarrow{PQ}\cdot \mathbf n = 0$

se conoce como plano. Las siguientes ecuaciones son las ecuaciones cartesianas de un plano:

$ax+by+cz=d$

$\text{donde }d=ax_0+by_0+cz_0=\overrightarrow{OP}\cdot \mathbf n $

En estas ecuaciones los números $a$, $b$ y $c$ son las componentes del vector $\mathbf n$ normal al plano y los números $x_0$, $y_0$ y $z_0$ son los coordenadas del punto $P$. Finalmente una definición útil es que dos planos son paralelos si sus vectores normales lo son, es decir si el producto cruz de los vectores normales es cero.

3. Artículos de Interés

Catálogo de Funciones Matemáticas

Este post contiene un Catálogo, compendio o recopilación de las Funciones Matemáticas más utilizadas, su ecuación representativa, su gráfica y una descripción de su utilidad.

Para conocer más propiedades de las funciones sigue este vínculo.

1. Funciones Lineales

En el Catálogo de Funciones Matemáticas la primera a estudiar y más sencilla es la Lineal. En su forma más habitual está dada por la ecuación punto pendiente de la recta $f(x)=mx+b$. Estas funciones permiten establecer relaciones lineales entre la variable dependiente e independiente de manera que la proporción del crecimiento o decrecimiento de y respecto a variaciones en x se mantiene constante.

Función lineal
Figura 8. Función lineal $f(x)=x$

2. Funciones Polinomios

En su forma más general está dado por $P(x)=a_nx^n+a_{n−1}x^{n−1}+…+a_2x^2+a_1x+a_0$. Las funciones polinomiales incluyen todos los grados de los exponentes permitiendo establecer relaciones complejas entre la variable $x$ y $y$, sin embargo, las funciones polinomiales más habituales tiene grados pequeños como $2$ o $3$.

Polinomio de segundo grado
Figura 9. Polinomio de segundo grado $f(x)=x^2$

3. Funciones Potencia

Este es un caso particular de un polinomio en una forma más simple y permite representar parábolas o funciones recíprocas, ya que se debe considerar que el exponente puede ser negativo, su forma general es la siguiente $f(x)=x^a$

Función potencia 
Figura 10. Función potencia $f(x)=x^3$

4. Funciones Racionales

Representan cocientes o relación de cantidades y se pueden escribir de la siguiente forma $f(x)=\frac{P(x)}{Q(x)}$ estos cocientes establecen relaciones complejas la gráfica muestra un ejemplo de este tipo de relaciones.

Función racional
Figura 11. Función racional $f(x)=\frac{x−1}{x+1}$

5. Funciones Algebraicas

Son aquellas que están dadas por la combinación de operaciones aritméticas como suma, resta, multiplicación, o división por lo cual las funciones construidas con polinomios o funciones racionales son también algebraicas.

Función algebraica
Figura 12. Función algebraica $f(x)=sqrtx{\frac{−1}{x+1}}$

6. Funciones Trigonométricas

Las funciones trigonométricas son adecuadas para describir comportamientos periódicos las funciones más comunes son $f(x)=sin(x)$, $f(x)=cos(x)$, $f(x)=tan(x)$ y sus respectivas funciones inversas.

Función trigonométrica
Figura 13. Función trigonométrica $f(x)=sin(x)$

7. Funciones Exponenciales

Rn su forma más general está dado por $f(x)=a^x$. Estas funciones permiten modelamientos muy habituales de crecimientos por ejemplo la propagación de virus o crecimiento de poblaciones, así como otros procesos físicos. En particular cuando el exponente $x \approx 2,71$ la pendiente de la gráfica en $x=0$ es exactamente $1$ este número se llama $e$ y muy probablemente sea llamado así por ser la primera letra de la palabra exponential, Leonhard Euler en 1727 lo bautizó.

Función exponencial
Figura 14. Función exponencial $f(x)=2^x$

8. Funciones Logarítmicas

En su forma más general está dado por $f(x)=log_a{x}$. Estas funciones permiten analizar crecimientos muy rápidos de funciones en escalas de un entendimiento más sencillo, un ejemplo de ello lo encontramos en las funciones que trabajan con unidades como decibelios.

Función logarítmica
Figura 15. Función logarítmica $f(x)=log_2{x}$

9. Funciones Trascendentes

Estas funciones incluyen otras como las trigonométricas, la exponencial y la logarítmica y muchas otras que no reciben ningún nombre.

10. Artículos de Interés

Listas con Arreglos en Java

Las Listas con Arreglos en Java permiten que estas estructuras de datos se desarrollen usando memoria estática, con lo cual se requerirá operaciones de redimensionado de los arreglos cada vez que se cambie el tamaño, este post detalla el funcionamiento y el código de esta estructura de datos.

Acceda al código de las listas con memoria dinámica o enlazadas usando este link.

1. Lista con arreglos

Como se había mencionado anteriormente la lista con arreglos puede ser una implementación de la misma interface IList.

La ventaja en este caso es la facilidad para posicionarse en cualquier punto, sin embargo, al estar la lista conformada con arreglos, tiene las desventajas del uso de arreglos que se menciono al principio de esta sección.

El arreglo es muy óptimo para indexare, pero cuando se acaba el tamaño es necesario crear otro nuevo con más tamaño y hacer un copiado de los elementos del arreglo original en el nuevo con mayor capacidad, esta operación ralentiza los métodos de la lista.

Por esta razón las listas con arreglos deben tener mínimamente dos conceptos incluidos: el tamaño (que comúnmente se refiere al tamaño ocupado) y la capacidad (que es la máxima cantidad de elementos que puede tener el arreglo utilizado en la lista). A continuación, se presenta el código de la lista enlazada usando arreglos.

package lists;
import java.util.Iterator;
/**
 * Lista que usa arreglos nativos para implementar las operaciones de una lista
 * @author ochoscar
 * @param < T > Tipo genérico que contra los item de la lista
 */
public class ArrayList< T > implements IList< T >, Iterable< T >  {
    ////////////////////
    // Atributos
    ////////////////////
    /** Arreglo nativo de la lista que contiene los elementos y su longitud es
     la capacidad máxima de elementos a almacenar*/
    private T array[];
    /** Tamaño de la lista que refleja la cantidad de casillas del arreglo usadas */
    private int listSize;
    ////////////////////
    // Métodos
    ////////////////////
    /**
     * Constructor por defecto que crea la lista con 10 casillas de capacidad
     */
    public ArrayList() {
        array = (T[]) new Object[10];
        listSize = 0;
    }
    /**
     * Constructor especificando la capacidad inicial
     * @param initCapacity Capacidad inicial
     */
    public ArrayList(int initCapacity) {
        array = (T[]) new Object[initCapacity];
        listSize = 0;
    }
    /**
     * Método que verifica si la lista esta vacía
     * @return Devuelve true si la lista esta
     * vacía y false en caso contrario
     */
    @Override
    public boolean isEmpty() {
        return listSize == 0;
    }
    /**
     * Obtiene el primer item de la lista
     * @return Devuelve la Clase al principio de la lista
     * null en caso que la lista este vacía
     */
    @Override
    public T getFirst() {
        return listSize > 0 ? array[0] : null;
    }
    /**
     * Obtiene el ultimo elemento de la lista
     * @return Devuelve la ultima Clase en la lista
     * null si la lista esta vacía
     */
    @Override
    public T getLast() {
        return listSize > 0 ? array[listSize - 1] : null;
    }
    /**
     * Devuelve el i - esimo elemento de la lista
     * @param i Posición del elemento a devolver (comienza en 0)
     * @return Devuelve la Clase en la posición i
     */
    @Override
    public T get(int i) {
        return listSize > 0 && i > 0 && i < listSize ? array[i] : null;
    }
    /**
     * Método que establece un item de la lista en una posición especifica
     * @param p Objeto que sera establecido en una posición especifica
     * @param i Posición a establecer el objeto
     */
    @Override
    public void set(T p, int i) {
        if(listSize > 0 && i > 0 && i < listSize) {
            array[i] = p;
        }
    }
    /**
     * Método que determina el tamaño de la lista
     * @return Devuelve un entero que indica el tamaño de la lista
     */
    @Override
    public int size() {
        return listSize;
    }
    /**
     * Método que inserta al final de la lista
     * @param p Objeto a insertar
     * @return Devuelve la propia lista enlazada
     */
    @Override
    public IList< T > addLast(T p) {
        if(listSize == array.length) {
            adjustCapacity(2 * listSize);
        }
        array[listSize] = p;
        listSize++;
        return this;
    }
    /**
     * Método que permite agregar un objeto en un posición
     * arbitraria de la lista
     * @param p Objeto que se quiere agregar a la lista
     * @param i posición en la cual se quiere agregar
     * @return Devuelve la propia lista enlazada
     */
    @Override
    public IList< T > add(T p, int i) {
        if(listSize == array.length) {
            adjustCapacity(2 * listSize);
        }
        for(int j = listSize - 1; j >= i; j--) {
            array[j + 1] = array[j];
        }
        array[i] = p;
        listSize++;
        return this;
    }
    /**
     * Método que elimina un elemento dado un objeto
     * @param p Objeto a eliminar
     */
    @Override
    public void remove(T p) {
        for(int i = 0; i < listSize; i++) {
            if(array[i].equals(p)) {
                remove(i);
                break;
            }
        }
    }
    /**
     * Método que remueve un elemento de la lista
     * @param i Posición o índice a eliminar de la lista
     */
    @Override
    public void remove(int i) {
        for(int j = i; j < listSize; j++) {
            array[j] = array[j + 1];
        }
        listSize--;
    }
    /**
     * Devuelve si esta o no
     * @param p Objeto a verificar si esta en la lista
     * @return Devuelve true si p esta en la lista false sino
     */
    @Override
    public boolean contains(T p) {
        for(int i = 0; i < listSize; i++) {
            if(array[i].equals(p)) {
                return true;
            }
        }
        return false;
    }
    /**
     * Implementación de la interface iterable que permite recorrer la lista
     * con ciclos estilo for - each
     * @return Devuelve el iterador para recorrer la lista
     */
    @Override
    public Iterator< T > iterator() {
        // Creación de un objeto anónimo para retornarlo
        return new Iterator< T >() {
            /** Contador para referenciar el elemento que actualmente se itera */
            private int i = 0;
            /**
             * Método que indica si existen mas elementos a recorrer o no
             * @return True si existen mas elementos para recorrer y false en caso contrario
             */
            public boolean hasNext() {
                return i < listSize;
            }
            /**
             * Devuelve el elemento donde se encuentra parado el iterador y lo avanza
             * @return
             */
            public T next() {
                i++;
                return array[i - 1];
            }
            /**
             * Método que le permite al iterador remover un elemento de forma segura
             * En la lista hay que tener cuidado cuando se remueve mientras se itera puesto
             * que la eliminación cambia el tamaño de la lista. Este método
             * no se encuentra soportado en esta version.
             */
            public void remove() {
                throw new UnsupportedOperationException();
            }
        };
    }
    /**
     * Método privado utilitario encargado de asegurar una capacidad en el arreglo
     * haciendo una copia de los elementos del arreglo viejo en el nuevo
     * @param newCapacity Nueva capacidad del arreglo
     */
    private void adjustCapacity(int newCapacity) {
        T newArray[] = (T[]) new Object[newCapacity];
        for(int i = 0; i < listSize; i++) {
            newArray[i] = array[i];
            array[i] = null;
        }
        array = newArray;
    }
}

La siguiente imagen muestra el diagrama correspondiente a la lista implementada con arreglos.

Lista implementada con arreglos
Figura 1. Lista implementada con arreglos

Observe que el tamaño del arreglo, es decir, su capacidad puede verse incrementada en la operación add, en la cual se puede duplicar el tamaño del arreglo; una practica común es reducir también el tamaño del arreglo cuando se remueve, y es común disminuir el tamaño del arreglo a un cuarto del mismo si la mitad del arreglo esta libre.

Es importante con lo anterior evitar que se hagan secuencias de operaciones que dupliquen – recorren el tamaño del arreglo, es decir add – remove – add – remove y así sucesivamente decrementando sustancialmente el rendimiento del arreglo.

2. Artículos de Interés

Estáticos y Constructores en Java

Los miembros Estáticos y Constructores en Java son muy útiles en el momento de desarrollar código el primero permite establecer una característica de la membresía y el segundo como se inicializan los atributos de los objetos y esto se logra con los constructores, en este post aprenderás ambos conceptos.

Si quieres aprender sobre la historia de Java da clic en este enlace.

1. Miembros estáticos Atributos y Métodos

Los miembros Estáticos en Java utilizan la palabra reservada static y permiten vincular un atributo o método con la clase directamente, en este punto es conveniente notar que los atributos son independientes entre los objetos, de tal manera que cada objeto tiene su propia copia de los atributos, sin embargo con los atributos estáticos no ocurre lo mismo ya que solamente existe una copia de los mismos para todas las instancias de una clase (objetos).

Con los métodos pasa algo similar, de por si los métodos tienen una sola copia ya que todos los objetos acceden a las mismas instrucciones, sin embargo las variables que utilizan si son independientes por objeto, con un método estático se limita el acceso de dicho método solo a atributos estáticos, esta regla impide por ejemplo que un método estático acceda a un miembro no estático.

Al estar asociado los miembros estáticos a la clase los mismos pueden acceder a través del operador punto y utilizando el nombre de la clase, alternativamente puede usarse en objetos.

1.1 Ejemplos de miembros estáticos Atributos y Métodos

Conceptos básicos para escribir código en java que incluyen Clases Métodos y Atributos. Tipos de datos palabras reservadas y escritura básica de código.

A fin de ejemplificar el uso de métodos y atributos estáticos consideremos el siguiente código

public class DemoStatic {
    public int i;
    public static void staticMethod() {
        i = 2;
    }
}

Aquí el acceso a la variable i no esta permitido dentro del método estático y la razón es simple: el atributo no es estático, piense en ello un momento ya que lo anterior implica que se pueda hacer un llamado a staticMethod desde la clase, algo como: DemoStatic.staticMethod(), pero al intentar acceder a la variable i ¿cuál valor de variable se debe usar? sabiendo que el llamado se hizo desde la propia clase, por lo anterior no esta permitido acceder a miembros no estáticos desde métodos estáticos. Lo anterior ocurre con frecuencia cuando se comienza a programar en situaciones como la siguiente.

public class DemoStatic {
    public int i;
    public static void main(String args[]) {
        i = 2;
    }
}

En esencia es el mismo código anterior, excepto que se esta haciendo uso del método main, para subsanar lo anterior hay dos alternativas: convertir la i en atributo estático o instanciar un nuevo objeto de la clase, ambas soluciones se muestran a continuación.

public class DemoStatic {
    public static int i;
    public static void main(String args[]) {
        i = 2;
    }
}
public class DemoStatic {
    public int i;
    public static void main(String args[]) {
        DemoStatic ds = new DemoStatic();
        ds.i = 2;
    }
}

2. Constructores, bloques y ámbitos en Java

Los Constructores en Java son métodos especiales diseñados para inicializar los atributos y se caracterizan por tener el mismo nombre de la clase y retornar nada.

Random r = new Random();

La variable r se encarga de referenciar en memoria a un objeto recién creado de la clase Ramdom y usando el método constructor por defecto.

2.1. Constructores

Existen tres tipos de constructores tradicionales que son:

  1. Los constructores por defecto no reciben ningún parámetro, Java incluye automáticamente en caso que el programador no especifique de forma explicita un constructor.
  2. Constructor con parámetros, que recibe parámetros referentes a los atributos y normalmente los asigna a los mismos.
  3. Constructor de copia, que recibe un objeto de la misma clase y realiza una copia de los atributos del parámetro en el nuevo objeto creado.

Según las reglas de sobrecarga de métodos pueden existir varios constructores, ya que un constructor es un método más.

Las reglas de sobrecarga establecen que los métodos pueden tener el mismo nombre y tipo de retorno siempre y cuando las firmas de los métodos difieran bien sea en tipos de datos de los parámetros o cantidad de parámetros u orden de los mismos o excepciones que arroje el método.

2.2. Inicializaciones de objetos

Un constructor inicializa los atributos que en general pueden inicializarse de tres formas.

  • Inicialización en línea: ocurre cuando en la misma línea de la declaración se inicializa el atributo, esta es la primera inicialización que tiene un atributo..
  • Inicialización en constructor: ocurre cuando se agrega lógica al constructor que inicializa la variable, esta es la última inicialización de un atributo.
  • Inicialización de instancia: ocurre en un bloque de inicialización, estas inicializaciones junto con las inicializaciones en línea se ejecutan en el orden que se encuentren en el código.

Recuerde que no es posible referirse a una variable que no ha sido inicializada. El siguiente código muestra cada uno de estos esquemas de inicialización.

public class InitExamples {
    public InitExamples() {
        // Inicialización en constructor
        i = 5;
    }
    public static void main(String[] args) {
        InitExamples ie = new InitExamples();
        System.out.println(ie.i);
    }
    // Inicialización en línea
    private int i = 3;
    // Bloque de inicialización de instancia
    { i = 4; }
}

¿Qué valor cree que se imprime? Si respondió 5 esta en lo correcto. Observe el bloque de inicialización el cual no tiene etiquetas, ni firmas de prototipos, en este bloque se puede incluir la lógica necesaria para inicializar la variable.

2.3. Ámbitos y variables

Respecto a los bloques de código es importante que el programador reconozca que los bloques son trozos de código encerrados entre llaves y que el ámbito se refiere a los bloques de código donde se puede referir alguna variable.

  • Variables locales: son aquellas declaradas dentro de los métodos y se pueden utilizar en el bloque fueron declaradas y en todo caso no antes de su declaración.
  • Variables de instancia: estas también son conocidas como atributos y se pueden usar en el bloque de su declaración o desde su objeto siempre y cuando cumpla con las reglas de los modificadores de acceso. Una variable de instancia solo se encuentra en memoria al igual que el objeto al cual pertenece, por lo tanto cuando un objeto se queda sin referencias es liberado de la memoria mediante el recolector de basura sucede lo mismo con las variables de instancia.
  • Variables de clase: estas variables son las conocidas como atributos estáticos y esta disponible en el bloque de su declaración y desde los objetos y clases siempre y cuando cumpla con las reglas de los modificadores de acceso. Una variable de clase esta disponible hasta que el programa termina.

Las variables de clase o de instancia pueden no ser inicializadas Java inicializa las variables según el tipo con los siguientes valores por defecto.

Tipo de variableValor inicial
booleanfalse
byte, short, int, long0
float, double0.0
char‘\0000’ (NUL)
Referenciasnull
Tabla 1. Valores iniciales de variables

2.4. Inicializaciones estáticas

Finalmente, y con respecto al tema de inicializaciones y bloques es importante para el programador tener en cuenta que los bloques de inicialización pueden ser marcados con la palabra reservada static de la siguiente manera static { }, este código se ejecutará cuando se cargue la clase y sirve para inicializar atributos estáticos, de manera que en un bloque de inicialización estático solo pueden referenciar en miembros estáticos, similar a como sucede con los método estáticos.

3. Artículos de Interés

« Entradas anteriores Entradas recientes »

© 2024 ochoscar's blog

Tema por Anders NorenArriba ↑