- Get link
- X
- Other Apps
FUNCTION CalculateCurveSimilarity(f, g, x_min, x_max, N, k):
// Step 1: Define Evaluation Domain and Discretize
step_size = (x_max - x_min) / (N - 1)
CREATE x_values of size N
CREATE y1_raw of size N
CREATE y2_raw of size N
FOR i FROM 0 TO N - 1:
x_values[i] = x_min + (i * step_size)
y1_raw[i] = f(x_values[i])
y2_raw[i] = g(x_values[i])
END FOR
// Step 2: Evaluate and Normalize Outputs
global_min = MIN(MIN(y1_raw), MIN(y2_raw))
global_max = MAX(MAX(y1_raw), MAX(y2_raw))
value_range = global_max - global_min
IF value_range == 0 THEN value_range = 1 // Prevent division by zero
CREATE y1_norm of size N
CREATE y2_norm of size N
FOR i FROM 0 TO N - 1:
y1_norm[i] = (y1_raw[i] - global_min) / value_range
y2_norm[i] = (y2_raw[i] - global_min) / value_range
END FOR
// Step 3: Calculate Error Metric (RMSE)
sum_squared_diff = 0
FOR i FROM 0 TO N - 1:
diff = y1_norm[i] - y2_norm[i]
sum_squared_diff = sum_squared_diff + (diff ^ 2)
END FOR
rmse = SQRT(sum_squared_diff / N)
// Step 4: Convert Error to Similarity Percentage
similarity_percentage = 100 * EXP(-k * rmse)
RETURN similarity_percentage
END FUNCTION

Comments