Как реализовать этот шаг итерации / сходимости, угадав значение в Matlab? - PullRequest
2 голосов
/ 30 марта 2011

У меня есть два параметра fL and fV, обе являются функциями T и P. Если я создаю функцию с именем func(T), которая принимает на вход только T, то как мне реализовать этот шаг в Matlab:

Guess P

if |(fL/fV)-1|<0.0001 % where fL and fV are both functions of T and P

then print P

else P=P*(fL/fV)

Первоначально рекомендуется угадать P в начале алгоритма.Все остальные шаги до этого включают вычисление формулы и не включают в себя сходство, поэтому я не написал все эти формулы.Важно отметить, что, хотя мы принимаем только T в качестве входных данных для нашей функции, давление определяется в начале кода и не является частью какого-либо ввода пользователем.Спасибо!

1 Ответ

1 голос
/ 30 марта 2011

Чтобы «угадать» P, вы можете либо использовать а) обоснованное предположение, либо б) случайное предположение.Так, например, если вы имели дело с давлением в повседневной обстановке, 100kPa было бы разумным предположением.Случайное предположение означало бы инициализацию P случайной переменной, сгенерированной в значимой области.Так что в моем примере это может быть случайная величина, равномерно распределенная между 90kPa и 110kPa.Какой из этих подходов вы выберете, зависит от вашей конкретной проблемы.

Вы можете написать свои требования следующим образом:

minP=90;maxP=110;
P=minP+(maxP-minP)*rand;%# a random guess between 90 & 100 

<some code here where you calculate fL and fV

if abs(fL/fV-1)<0.0001
    fprintf('%f',P)
else
    P=P*fL/fV;
end 
...