2012-02-26 6 views
-2

Qt로 응용 프로그램을 플로팅하는 함수 그래프를 작성하고 있습니다. 그리고 함수의 도메인을 결정하는 알고리즘이 필요합니다. 여기수학 함수 도메인을 결정하는 방법?

이 부분은 내가

QPainterPath p(QPointF(-m_w/2,f(-m_w/2))); 
m_painter->setPen(m_functionPen); 
for(double x=-m_w/2, y; x<m_w/2; x++) 
{ 
    y = f(x/100); 
    p.lineTo(x,y*100); 
} 
m_painter->drawPath(p); 

은 내가 도메인을 찾으면 내가 귀찮게하지 않습니다

+1

[Mathematics] (http://math.stackexchange.com/)에 대한 질문과 같습니다. –

+1

성취하고자하는 것과 시도한 것에 대해 더 자세하게 설명해 줄 수 있습니까? – Nope

답변

3

플로팅 소프트웨어 일반적으로 그것의 그림에서 progrma을 중지 할 것이라고 생각 함수의 그래프를 그릴 수 있었다한다 상기 도메인을 결정하는 단계; 보이는 위치에서 함수를 평가하고 결과가 "undefined"/ "NaN"/ etc 인 경우 모든 행을 그립니다. 여기에 건너 뛰는 그렇게 수정 코드입니다 (테스트되지 않은, 그리고 내가 참을 수 없기 때문에 나는 당신의 중괄호 스타일과 일치하지 않습니다) :

QPainterPath p(); 
double previousY = 1/0 /* NaN */; 
m_painter->setPen(m_functionPen); 
for(double x=-m_w/2, y; x<m_w/2; x++) { 
    y = f(x/100); 
    if (y == y /* not-NaN test */) { 
     if (previousY == previousY) { 
      p.lineTo(x,y*100); 
     } else { 
      p.moveTo(x,y*100); 
     } 
    } 
    previousY = y; 
} 
m_painter->drawPath(p); 

(나는 QPainterPath p() 빈 경로를 구성합니다 있으리라 믿고있어. 나는 당신이 사용하고있는 라이브러리에 익숙하지 않다.) 이제 코딩의 단순화를 위해 다른 점과 같은 첫 번째 점을 다루는 것에 주목하자.

(이 전략은 f(x) = 1/(x + 0.00005)과 같은 함수를 평가하는 경우 올바른 그래프를 생성하지 않습니다. 정의되지 않은 점은 건너 뛰고 세로선이 생기므로이 전략은 간단하지 않습니다. 문제.) 한편


, 당신이 다음 도메인 을 결정 그래프에 대한 합리적인 경계 (당신의 m_w 변수)을 찾기 위해 노력하는 경우는 문제입니다. 이 경우, 귀하는 어떤 종류의 기능을 보유하고 있으며 어떻게 표현되어 있는지에 따라 다릅니다.

+0

Kevin이 옳습니다. 도메인을 계산하기가 어려울 것입니다. 따라서 가시 도메인에 대한 함수를 계산하십시오 – Fuzz

+0

하지만 가능한 모든 값을 계산할 수는 없습니다 R –

+0

NaN을 C++로 작성하는 방법 –