以下は、レイノルズ数が 249 で、2 刻みで 0.1 から 2 の間の波数 (アルファ) に対して実行したい場合に、関数 oscalcpcf を使用して、波速度 (c) の虚数部を生成する私の MATLAB コードです。
c1holder = [];
c2holder = [];
reyholder = [];
alphaholder = [];
wantedrey = [];
wantedalpha = [];
for Rey = 249
for alpha = 0.1:0.1:2
c1=oscalcpcf(Rey,alpha,100);
c2=oscalcpcf(Rey,alpha,200);
c1holder = [c1holder c1];
c2holder = [c2holder c2];
reyholder = [reyholder Rey];
alphaholder = [alphaholder alpha];
end
end
vectors = [c1holder' c2holder' reyholder' alphaholder'];
私の意見では、上記のコードはまったく難しくありませんが、私のラップトップはレイノルズ数とアルファのいくつかのペアで不機嫌になりました。それらの1つに名前を付けるだけでReynolds number = 249
、alpha = 0.3
.
上記のコードを実行すると、 と が得られc1 = 6.06002472332094E-08
ますc2 = 0.0000010870344982811
。
ここで問題です。から2
まで0.1
のステップを実行すると-0.1
、 と が得られc1 = -0.337584041016646
ますc2 = 0.0000364854401656638
。
AND を使用して手動でチェックした場合oscalcpcf
、つまりoscalcpcf(249,0.3,100)
andoscalcpcf(249,0.3,200)
を取得するc1 = -0.337583911335139
と、 and が得られc2 = -0.337577395716528
ます。
ここで何が起こっているのか本当にわかりません。誰か助けてください!
編集
alpha: 2.000000000000000000000000000000
alpha: 1.899999999999999900000000000000
alpha: 1.800000000000000000000000000000
alpha: 1.700000000000000000000000000000
alpha: 1.600000000000000100000000000000
alpha: 1.500000000000000000000000000000
alpha: 1.399999999999999900000000000000
alpha: 1.299999999999999800000000000000
alpha: 1.200000000000000000000000000000
alpha: 1.100000000000000100000000000000
alpha: 1.000000000000000000000000000000
alpha: 0.899999999999999910000000000000
alpha: 0.799999999999999820000000000000
alpha: 0.699999999999999960000000000000
alpha: 0.599999999999999870000000000000
alpha: 0.500000000000000000000000000000
alpha: 0.399999999999999910000000000000
alpha: 0.299999999999999820000000000000
alpha: 0.199999999999999960000000000000
alpha: 0.099999999999999867000000000000
そして0.1
、2
alpha: 0.100000000000000010000000000000
alpha: 0.200000000000000010000000000000
alpha: 0.300000000000000040000000000000
alpha: 0.400000000000000020000000000000
alpha: 0.500000000000000000000000000000
alpha: 0.599999999999999980000000000000
alpha: 0.700000000000000070000000000000
alpha: 0.800000000000000040000000000000
alpha: 0.900000000000000020000000000000
alpha: 1.000000000000000000000000000000
alpha: 1.100000000000000100000000000000
alpha: 1.200000000000000200000000000000
alpha: 1.300000000000000300000000000000
alpha: 1.400000000000000100000000000000
alpha: 1.500000000000000200000000000000
alpha: 1.600000000000000100000000000000
alpha: 1.700000000000000200000000000000
alpha: 1.800000000000000300000000000000
alpha: 1.900000000000000100000000000000
alpha: 2.000000000000000000000000000000
OMG、なぜ私のコンピューターは、0.1
私がそうするように指示したときに正確なステップを示さないのですか. この関数oscalcpcf
は の小さな変化に非常に敏感でalpha
あり、スクリプトで使用するこれらの値を確認すると、 で手動で行うと一致しoscalcpcf
ます。私のコンピュータが の正確なステップを表示する方法を教えていただけます0.1
か? ありがとうございました。