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이 작동하지 않는 이유는 무엇입니까?
체크 진정한 값에 대한
round
및 테스트와 루프 증가를 해결할 수 : http://stackoverflow.com/questions/8959452/matlab-double-comparison – zinjaai