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値=dm^ 3 / s * bar
p1供給圧力:MPa
t温度
bdegC-値

亜音速フローコードを書くための最良の方法は何ですか?

sqrt(1-(p2+0.1/p1 0.1)-b / 1-b)^2私は最初と最後に、私が問題を抱えているのだと理解しました。

4

1 に答える 1

1

あなたが抱えている問題が何であるかを理解するのは少し難しいです。平方根と累乗を行うために必要な構文ですか?

平方根:乗数sqrtf(float)
: powf(float, float)- 2 番目の浮動小数点数は、最初の浮動小数点数を上げたい乗数です。

2 の累乗を少し簡単に (おそらく読みやすく) するには、最初に中間値を計算してから、それ自体を乗算します。

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 に答える