그래프 데이타상에 Y 위치에 대응하는 X 값 찾기 - C#

Mathematics Algorithm|2024. 6. 19. 11:20
반응형

그래프 데이타에서 특정 Y 값에 대응하는 X 값을 찾을 경우가 있습니다. 

이런경우 X 데이타 배열에서 설정된 X 과 같은값을 찾아서 대응하는 Y 값을 리턴하면 되지만 X값이 데이타 배열상의 값과 일치하지 않고 중간값에 해당하는 값일 경우가 있습니다. 

 

이때 이 Y 값에 대응하는 X값을 찾는 알고리즘입니다. 

알고리즘은 Y에 대응하는 가장 근사값을 먼저찾고 (Y1) 그 다음값(Y2)를 이용하여 X1, X2를 찾습니다. 이렇게 찾은 두점에 대한 직선의 방적식을 계산한 후 그 직선의 방정식에서 설정한 Y 값을 대입하여 X값을 찾는 방식입니다. 

public static double Ratio_Method_Value(in double[] xArray, in double[] yArray, double yValue)
{
    /************************************************************************
    function : y 값에 대응해는 x 값을 찾는 함수 
    param-1 : x 축의 배열 데이타 
    param-2 : y 축의 배열 데이타 
    param-3 : 설정 y 값 
    ************************************************************************/
    double xValue = 0;

    if (yValue > yArray.Min() && yValue < yArray.Max())    
    {
        for (int i = 0; i < yArray.Length - 1; i++)
        {
            if ((yValue >= yArray[i] && yValue <= yArray[i + 1]) || (yValue <= yArray[i] && yValue >= yArray[i + 1]))
            {
                double x1 = xArray[i];
                double x2 = xArray[i + 1];
                double y1 = yArray[i];
                double y2 = yArray[i + 1];

                xValue = x1 + (x2 - x1) * (yValue - y1) / (y2 - y1);
                break;
            }
        }
    }

    return xValue;
}
반응형

댓글()