aspose file tools*
The moose likes Beginning Java and the fly likes Finding formula? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of JavaScript Promises Essentials this week in the JavaScript forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Finding formula?" Watch "Finding formula?" New topic
Author

Finding formula?

Abu Nene
Ranch Hand

Joined: Nov 13, 2008
Posts: 56
Hi guys, in the Java application that I'm working with, I need to create a method which takes in 3 int parameters, calculate and return a int. Problem is I need to find out the formula. I've some input data and return result data as follows:

calculate(3, 4, 4) return 0
calculate(1, 5, 5) return 0
calculate(2, 4, 2) return -2
calculate(0, 5, 3) return -2
calculate(4, 6, 4) return -2
calculate(0, 3, 5) return 1

Any idea what is the best way to find out the formula? Do pardon me if this sound more like a math problem rather then Java. Please advise thanks.
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42583
    
  65
There's an unlimited number of formulas that produce this output given those inputs. Without more information on how inputs and outputs relate to one another this can't be solved.


Ping & DNS - my free Android networking tools app
Wouter Oet
Saloon Keeper

Joined: Oct 25, 2008
Posts: 2700

I would contact the author because there are a million and one solutions. Are you sure that you don't have the necessary code/documentation?
Another option would be decompiling with javap -c className


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.
bhaskar ramachandra reddy
Greenhorn

Joined: Aug 20, 2007
Posts: 2
You need to tell what logic/algorithm, you want to calculate in the method..


Mistakes makes human being better..
Abu Nene
Ranch Hand

Joined: Nov 13, 2008
Posts: 56
The logic have not been created. How I get the data currently is getting the 3rd parameter minus the 2nd parameter but it'll not satisfy "calculate(0, 3, 5) return 1".

The logic is a mathematical formula which satisfy the all given inputs together with the output. Is there something like a reserve math or something?
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42583
    
  65
Ulf Dittmer wrote:There's an unlimited number of formulas that produce this output given those inputs.


If the choice of mathematical operators in the formula isn't limited (to, say, basic arithmetic), then there simply is no single solution.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14337
    
  22

This might be a bit silly, but here's a solution:

If this is the only information you've got, you're never going to find a good solution. Suppose you put in three other numbers, then how are you ever going to know what the correct answer is? It's impossible.

Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18962
    
  40


In the field of statistics, I believe this is done via regression analysis -- although admittedly, it is done as "best fit", and not exact. In the field of graphics, there is "curve fitting", which may be able to be applied.

Maybe a google of "regression analysis" and / or "curve fitting" can get you started.

Henry


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

I used a partial differential equation and it seems to work.
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

A lookup table would work too!


[Jess in Action][AskingGoodQuestions]
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11471
    
  16

you could define an infinite number of formulas that 'solve' the 6 data points you have. As EFH said, a simple table would work:

if (input = 3,4,4) return 0
else if (input = 1,5,5) return 0
else if (input = 2,4,3) return -2
else if (input = 0,5,3) return -2
else if (input = 4,6,4) return -2
else if (input = 0,3,5) return 1

//at this point, I could add 0 to 10,000 more "else if" lines defining any 3-digit combination I want
//and an optional 'else' line

If you're looking for a mathematical formula, again, you have 6 data points in a 3-d space. If you are not limited to some kind of surface/shape, there are an infinite number of solutions.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19755
    
  20

If you are only using addition and multiplication, and no if-statements, you get a lot of different variables in your function:
3 * a + 4 * b + 4 * c + d == 0 (1)
1 * a + 5 * b + 5 * c + d == 0 (2)
2 * a + 4 * b + 2 * c + d == -2 (3)
0 * a + 5 * b + 3 * c + d == -2 (4)
4 * a + 6 * b + 4 * c + d == -2 (5)
0 * a + 3 * b + 5 * c + d -- 1 (6)

By combining all these you can get the solution for a, b, c and d. For instance, combining (1) and (2):
3 * a + 4 * b + 4 * c + d == 1 * a + 5 * b + 5 * c + d
=== {subtract 1 * a, 4 * b, 4 * c and d on each side}
2 * a == b + c (7)

You can then combine (3) and (7), by replacing the 2 * a with b + c in (3):
b + c + 4 * b + 2 * c + d == -2
===
5 * b + 3 * c + d == -2 (8)


If you have enough statements you can eventually work out the values of a, b, c and d. Note that the more variables you have, the more statements you need. 6 may not be enough for 4 variables.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19755
    
  20

Ok, I've worked it out, and unless I've made a mistake then there are no a, b, c and d that match these equations. Consider:
c == 1 and c == 1/2 so there is contradiction. If the result of (6) was 2 instead of 1 then a == 0, b == -1, c == -1 and d == 0 would be the solution.


Of course this doesn't prevent you using more complex functions like using powers of any of the numbers. All I've shown is that a simple linear function is not possible.
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11471
    
  16

If you're talking about straight algebra, you need one formula per variable, so 6 is more than enough. in fact, here three are too many. Three would do it (the three inputs are the co-efficients of x, y and z in

ax + by + cz = <return value>
Sha Jar
Greenhorn

Joined: Mar 02, 2010
Posts: 23
Abu Nene wrote:find out the formula.


Do you have any idea of what kind of formula we're talking about?

Or to put it differently. What kind of black box is between the 3 input values and the output value? What's the nature of the black box?
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19755
    
  20

fred rosenberger wrote:If you're talking about straight algebra, you need one formula per variable, so 6 is more than enough. in fact, here three are too many. Three would do it (the three inputs are the co-efficients of x, y and z in

ax + by + cz = <return value>

Wouldn't you need 4, with the "+ d" I specified as correction for the return value?
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Finding formula?