62,615
社区成员
发帖
与我相关
我的任务
分享
//變數不能用 e 會當成自然指數
Expression exp1 = ExpressionFactory.createExpression("f(a,b,c,d,g,f)=(a+b)*f/g+c*d");
double val = 10;// (a+b)*f/g+c*d = 10 其中 f 是未知。
Parameters params1 = ExpressionFactory.createParameters();
MathematicalElement m1a = NumberFactory.createReal(1);
MathematicalElement m1b = NumberFactory.createReal(2);
MathematicalElement m1c = NumberFactory.createReal(3);
MathematicalElement m1d = NumberFactory.createReal(4);
MathematicalElement m1e = NumberFactory.createReal(2);
params1.addParameter("a",m1a);
params1.addParameter("b",m1b);
params1.addParameter("c",m1c);
params1.addParameter("d",m1d);
params1.addParameter("g",m1e);
MathematicalElement m1f = NumberFactory.createReal(1); //f帶一次 1
params1.addParameter("f",m1f);
double x1 = exp1.evaluate(params1).getRealValue();
m1f = NumberFactory.createReal(2); //再帶一次 2
params1.addParameter("f",m1f);
double x2 = exp1.evaluate(params1).getRealValue();
double a = x2-x1;
double b = x1-a;
double x = (val - b)/a; //把 10 帶入
System.out.println("等於 f(x)="+a+"x+"+b); //最後算出會等於10的 f
System.out.println("未知的f="+x); //最後算出會等於10的 f
m1f = NumberFactory.createReal(x); //再帶一次 2
params1.addParameter("f",m1f);
System.out.println("驗證:"+ exp1.evaluate(params1).getRealValue()+" = "+ val);