lunes, 8 de febrero de 2016
Libro
Les dejo el primer capítulo del libro LINEAR ALGEBRA THROUGH ITS APPLICATIONS de TJ Fletcher para que le den lectura, disfrútenlo.
Link
Link
miércoles, 17 de febrero de 2016
Material de Ayudantía
Les comparto algunos documentos para reforzar lo aprendido en las sesiones anteriores.
04/02/2016
09/02/2016
11/02/2016
16/02/2016
En este documento se desarrolla a grosso modo la teoría de las series de Fourier enfatizando las relaciones con el álgebra lineal: Series de Fourier
18/02/2014
En este documento se estudia a los polinomios de Chebyshev como bases de espacios vectoriales de funciones. Polinomios de Chebyshev
04/02/2016
En este documento estudiamos las principales características de un espacio vectorial y analizamos algunos ejemplos: Bases y dimensión de un espacio vectorial
09/02/2016
En este capítulo revisamos algunos espacios vectoriales poco convencionales, como el de las series aritméticas, cuadrados mágicos, bases de polinomios, interpolación y extrapolación, etc: Capítulo primero
11/02/2016
Aquí les presento un artículo en http://mathworld.wolfram.com/ sobre la Interpolación polinómica de Lagrange enfatizada en clase por el profesor: Lagrange Interpolating Polynomial
16/02/2016
En este documento se desarrolla a grosso modo la teoría de las series de Fourier enfatizando las relaciones con el álgebra lineal: Series de Fourier
18/02/2014
En este documento se estudia a los polinomios de Chebyshev como bases de espacios vectoriales de funciones. Polinomios de Chebyshev
jueves, 25 de febrero de 2016
Sobre la Tarea 3
Reducción de una forma cuadrática a una forma canónica.
La tarea 3 consistió en reducir la forma cuadrática:
Q(x,y,z)=x^2+2y^2+5z^2-4xy-6xz-20yz
a una suma de cuadrados.
Aquí el método de completar cuadrados.
Solución 1
Aquí el método matricial.
La tarea 3 consistió en reducir la forma cuadrática:
Q(x,y,z)=x^2+2y^2+5z^2-4xy-6xz-20yz
a una suma de cuadrados.
Aquí el método de completar cuadrados.
Solución 1
Aquí el método matricial.
jueves, 3 de marzo de 2016
Sobre la Tarea 4
Aquí podrán revisar sobre la factorización LU y factorización de Cholesky:
Enlace 1 Factorización LU
Enlace 2 Factorización de Cholesky
La tarea:
Básicamente deben probar que si A>0 es no singular y A=A^t ( simétrica), entonces:
A=LL^t
Y verificar para una matriz de 3x3 que se dio en clase.
Enlace 1 Factorización LU
Enlace 2 Factorización de Cholesky
La tarea:
Básicamente deben probar que si A>0 es no singular y A=A^t ( simétrica), entonces:
A=LL^t
Y verificar para una matriz de 3x3 que se dio en clase.
viernes, 18 de marzo de 2016
martes, 29 de marzo de 2016
Algoritmo de Gram-Schmidt
"El método de Gram-Schmit es un algoritmo para obtener, a partir de una base, otra que genere el mismo espacio y además sea ortogonal."
Les dejo los códigos en MatLab que vimos en clase, ustedes pueden mejorarlos..
Algoritmo de Gram-Schmidt
Les dejo los códigos en MatLab que vimos en clase, ustedes pueden mejorarlos..
Algoritmo de Gram-Schmidt
- Factorización S=QR, con R una matriz triangular con 1's en la diagonal, y Q una matriz con columnas ortogonales.
S=rand(5)
Q=zeros(5)
for i=1:5
Q(:,i)=S(:,i);
j=1;
while j<i
Q(:,i) = Q(:,i) - (dot(Q(:,j),S(:,i))/dot(Q(:,j),Q(:,j)))*Q(:,j);
j=j+1;
end
Q
end
Q'*Q
- Factorización S=QR, con R una matriz triangular y Q una matriz con columnas ortonormales.
S=10*rand(5)
Q=zeros(5)
for i=1:5
Q(:,i)=S(:,i);
j=1;
while j<i
Q(:,i) = Q(:,i) - (dot(Q(:,j),S(:,i)))*Q(:,j);
j=j+1;
end
Q(:,i)=Q(:,i)/sqrt(dot(Q(:,i),Q(:,i)));
Q
end
Q'*Q
Algoritmo de Gram-Schmidt modificado
- Factorización S=QR, con R una matriz triangular con 1's en la diagonal, y Q una matriz con columnas ortogonales.
S=10*rand(5)
Saux=S
Q=zeros(5)
for i=1:5
Q(:,i)=Saux(:,i);
j=1;
for j=i+1:5
Saux(:,j)=Saux(:,j)-(dot(Q(:,i),Saux(:,j))/dot(Q(:,i),Q(:,i)))*Q(:,i);
j=j+1;
end
Q'*S
end
Q'*Q
Ejercicio, hacer un programa con el Algoritmo de Gram-Schmidt Modificado que calcule a Q una matriz con columnas ortonormales.
jueves, 31 de marzo de 2016
Población Mexicana
Acá un poco de ayuda con la tarea.
X = {1825, 1838, 1846, 1858, 1862, 1872, 1900, 1910, 1920, 1929, 1940,
1950, 1960, 1970, 1980, 1990, 2000, 2010};
Y = {6.8, 7.8, 7.5, 8.3, 8.8, 9, 13.6, 15.2, 14.3, 15.6, 19.6, 25.7,
34.5, 48.2, 66.8, 81.2, 97.5, 112};
g = ListPlot[Table[{X[[n]], Y[[n]]}, {n, 18}],
PlotRange -> {{1800, 2020}, {0, 120}}]
(*Esta función nos devuelve un polinomio de grado "n" que aproxima el \
conjunto de puntos (X,Y), el argumento de la función es "n" *)
FA[n_] := {A = ConstantArray[0, 18];
(*Esta parte hace el llenado de la matriz A*)
For[i = 1, i <= 18, i++,
ra = {};
For[j = n, j >= 0, j = j - 1,
ra = Append[ra, X[[i]]^j];
];
A[[i]] = ra;
];
(*Aquí resolvemos el sistema A^t.A.z=A^t.Y *)
z = Inverse[Transpose[A].A].Transpose[A].Y;
(*Aquí hacemos un vector (1, x, x^2, ... , x^n) *)
xx = {};
For[j = n, j >= 0, j = j - 1,
xx = Append[xx, x^j];];
(*Y Aquí mostramos el polinomio de grado "n" que aproxima mi \
conjunto de puntos *)
Print[z.xx]
};
(*Probamos la función*)
FA[1];
FA[2];
FA[3];
FA[4];
FA[5];
FA[6];
FA[7];
-897.664+0.484675 x
20442.3 -21.7979 x+0.00581142 x^2
-249228.+400.164 x-0.21416 x^2+0.0000382045 x^3
-1.28905*10^6+2572.15 x-1.91487 x^2+0.000629848 x^3-7.71548*10^-8 x^4
1.97799*10^8-517173. x+540.673 x^2-0.282504 x^3+0.0000737738 x^4-7.70289*10^-9 x^5
-3.21198*10^9+1.01601*10^7 x-13387.3 x^2+9.40497 x^3-0.00371552 x^4+7.82621*10^-7 x^5-6.86659*10^-11 x^6
-9.71727*10^10+3.53646*10^8 x-551420. x^2+477.519 x^3-0.248037 x^4+0.0000772785 x^5-1.33719*10^-8 x^6+9.91321*10^-13 x^7
(*Graficaremos y meteremos las gráficas en una lista*)
n = {0, 0, 0, 0, 0, 0, 0, 0};
n[[1]] = Show[g,
Plot[-897.6641928173526` + 0.48467463746274153` x, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[2]] = Show[g,
Plot[20442.306836608994` - 21.7978533051658` x +
0.005811415549253077` x^2, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[3]] = Show[g,
Plot[-249227.85493191678` + 400.1640275525721` x -
0.21416016560400963` x^2 + 0.00003820447959753087` x^3, {x, 1825,
2010}, PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[4]] = Show[g,
Plot[-1.2890492831082772`*^6 + 2572.1543947656755` x -
1.9148674978535265` x^2 + 0.0006298478528085887` x^3 -
7.715480571538225`*^-8 x^4, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[5]] = Show[g,
Plot[1.9779879718994665`*^8 - 517173.4933725643` x +
540.6725095707277` x^2 - 0.2825037098744445` x^3 +
0.00007377377897575303` x^4 - 7.702891738786264`*^-9 x^5, {x,
1825, 2010}, PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[6]] = Show[g,
Plot[-3.2119776534339714`*^9 + 1.0160131070137084`*^7 x -
13387.256664146946` x^2 + 9.404974137884125` x^3 -
0.0037155180326244076` x^4 + 7.82620533443967`*^-7 x^5 -
6.86659278498812`*^-11 x^6, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[7]] = Show[g,
Plot[-9.717272647643164`*^10 + 3.5364560518599033`*^8 x -
551420.0646114675` x^2 + 477.51926634178744` x^3 -
0.24803695269323622` x^4 + 0.00007727845513013374` x^5 -
1.3371887640880992`*^-8 x^6 + 9.913213426395303`*^-13 x^7, {x,
1825, 2010}, PlotRange -> {{1800, 2020}, {0, 120}}]];
(*Hacemos una visualización animada para ver el comportamiento cualitativo de las aproximaciones*)
ListAnimate[n, 1]
(*Matriz de 5x5 aleatoria*)
A = {{3.9926, 2.9198, 1.0622, 9.5163, 4.2284}, {5.2688, 4.3165,
3.7241, 9.2033, 5.4787}, {4.1680, 0.1549, 1.9812, 0.5268,
9.4274}, {6.5686, 9.8406, 4.8969, 7.3786, 4.1774}, {6.2797,
1.6717, 3.3949, 2.6912, 9.8305}};
(*Código*)
Sauxt = Transpose[A];
Qt = ConstantArray[0, {5, 5}];
For[i = 1, i <= 5, i++,
Qt = ReplacePart[Qt, Sauxt[[i]] /Sqrt[Sauxt[[i]].Sauxt[[i]]], i];
For[j = i + 1, j <= 5, j++,
Sauxt =
ReplacePart[Sauxt,
Sauxt[[j]] - (Qt[[i]].Sauxt[[j]]/(Qt[[i]].Qt[[i]]))*Qt[[i]], j]
]
]
(*Pruebas*)
Qt // MatrixForm
(*Esto debe ser la identidad*)
Qt.Transpose[Qt] // MatrixForm
(*Esto debe ser R*)
Qt.A // MatrixForm
Y = [6.8 7.8 7.5 8.3 8.8 9 13.6 15.2 14.3 15.6 19.6 25.7 34.5 48.2 66.8 81.2 97.5 112];
plot(X,Y,':dk')
>>
A=zeros([18,4]);
for i=1:18
ra = zeros([1,4]);
for j=0:3
ra(4-j)=X(i)^j;
j=j+1;
end
A(i,:) = ra;
i=i+1;
end
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
X = [1825 1838 1846 1858 1862 1872 1900 1910 1920 1929 1940 1950 1960 1970 1980 1990 2000 2010];
A=zeros([18,n+1]);
for i=1:18
ra = zeros([1,n+1]);
for j=0:n
ra(n+1-j)=X(i)^j;
j=j+1;
end
A(i,:) = ra;
i=i+1;
end
end
(inv(FA(5)'*FA(5))*FA(5)'*Y')
que devuelve el vector
1.0e+06 *
0.0000
-0.0000
0.0000
-0.0000
0.0048
-2.1455
Por lo que el profesor ha pedido usar la factorización QR, se puede usar de dos modos haciendo a A=QR:
por lo que se debería resolver Rx=A^t*Y, sin embargo esto no da buenas aproximaciones (confirmado).
el otro modo es usarlo en Â=QR, donde Â=A^t*A,
entonces
(A^t)(A)x=(A^t)Y
QR*x=b, luego R*x=Q^t*b, que parece fácil de resolver.
Con estos códigos debe ser suficiente para que se den una idea.
Saludos
- Código en Mathematica de aproximación mínimos cuadrados, solución de (A^t)(A)x=(A^t)Y
X = {1825, 1838, 1846, 1858, 1862, 1872, 1900, 1910, 1920, 1929, 1940,
1950, 1960, 1970, 1980, 1990, 2000, 2010};
Y = {6.8, 7.8, 7.5, 8.3, 8.8, 9, 13.6, 15.2, 14.3, 15.6, 19.6, 25.7,
34.5, 48.2, 66.8, 81.2, 97.5, 112};
g = ListPlot[Table[{X[[n]], Y[[n]]}, {n, 18}],
PlotRange -> {{1800, 2020}, {0, 120}}]
(*Esta función nos devuelve un polinomio de grado "n" que aproxima el \
conjunto de puntos (X,Y), el argumento de la función es "n" *)
FA[n_] := {A = ConstantArray[0, 18];
(*Esta parte hace el llenado de la matriz A*)
For[i = 1, i <= 18, i++,
ra = {};
For[j = n, j >= 0, j = j - 1,
ra = Append[ra, X[[i]]^j];
];
A[[i]] = ra;
];
(*Aquí resolvemos el sistema A^t.A.z=A^t.Y *)
z = Inverse[Transpose[A].A].Transpose[A].Y;
(*Aquí hacemos un vector (1, x, x^2, ... , x^n) *)
xx = {};
For[j = n, j >= 0, j = j - 1,
xx = Append[xx, x^j];];
(*Y Aquí mostramos el polinomio de grado "n" que aproxima mi \
conjunto de puntos *)
Print[z.xx]
};
(*Probamos la función*)
FA[1];
FA[2];
FA[3];
FA[4];
FA[5];
FA[6];
FA[7];
-897.664+0.484675 x
20442.3 -21.7979 x+0.00581142 x^2
-249228.+400.164 x-0.21416 x^2+0.0000382045 x^3
-1.28905*10^6+2572.15 x-1.91487 x^2+0.000629848 x^3-7.71548*10^-8 x^4
1.97799*10^8-517173. x+540.673 x^2-0.282504 x^3+0.0000737738 x^4-7.70289*10^-9 x^5
-3.21198*10^9+1.01601*10^7 x-13387.3 x^2+9.40497 x^3-0.00371552 x^4+7.82621*10^-7 x^5-6.86659*10^-11 x^6
-9.71727*10^10+3.53646*10^8 x-551420. x^2+477.519 x^3-0.248037 x^4+0.0000772785 x^5-1.33719*10^-8 x^6+9.91321*10^-13 x^7
(*Graficaremos y meteremos las gráficas en una lista*)
n = {0, 0, 0, 0, 0, 0, 0, 0};
n[[1]] = Show[g,
Plot[-897.6641928173526` + 0.48467463746274153` x, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[2]] = Show[g,
Plot[20442.306836608994` - 21.7978533051658` x +
0.005811415549253077` x^2, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[3]] = Show[g,
Plot[-249227.85493191678` + 400.1640275525721` x -
0.21416016560400963` x^2 + 0.00003820447959753087` x^3, {x, 1825,
2010}, PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[4]] = Show[g,
Plot[-1.2890492831082772`*^6 + 2572.1543947656755` x -
1.9148674978535265` x^2 + 0.0006298478528085887` x^3 -
7.715480571538225`*^-8 x^4, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[5]] = Show[g,
Plot[1.9779879718994665`*^8 - 517173.4933725643` x +
540.6725095707277` x^2 - 0.2825037098744445` x^3 +
0.00007377377897575303` x^4 - 7.702891738786264`*^-9 x^5, {x,
1825, 2010}, PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[6]] = Show[g,
Plot[-3.2119776534339714`*^9 + 1.0160131070137084`*^7 x -
13387.256664146946` x^2 + 9.404974137884125` x^3 -
0.0037155180326244076` x^4 + 7.82620533443967`*^-7 x^5 -
6.86659278498812`*^-11 x^6, {x, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]];
n[[7]] = Show[g,
Plot[-9.717272647643164`*^10 + 3.5364560518599033`*^8 x -
551420.0646114675` x^2 + 477.51926634178744` x^3 -
0.24803695269323622` x^4 + 0.00007727845513013374` x^5 -
1.3371887640880992`*^-8 x^6 + 9.913213426395303`*^-13 x^7, {x,
1825, 2010}, PlotRange -> {{1800, 2020}, {0, 120}}]];
(*Hacemos una visualización animada para ver el comportamiento cualitativo de las aproximaciones*)
ListAnimate[n, 1]
- Factorización A=QR, con Q ortonormal
(*Matriz de 5x5 aleatoria*)
A = {{3.9926, 2.9198, 1.0622, 9.5163, 4.2284}, {5.2688, 4.3165,
3.7241, 9.2033, 5.4787}, {4.1680, 0.1549, 1.9812, 0.5268,
9.4274}, {6.5686, 9.8406, 4.8969, 7.3786, 4.1774}, {6.2797,
1.6717, 3.3949, 2.6912, 9.8305}};
(*Código*)
Sauxt = Transpose[A];
Qt = ConstantArray[0, {5, 5}];
For[i = 1, i <= 5, i++,
Qt = ReplacePart[Qt, Sauxt[[i]] /Sqrt[Sauxt[[i]].Sauxt[[i]]], i];
For[j = i + 1, j <= 5, j++,
Sauxt =
ReplacePart[Sauxt,
Sauxt[[j]] - (Qt[[i]].Sauxt[[j]]/(Qt[[i]].Qt[[i]]))*Qt[[i]], j]
]
]
(*Pruebas*)
Qt // MatrixForm
(*Esto debe ser la identidad*)
Qt.Transpose[Qt] // MatrixForm
(*Esto debe ser R*)
Qt.A // MatrixForm
- Código en MatLab del llenado de A para n=3
Y = [6.8 7.8 7.5 8.3 8.8 9 13.6 15.2 14.3 15.6 19.6 25.7 34.5 48.2 66.8 81.2 97.5 112];
plot(X,Y,':dk')
>>
A=zeros([18,4]);
for i=1:18
ra = zeros([1,4]);
for j=0:3
ra(4-j)=X(i)^j;
j=j+1;
end
A(i,:) = ra;
i=i+1;
end
- Código de la función FA en MatLab con argumento "n", Ojo es diferente la forma en la que definen funciones. menú New / function y guardan con nombre FA.m
- Si quieren modificarlo y que haga lo mismo que la función en Mathematica (devuelva el polinomio), deben introducir aquí también al vector Y.
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
X = [1825 1838 1846 1858 1862 1872 1900 1910 1920 1929 1940 1950 1960 1970 1980 1990 2000 2010];
A=zeros([18,n+1]);
for i=1:18
ra = zeros([1,n+1]);
for j=0:n
ra(n+1-j)=X(i)^j;
j=j+1;
end
A(i,:) = ra;
i=i+1;
end
end
- Una forma de utilizar esta función sería por ejemplo
que devuelve el vector
1.0e+06 *
0.0000
-0.0000
0.0000
-0.0000
0.0048
-2.1455
con la advertencia :Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.882565e-47.
por lo que se debería resolver Rx=A^t*Y, sin embargo esto no da buenas aproximaciones (confirmado).
el otro modo es usarlo en Â=QR, donde Â=A^t*A,
entonces
(A^t)(A)x=(A^t)Y
QR*x=b, luego R*x=Q^t*b, que parece fácil de resolver.
Con estos códigos debe ser suficiente para que se den una idea.
Saludos
lunes, 11 de abril de 2016
Mínimos cuadrados chidos
X = {1825, 1838, 1846, 1858, 1862, 1872, 1900, 1910, 1920, 1929, 1940,
1950, 1960, 1970, 1980, 1990, 2000, 2010};
Y = {6.8, 7.8, 7.5, 8.3, 8.8, 9, 13.6, 15.2, 14.3, 15.6, 19.6, 25.7,
34.5, 48.2, 66.8, 81.2, 97.5, 112};
g = ListPlot[Table[{X[[n]], Y[[n]]}, {n, 18}],
PlotRange -> {{1800, 2020}, {0, 120}}]
n = 8;
P[u_, v_] := {a = u; b = v; uu[t_] = a; vv[t_] = b;
sum = 0;
For[k = 1, k <= 18, k++,
sum = sum + uu[X[[k]]]*vv[X[[k]]];
];
sum
}[[1]]
Q = Array[0 &, n + 1];
For[i = 1, i <= n + 1, i++,
Q[[i]] = t^(i - 1);
For[j = i - 1, j > 0, j = j - 1,
Q[[i]] =
Q[[i]] - P[t^(i - 1), Q[[j]] ] * Q[[j]] /P[Q[[j]], Q[[j]] ] ;
]
]
G[v_] := { b = v; vv[t_] = b;
sum = 0;
For[k = 1, k <= 18, k++,
sum = sum + Y[[k]]*vv[X[[k]]];
];
sum
}[[1]];
Pol = 0;
For[j = 1, j <= n + 1, j++,
Pol = Pol + G[Q[[j]]]*Q[[j]]/P[Q[[j]], Q[[j]]];
];
Simplify[Pol];
Pol;
Show[g, Plot[Pol, {t, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]]
1950, 1960, 1970, 1980, 1990, 2000, 2010};
Y = {6.8, 7.8, 7.5, 8.3, 8.8, 9, 13.6, 15.2, 14.3, 15.6, 19.6, 25.7,
34.5, 48.2, 66.8, 81.2, 97.5, 112};
g = ListPlot[Table[{X[[n]], Y[[n]]}, {n, 18}],
PlotRange -> {{1800, 2020}, {0, 120}}]
n = 8;
P[u_, v_] := {a = u; b = v; uu[t_] = a; vv[t_] = b;
sum = 0;
For[k = 1, k <= 18, k++,
sum = sum + uu[X[[k]]]*vv[X[[k]]];
];
sum
}[[1]]
Q = Array[0 &, n + 1];
For[i = 1, i <= n + 1, i++,
Q[[i]] = t^(i - 1);
For[j = i - 1, j > 0, j = j - 1,
Q[[i]] =
Q[[i]] - P[t^(i - 1), Q[[j]] ] * Q[[j]] /P[Q[[j]], Q[[j]] ] ;
]
]
G[v_] := { b = v; vv[t_] = b;
sum = 0;
For[k = 1, k <= 18, k++,
sum = sum + Y[[k]]*vv[X[[k]]];
];
sum
}[[1]];
Pol = 0;
For[j = 1, j <= n + 1, j++,
Pol = Pol + G[Q[[j]]]*Q[[j]]/P[Q[[j]], Q[[j]]];
];
Simplify[Pol];
Pol;
Show[g, Plot[Pol, {t, 1825, 2010},
PlotRange -> {{1800, 2020}, {0, 120}}]]
sábado, 21 de mayo de 2016
lunes, 6 de junio de 2016
CALIFICACIONES FINALES
Podrán consultar aquí su calificación final
CALIFICACIONES
cualquier duda o aclaración en los correos:
CALIFICACIONES
cualquier duda o aclaración en los correos:
- Pablo Barrera Sánchez (pablobarrera@ciencias.unam.mx)
- Mario Rafael Nolasco Estrada (mnolasco@ciencias.unam.mx)
las tareas finales serán entregadas mañana martes a la hora de clase
