停止标准matlab迭代

时间:2014-11-17 20:21:09

标签: matlab while-loop iteration fixed-point

我想在我的matlab代码中添加一个While循环,以便在迭代足够好时停止。有某种宽容,例如。 1E-6。

这是我的代码。所以我需要添加一些停止标准,我已经尝试了好几次但是它不起作用...我感谢所有你的帮助!

x(1)=1;
iterations = 0;
tolerance = 1e-6;

%这应该是...... [/ p>

for i=1:N     
    x(i+1)=x(i);        
    for j=1:N              
        x(i+1)=F(x(i),x(i+1)); 
    end
end
iter= iter + 1;

1 个答案:

答案 0 :(得分:1)

好吧,不知怎的,你需要计算你在每次迭代中所做的'错误'。在你的情况下,它将是这样的:

iter = 0;
tolerance = 1e-6;
error=1;
x=F(x);

while(error>tolerance)    
    x2=x;        
    x=F(x);
    error = x-x2;
    iter= iter + 1; 
end

注意一开始错误是如何设置为1所以我们确保它进入循环内部。我们还计算循环外的x的第一个实例。 F(x)将是您评估的功能,可根据您的需要进行更改。

在循环内部将x的旧值分配给x2,然后计算新的x并最终计算错误。在这里,我将错误计算为x-x2,但您可能需要以另一种方式计算此错误。

只要误差低于容差,循环就会退出。