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

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

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

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

 

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

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

public double Ratio_Method_Value(double[] XValues, double[] YValues, int Length, double XValue)
{
	double yValue = 0 ;
	double? x1 = y1 = x2 = y2 = null ;
	int index = 0 ;
	
	foreach(var vx in XValues)
	{
		if(vx >= XValue) break ;
		index ++ ;
	}
	
	if(index < Length-2)
	{
		x1 = XValues[index] ;
		x2 = XValues[index + 1] ;
		y1 = YValues[index] ;
		y2 = yValues[index + 1] ;		
		
		var (slope, yIntercept) = GetLineEquation(x1, y1, x2, y2);	
		yValue = (slope * XValue) + yIntercept ;
	}	
	
	return yValue;
}

public static (double slope, double yIntercept) GetLineEquation(double x1, double y1, double x2, double y2)
{
    double slope = (y2 - y1) / (x2 - x1);
    double yIntercept = y1 - slope * x1;
	
    return (slope, yIntercept);
}
반응형

댓글()