稳定的概率向量

时间:2012-06-01 05:24:53

标签: matlab scilab

我正在尝试用scilab编写一个程序(希望这同样适用于matlab)来获得找到稳定向量的时间,我的意思是,在对产品向量和矩阵进行多次后,结果将变得稳定,因此不会改变。

我认为最好的方法是使用递归函数,所以我编写了以下内容:

function [R]=vector_stable(v,m,i)
    V=v*m;
    if(V == v) then
        R=i;
        abort;
    else
        vector_stable(V,m,i+1);
    end
endfunction

让我稍微解释一下,V是初始向量和矩阵的乘积,如果结果与向量参数相同则必须返回发生这种情况的时间,如果不是,则会调用相同的以结果作为第一个参数。但是我收到以下错误

-->R=vector_stable(V,M,0)
 !--error 18 
: Too many names.

我的功能是否正确?你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

可能稳定并不意味着“不改变”而是“收敛”?然后你无法测试等于V == v来终止循环。您可以查看两个向量之间的相对差异,如果它小于,例如,则终止。 1%或0.1%。

当你(为测试目的)终止i == 10而不是V == v时,你也会得到错误吗?

答案 1 :(得分:1)

您的功能看起来不正确。这可能更像是:

function [R] = vector_stable(v, M, i)

V = v*M;
if(norm(V - v) < 0.001)
    R = i;
    return;
else
    R = vector_stable(V,m,i+1);
end

return
end