Suppose I have a system with several variables a, b, c, d, and x. I am trying to solve for the unknown x. I don't know exactly which of those variables x is dependent on, or exactly how the function works, but I know that it is dependent on some combination of some of those variables. To help me determine the function, I have a few data points where I know what the value of x should be, e.g.:
- If a = 2, b = 1, c = 4, and d = 3, then x = 8
- If a = 1, b = 2, c = 3, and d = 4, then x = 14
- If a = 3, b = 4, c = 2, and d = 1, then x = -3
In this case, one possible function that satisfies the requirements would be x = (d^2) - b. Note that this function completely ignores variables a and c. That's fine: maybe a and c are extraneous to the function. What I'm looking for is a program where I can plug in those variables along with the data points I know to be correct, and have it churn through the myriad possible functions that combine them variables until it finds a function that satisfies all the data points.
Now I realize that in theory, the number of possible functions that the program would have to check is probably unlimited. But with a few default constraints I believe the total search space wouldn't be that big. For example, for my particular problem I could eliminate anything more complex that quadratic (variable ^ 2), or more generally, I could eliminate any function where a variable is used more than twice. (And I strongly suspect that my particular problem has a linear solution.)
This sounds a little bit like curve-plot-fitting, which apparently can be done in programs like Matlab, but all the examples I've seen of that technique show a 2D (x and y) graph, whereas I need something more general and flexible, supporting more than 2 variables. Does anyone know of such a program? And I'm a programmer myself, so if you know of a general algorithm, I might be able to implement it.
(Note: I'm just guessing at the category tags for this question; my math knowledge is limited to high-school calculus.)