停止条件 matlab 迭代



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

这是我现在的代码。所以我需要添加某种停止标准,我已经尝试了几次,但它不起作用......我感谢您的帮助!

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

%在这里应该是...

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;

好吧,您需要以某种方式计算您在每次迭代中所做的"错误"。在您的情况下,它将是这样的:

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但您可能需要以另一种方式计算此错误。

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

最新更新