如何在Matlab中重复一组方程直到收敛?
我有三个方程,其中u先前定义为mx1向量,A是mxn矩阵:如何在Matlab中重复一组方程直到收敛?,matlab,equation-solving,Matlab,Equation Solving,我有三个方程,其中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) 但是当我使用它的时候,我总是会犯很多错误。我还能怎么做呢?不确定使用解算时您期望的是什么
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)
但是当我使用它的时候,我总是会犯很多错误。我还能怎么做呢?不确定使用
解算时您期望的是什么,但是您可以在循环时使用数值执行此操作,直到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
愚蠢的我,我甚至没有想过使用while循环。我在另一个论坛上看到一个类似的问题,他们试图使用solve()函数,所以我脑子里一直想我应该使用它。谢谢