2017-12-10 17 views
1

아래의 수식을 플로팅 할 때 잘못된 그래프가 표시됩니다. 볼프람 알파와 계산기는 x = 112.77에서 f (x) = 0을 통해 교차점을 봅니다. Gnuplot은 약 115.8 ~ 116에서이를 나타냅니다.Gnuplot이 방정식 그래프를 잘못 표시합니까?

#!/usr/bin/gnuplot 

#Ranges 
set xrange [112:116] 
set yrange [-0.5:0.5] 
set samples 10000 

#Special drawings 
f(x) = (101300-1.225/2*x**2) *0.0167*x /((288.15-1/(2*1005)*x**2)*287)-2.1774 


plot f(x) title "f(v)" with lines ls 1 

pause -1 

누군가가이 문제를 재현하여 도와 줄 수 있습니까? 사전

답변

1

귀하의 함수 정의

f(x) = (101300-1.225/2*x**2) *0.0167*x /((288.15-1/(2*1005)*x**2)*287)-2.1774 

에서

덕분 용어 1/(2*1005)이 포함되어 있습니다. 이 표현식의 모든 숫자는 정수이므로 gnuplot은 1/2010 = 0 인 정수 산술을 사용합니다. 예를 들어

과 같이 예상되는 동작을 얻을 수 있도록 해당 숫자 중 하나 이상을 부동 소수점 숫자로 변환해야합니다
f(x) = (101300-1.225/2*x**2) *0.0167*x /((288.15-1./(2*1005)*x**2)*287)-2.1774 

11.으로 바꾼 점에 유의하십시오. gnuplot에 이것이 부동 소수점 숫자로 처리된다는 것을 알려줍니다. 일반적으로, 정수 연산을 절대적으로 확신하지 않는 한, 모든 상수를 부동 소수점 형으로 쓰는 것이 더 좋습니다.