Está en la página 1de 9

Alumno: Uriel Agustin Castelan Meliton.

Materia: Herramientas Computacionales.


UPIITA-IPN.
Proyecto 2 Vectores Ortonormalizados
2024-1.

Ingenieria En Energia.

3 de dic. de 23
En que se basa mi proyecto.
Lo que quise lograr con este codigo es que a traves de una serie de vectores no ortogonales, es
decir, que no sean perpendiculares entre si convertirlos mediante el algoritmo de gram-schmidt
en una base ortogonal y normalizada (que todos los vectores sean unitarios y tenga la misma
magnitud), para ello se utiliza la siguiente formula.

En donde mis entradas seran los vectores V1, V2, V3 (Vectores no ortonormalizados) y mis salidas
seran los vectores U1, U2, U3 (Vectores ortogonales) que para lograr la normalizacion seran
divididos sobre su propia magnitud, ejemplificando las comparativa entre ambos sistemas en la
siguiente imagen:

Vectores Ortogonales Vectores no Ortogonales

Interfaz Grafica.
Mi interfaz grafica se compone de 2 tablas en las cuales se situaran los valores de los vectores
nombradas datos de los vectores no ortonormales y datos de los vectores ortonormales, un boton
que permite la calcular estos ultimos y 2 graficas que nos ayudaran a representar los vectores,
ademas de la la grafica de los vectores ortonormales nos puede permitir compararlos con los
vectores iniciales.
Vista Normal
Vista de programa activo

Codigo.
El codigo de mi funcion inicial es el siguiente

% valores ramdom
T{1,1}=1;
T{1,2}=2;
T{1,3}=3;
T{2,1}=1;
T{2,2}=2;
T{2,3}=4;
T{3,1}=5;
T{3,2}=4;
T{3,3}=3;
app.UITable.Data=T;
app.UITable.ColumnName=['i'; 'j'; 'k'];
app.UITable2.ColumnName=['i'; 'j'; 'k'];
app.UITable.ColumnEditable=true;
app.UITable2.ColumnEditable=false;
% Vectores
V1=[T{1,1} T{1,2} T{1,3}];
V2=[T{2,1} T{2,2} T{2,3}];
V3=[T{3,1} T{3,2} T{3,3}];
% Graficacion de Vectores no ortogonalizados
quiver3(app.UIAxes,0, 0, 0, V1(1), V1(2), V1(3), 'r', 'LineWidth', 1, 'MaxHeadSize', 0.3);
hold(app.UIAxes,"on");
quiver3(app.UIAxes,0, 0, 0, V2(1), V2(2), V2(3), 'g', 'LineWidth', 1, 'MaxHeadSize', 0.3);
quiver3(app.UIAxes,0, 0, 0, V3(1), V3(2), V3(3), 'b', 'LineWidth', 1, 'MaxHeadSize', 0.3);

El codigo del boton de actualizar es el siguiente

cla(app.UIAxes); cla(app.UIAxes_2);

T=app.UITable.Data;

% Ingreso de datos de vectores no ortogonalizados


V1=[T{1,1} T{1,2} T{1,3}];
V2=[T{2,1} T{2,2} T{2,3}];
V3=[T{3,1} T{3,2} T{3,3}];
% Graficacion de Vectores no ortogonalizados
quiver3(app.UIAxes,0, 0, 0, V1(1), V1(2), V1(3), 'r', 'LineWidth', 1, 'MaxHeadSize', 0.3);
hold(app.UIAxes,"on");
quiver3(app.UIAxes,0, 0, 0, V2(1), V2(2), V2(3), 'g', 'LineWidth', 1, 'MaxHeadSize', 0.3);
quiver3(app.UIAxes,0, 0, 0, V3(1), V3(2), V3(3), 'b', 'LineWidth', 1, 'MaxHeadSize', 0.3);
axis(app.UIAxes,"equal")
grid(app.UIAxes,"on")
% Ortogonalizacion
U1 = V1;
U2 = V2 - ((dot(V2, U1) / dot(U1, U1)) * U1);
U3 = V3 - ((dot(V3, U1) / dot(U1, U1)) * U1) - ((dot(V3, U2) / dot(U2, U2)) * U2);
% Normalizacion
U1=U1/(sqrt(U1(1,1)^2+U1(1,2)^2+U1(1,3)^2));
U2=U2/(sqrt(U2(1,1)^2+U2(1,2)^2+U2(1,3)^2));
U3=U3/(sqrt(U3(1,1)^2+U3(1,2)^2+U3(1,3)^2));
% Graficacion de vectores ortogonalizados
quiver3(app.UIAxes_2,0, 0, 0, U1(1), U1(2), U1(3), 'r', 'LineWidth', 1, 'MaxHeadSize', 0.3);
hold(app.UIAxes_2,"on");
quiver3(app.UIAxes_2,0, 0, 0, U2(1), U2(2), U2(3), 'g', 'LineWidth', 1, 'MaxHeadSize', 0.3);
quiver3(app.UIAxes_2,0, 0, 0, U3(1), U3(2), U3(3), 'b', 'LineWidth', 1, 'MaxHeadSize', 0.3);
axis(app.UIAxes_2,"equal")
grid(app.UIAxes_2,"on")
% Comparar ambas graficas
if app.CompararambasgraficasCheckBox.Value==1
quiver3(app.UIAxes_2,0, 0, 0, V1(1), V1(2), V1(3),"Color",[.5 .5 .5], 'LineWidth', 1, 'MaxHeadSize',
0.3);
quiver3(app.UIAxes_2,0, 0, 0, V2(1), V2(2), V2(3), "Color",[.5 .5 .5], 'LineWidth', 1, 'MaxHeadSize',
0.3);
quiver3(app.UIAxes_2,0, 0, 0, V3(1), V3(2), V3(3), "Color",[.5 .5 .5], 'LineWidth', 1, 'MaxHeadSize',
0.3);
end
% Salida de los vectores Ortonormalizados
T1(1,1)=U1(1,1);
T1(1,2)=U1(1,2);
T1(1,3)=U1(1,3);
T1(2,1)=U2(1,1);
T1(2,2)=U2(1,2);
T1(2,3)=U2(1,3);
T1(3,1)=U3(1,1);
T1(3,2)=U3(1,2);
T1(3,3)=U3(1,3);

app.UITable2.Data=T1;

Prueba y Comprobacion del codigo.


Mi funcion inicial es:

Al apretar el boton de calcular los datos de la segunda tabla van a aparecer y la grafica se mostrara
Aquí observamos que todos los vectores son perpendiculares y ademas observamos que todos son
unitarios y tiene la misma longitud

Ahora al apretar el boton de comparar ambas graficas se muestra la primera grafica en la segunda
pero con colores grises para marcar el hecho del cambio
Conclusiones.
El codigo nos puede ayudar a verificar los calculos de una tarea, hacer mas facil la interpretacion
de datos, utilizacion de valores precisos y a su vez darnos una idea de manera grafica de lo que
estamos realizando, una de sus grandes aplicaciones es en algebra lineal y ahí mi inspiracion en su
realizacion, al aprovechar este codigo en el calculo de una tarea.

También podría gustarte