我有三个方程式,其中u先前被定义为mx1向量而A是mxn矩阵:
v = A'*u/norm(A'*u);
s = norm(A*v);
u = A*v/norm(A*v);
我试图重复这些方程式,直到它们收敛为止。我一直在尝试使用solve()函数:
[v s u] = solve(v == A'*u/norm(A'*u), s == norm(A*v), u == A*v/norm(A*v), v, s, u)
但是在使用它时我会遇到很多错误。我怎么能这样做?
答案 0 :(得分:1)
不确定您使用solve
期望的是什么,但您可以使用while
循环以数字方式执行此操作,直到v
和u
中的更改小于某个容差
A=rand(5,4); %// sample data
u=rand(5,1);
u2=u+1;v2=1;v=0; %// to make sure we enter the loop
tol=1e-11 %// tolerance on change in u or v, to exit loop
while(norm(u2-u)>tol && norm(v2-v)>tol) %// continue until both changes are small enough
u2 = u;
v2 = v;
v = A'*u/norm(A'*u) %// calculate new value of v
s = norm(A*v);
u = A*v/norm(A*v) %// new value of u
end