2014-11-17 2 views
-3

Я хочу добавить цикл While к моему коду matlab, чтобы он остановился, когда итерация достаточно хороша. С некоторой долей, например. 1e-6.Критерии остановки matlab iteration

Это мой код сейчас. Так что мне нужно добавить какие-то критерии остановки, я уже несколько раз пробовал, но это не сработает ... Я ценю всю помощь!

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; 
+2

Что вы хотите быть меньше, чем «толерантность»? – badjr

+0

Ваш внутренний код цикла не имеет никакого смысла. Вы повторяете 'j', но вы не используете' j' вообще. Пожалуйста, проверьте свой код для полноты и редактирования. – rayryeng

ответ

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, но вам может потребоваться вычислить эту ошибку по-другому.

Петля выйдет всякий раз, когда ошибка ниже допуска.

+0

Я написал свой код в соответствии с вашим методом, но когда я отправляю итерации, он говорит 0 ?? – jossis

+1

Возможно, потому, что вы указали, что ваша первоначальная ошибка меньше вашего допуска. Цикл while даже не выполняется в этой точке – rayryeng

Смежные вопросы