Create the program to return the orthogonal basis and orthonormal basis
91 次查看(过去 30 天)
显示 更早的评论
Write a program to input any number of vectors in R^n and return return the orthogonal basis and orthonormal basis of the subspace spanned by these vectors using Gram Schmidt process. Can someone check if I do right
for j= 1:n
v = A (: , j) ;
for i = 1: j-1
R(i,j) = Q (:, i )' * A ( :, j) ;
v = v - R ( i ,j ) * Q ( :, i);
end
R ( j, j ) = norm ( v );
Q (:, j) = v/R ( j, j ) ;
end
0 个评论
采纳的回答
Torsten
2022-8-13
编辑:Torsten
2022-8-13
As far as I can see, you only return the orthonormal basis from the Gram Schmidt process in the matrix Q.
And saving the norms is superfluous if you have to return the orthonormal basis, too.
n = 2;
A = [1 3; 4 -7; -1 -12];
Q = zeros(size(A));
QN = zeros(size(A));
for j= 1:n
v = A (:,j) ;
for i = 1: j-1
rij = Q(:,i).' * A(:,j) / (Q(:,i).' * Q(:,i));
v = v - rij * Q(:,i);
end
Q(:,j) = v;
QN(:,j) = v/norm(v);
end
sqrt(Q.'*Q)
QN.'*QN
2 个评论
Torsten
2022-8-14
编辑:Torsten
2022-8-14
If the resulting vector v is the zero vector, you shouldn't include it as column in Q. This will happen if vi is already in the span of v1,...,v_i-1. And this will definitely happen if more than n vectors are supplied - as is possible according to the formulation of the assignment.
更多回答(1 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!