다음은 Reynolds 수가 249 일 때 함수 oscalcpcf를 사용하여 wavepeed (c)의 허수 부 생성을위한 MATLAB 코드이며 0.1에서 2 단계 사이의 파단 수 (알파)로 실행하고 싶습니다.비논리적 결과가있는 매우 단순한 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'];
위의 코드 2. 내 의견으로는 전혀 어려운 일이 아니다하지만 내 노트북은 레이놀즈 수와 알파의 일부 쌍에 대한 불안했다. 그 중 하나의 이름을 지정하면 Reynolds number = 249
과 alpha = 0.3
입니다.
위의 코드를 실행하면 c1 = 6.06002472332094E-08
과 c2 = 0.0000010870344982811
이 표시됩니다.
이제 문제가 있습니다. 2
에서 0.1
까지 단계를 -0.1
으로 실행하면 c1 = -0.337584041016646
및 c2 = 0.0000364854401656638
이 표시됩니다. 내가 수동으로 oscalcpcf
, 즉 oscalcpcf(249,0.3,100)
및 oscalcpcf(249,0.3,200)
를 사용하여 확인한다면
는 AND, 나는 c1 = -0.337583911335139
및 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
에, 왜 내 컴퓨터는 0.1
의 정확한 단계를 제공하지 않습니다. oscalcpcf
함수는 alpha
의 작은 변경에 매우 민감하며 내 스크립트에서 사용하는이 값을 확인하면 수동으로 oscalcpcf
을 입력하면 일치합니다. 제 컴퓨터가 0.1
의 정확한 단계를 제공 할 수있는 방법을 제안 해 주시겠습니까? 고맙습니다.
'oscalcpcf'가 무엇을하는지 모른 채만 우리는 추측 할 수 있습니다. 함수가 입력에 얼마나 민감한 지에 따라 문제가 정확해질 수 있습니다. 'disp ([ 'alpha :'sprintf ('% .30f', alpha)]);'를 내부 for-loop에 추가하여'alpha '의 실제 값을 확인하십시오. – Deve
사실, 완벽하게 논리적 인 결과입니다. 일단 컴퓨터가 어떻게 산술을하는지 이해하면됩니다. –