Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中重复一组方程直到收敛?_Matlab_Equation Solving - Fatal编程技术网

如何在Matlab中重复一组方程直到收敛?

如何在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) 但是当我使用它的时候,我总是会犯很多错误。我还能怎么做呢?不确定使用解算时您期望的是什么

我有三个方程,其中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
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()函数,所以我脑子里一直想我应该使用它。谢谢