아닌 I가 수행값 소자 장착 동일한
T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);
얻었다 :
T =
0.2989 0.5870 0.1140
0.5959 -0.2744 -0.3216
0.2115 -0.5229 0.3114
제가 수득
T(1,1)==0.2989
한다면
ans =
0
은 다른 요소와 동일합니다. 이것은 왜?
아닌 I가 수행값 소자 장착 동일한
T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);
얻었다 :
T =
0.2989 0.5870 0.1140
0.5959 -0.2744 -0.3216
0.2115 -0.5229 0.3114
제가 수득
T(1,1)==0.2989
한다면
ans =
0
은 다른 요소와 동일합니다. 이것은 왜?
을 동일하지 때문입니다. 그것의 단지 디스플레이 유물.
fprintf('%.8f\n', T(1,1))
당신에게
0.29893602
MATLAB은 일반적으로 보는 것보다 많은 자릿수를 저장합니다. 0.2989는 실제로 0.298936021293776입니다 (심지어 스토리의 끝이 아닙니다).
T(1,1) == 0.298936021293776
ans =
0
그래서
T(1,1) - 0.298936021293776
당신은 단지 모든 숫자가 표시되지 않습니다 시도 코드를 시도하고 여전히
format long
T(1,1)
하지만를 추가 . T(1,1)
이 있어야합니다.
정확히 같은지 부동 소수점 수를 테스트하는 것은 위험합니다. 기본적으로 MATLAB은 64 비트를 사용하여 부동 소수점 값을 저장하며 0.1
과 같은 일부 값은 임의의 비트 수로도 정확하게 표현할 수 없습니다. T(1,1)
은 정밀도가 더 높은 값을 인쇄 할 때 볼 수있는, 정확히 0.2989
되지 않습니다 :
>> T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703])
T =
0.2989 0.5870 0.1140
0.5959 -0.2744 -0.3216
0.2115 -0.5229 0.3114
>> fprintf('%1.10f\n', T(1,1))
0.2989360213
이 왜 T(1,1) == 0.2989
false를 반환합니다. 두 개의 부동 소수점 값이 허용 오차 값 tol
에 관해서 즉, 거의 같은지 여부를 테스트하는 것이 안전하다 :
>> tol = 1/1000;
>> abs(T(1,1) - 0.2989) < tol
ans =
1
다음
무언가 당신은 아마 읽어야 click
어떻게 모든 자리는 볼 수 있습니다을 줄 것이다 ?? :이보고 – volperossa
나는 정말로 모른다. 하지만 왜 모든 자릿수를보고 싶습니까? 평등을 확인하려면 두 숫자가 서로 어느 정도 허용 오차를 초과하는지 확인하십시오. –
호출 inv 함수없이 동일한 동작을 복제해야합니다. 그래서 제품에서 사용할 숫자가 필요합니다 ... fprintf ('%. 55f \ n', T (1,1)) XD로 해결합니다. – volperossa