2014-09-17 7 views
0

MATLAB에서 오일러 근사 함수를 생성하려고합니다. 나는 t = 0.1, 0.2, 0.3, 0.4에서 평가할 예정이지만, 어떤 이유로 내 코드는 0.3으로 평가되지 않습니다.if 문이 MATLAB에서 작동하지 않습니다.

다음
clear; clc; 
stepSizes = [0.1 0.05 0.025]; 
tInitial = 0; 
yInitial = 1; 
t = tInitial; 
y = yInitial; 

for step = 1:3 
    stepSize = stepSizes(step); 
    for tVal = 0:stepSize:0.4; 
     slope = 3+t-y; 
     yVal = y + slope*(tVal-t); 
     fprintf('%0.3f\n',tVal); 
     if tVal==0.1 || tVal==0.2 || tVal==0.3 || tVal==0.4 
      fprintf('Stepsize: %0.3f, tVal = %0.3f, yVal = %0.3f.\n',... 
       stepSize, tVal, yVal); 
     end 
     t = tVal; 
     y = yVal; 
    end 
end 

내 문제를 보여 내 인쇄 출력의 일부입니다 :

여기 내 코드입니다. 모든 값은 수동으로 수행하는 동안 얻은 응답과 일치합니다.

0.000 
0.100 
Stepsize: 0.100, tVal = 0.100, yVal = 1.200. 
0.200 
Stepsize: 0.100, tVal = 0.200, yVal = 1.390. 
0.300 
0.400 
Stepsize: 0.100, tVal = 0.400, yVal = 1.744. 

논리가 tVal == 0.3이 작동하지 않는 이유는 무엇입니까?

+0

체크 진정한 값에 대한 round 및 테스트와 루프 증가를 해결할 수 : http://stackoverflow.com/questions/8959452/matlab-double-comparison – zinjaai

답변

0

당신은 여기뿐만 아니라

for tVal = round((0:stepSize:0.4)*1000)/1000 
    if tVal==0.1 || tVal==0.2 || tVal==0.3 || tVal==0.4 
관련 문제