2016-11-07 2 views
0

У меня есть цикл while, и я не смог определить, как сохранить значения успешно. Любая помощь будет принята с благодарностью.Сохранение значений с помощью цикла while (matlab)

n = 0; a = 21; b = 0; c = 0; y = 37.6991; T = 18.5; z = 0.1591; d = 0; f = 15.3049; q = 2.2391e4; e = 5; x = 60; 
while n < x 
     a = a + b     
     c = y*(T-a)/z;     
     d = f*c;    
     b = d/q;     
     n = n + e; 
    end 

Значение Пытаюсь магазин a, я могу сказать, что правильные значения внутри цикла, но просто не могу показаться, чтобы правильно хранить значение.

+0

Как вы можете правильно определить значения внутри? Если я запустил свой код, я получаю сообщение об ошибке «n undefined near line 1 column 7». Вам нужно предоставить полный минимальный рабочий пример. – stephematician

+0

Действительный момент, извините, я обнов его сейчас. – Scott

+0

Исправлено, я прошел обновление код, чтобы убедиться, что он работает без ошибок. – Scott

ответ

1

Другой подход будет признать, что она является относительно простым рекуррентным соотношением:.

n = 0; a = 21; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; e = 5; x = 60; 
while n < x 
    a(end+1) = a(end) + f * y * (T - a(end))/(q * z); 
    n = n + e; 
end 

Этот расчет может быть также vectorised, но если вы хотите точно такой же вывод, который вы должны быть немного осторожны:

n = 5:5:55; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; a0 = 21; 
alpha = f * y * T/(q * z); 
beta = (1 - f * y/(q * z)).^(0:length(n)) 

a = a0 * beta + alpha * [0 cumsum(beta(1:end-1))]; 

код, кажется, теряет ясность (для меня), когда vectorised, так что я бы, наверное, предпочитают цикла в этом сценарии.

0

Попробуйте это:

counter = 1; 
n = 0; a = 21; b = 0; c = 0; y = 37.6991; T = 18.5; z = 0.1591; d = 0; f = 15.3049; q = 2.2391e4; e = 5; x = 60; 
var = zeros(1,12); 
while n < x 
     a = a + b;     
     c = y*(T-a)/z;     
     d = f*c;    
     b = d/q;     
     n = n + e; 
     var(counter) = a; 
     counter = counter+1; 
end 

я добавил переменную var, которая является вектором, который хранит значения a. Для того, т osave выполнения я инициализирован его ожидаемого размера переменной var = zeros(1,12); (это не является обязательным, но рекомендуется

+1

Не требуется строгое *** *** *** ** рекомендуется **. –

+0

Он работает, спасибо большое, я попробовал что-то подобное, но не смог похоже, заставить его что-либо сделать. – Scott

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