0

我正在尝试制作一个使用这 3 个公式的 iPhone 流量计算器。

压力比b

b = p2 + 0.1 / p1 + 0.1

C 值和 B 值的编号取决于阀门。请参阅此 pdf 的第 6 页http://content2.smcetech.com/pdf/SY.New.pdf

Q 声波流

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

这是我的工作代码。

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= 流量 l/min
C= dm^3/s * bar
p1= 供给压力:MPa
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= 流量 l/min
C-value = dm^3/s * bar
p1供应压力:MPa
t温度 deg C
b-Value

编写亚音速流代码的最佳方法是什么?

我从头到尾都发现这是sqrt(1-(p2+0.1/p1 0.1)-b / 1-b)^2我遇到的问题。

4

1 回答 1

1

很难看出你遇到了什么问题。它是做平方根和幂所需的语法吗?

平方根: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可能不是理想的变量名,但你明白了。

于 2011-11-23T10:08:27.663 回答