如何通过在Matlab中猜测一个值来实现这个迭代/收敛步骤?

时间:2011-03-30 05:47:25

标签: algorithm matlab iteration implementation

我有两个参数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 个答案:

答案 0 :(得分: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