目标C中计算流量计算的正确方法是什么?

问题描述:

我正在试图制作一个使用这3个公式的iPhone流速计算器。目标C中计算流量计算的正确方法是什么?

压力比b

b = p2 + 0.1/p1 + 0.1

的C值和b值是根据阀给出的数字。 参见本PDF http://content2.smcetech.com/pdf/SY.New.pdf

Q音速流动

Q = 600 * C (p1 + 0.1) sqrt(293/(273 + t))

这是我工作的代码第6页。

float pressure1 = ([pressureMPa.text floatValue])+ 0.1; 
float c = 600 * ([cValue.text floatValue]); 
float temperature = ([tempC.text floatValue]); 
float root = sqrtf(293/(273+temperature)); 
float sonicFlow = c * pressure1 * root; 

Q =流量升/分钟
C =分米立方公尺/ s *酒吧
p1 =供应压力:兆帕
t =温度摄氏度

Q亚音速流

Q = 600 * C (p1 + 0.1)* sqrt(1-(p2+0.1/p1 +0.1 - b/1-b)^2) * sqrt(293/(273 + t))

Q =流量升/分钟
C - 值=分米立方公尺/ s *酒吧
p1供应压力:兆帕
t温度摄氏度
b -Value

什么是写的最佳方式亚音速流码?

我有开始和结束的想法是sqrt(1-(p2+0.1/p1 0.1)-b/1-b)^2我遇到了问题。

+2

听起来像你知道如何取一个平方根,所以我想你可以找到如何做一个权力2,所以我不明白是什么问题。您不必一行一行计算,只需使用多个步骤和中间结果即可。 – Warkst

看到你遇到的问题有点难。这是做平方根和权力所需的语法吗?

平方根:sqrtf(float)
电源:powf(float, float) - 第二浮动是要提高第一浮到电源。

的稍微容易功率的二(也许更易于阅读)就是首先计算中间值,然后通过自身相乘:

valueA * valueA

还有,记得要小心问候在C中的运算符优先级。在加法和减法之前评估乘法,除法和模数。请确保将内容放在括号中,或者更好 - 正如@Warkst在您的文章中所建议的 - 通过多个步骤进行计算。所以对于位您遇到麻烦:

// sqrt((1-((p2+0.1)/(p1+0.1))-b)/(1-b))^2 
float part1 = (p2 + 0.1)/(p1 + 0.1); 
float part2 = (1 - part1 - b)/(1 - b); 
float part3 = sqrtf(part2); 
float result = part3 * part3; 

part1/2/3也许并不理想变量名,但你的想法。