2011-03-30 50 views
2

我有兩個參數:fL and fV,T和P的兩種功能。如果我做了一個名爲func(T)功能,只需要T作爲輸入,然後我怎麼去實現這一步在Matlab:如何通過在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

爲了「猜測」P,您可以繼續使用a)有教養的猜測或b)隨機猜測。因此,例如,如果您在日常環境中處理壓力,100kPa將是一個合理的猜測。隨機猜測意味着將P初始化爲在有意義的域上生成的隨機變量。所以在我的例子中,它可能是一個隨機變量,均勻分佈在90kPa110kPa之間。您選擇哪種方法取決於您的具體問題。

可以按如下

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 
編寫你的要求