-3

我想在我的 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;
4

1 回答 1

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) 将是您评估的函数,可以根据需要进行更改。

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

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

于 2014-11-17T23:52:14.050 回答