Java 如何在android中求解线性方程?

Java 如何在android中求解线性方程?,java,math,equation,Java,Math,Equation,我想知道如何用android解方程 我的方程式如下:- SV=A*((1-R)^N)*(1-(R*(M/12)) 其中SV是某个值, A是金额, R是速率, N是年, M是个月 我想找到R 我不知道如何在编码中做到这一点 让我知道是否还需要附加的 LB < /St>文件。 < P>通过除以 A 重新排列公式,然后考虑右侧没有“代码> A。也许R被限制在1和0之间?结果右侧似乎在区间(0,1)的R中单调递减,因此R的期望值可以通过二进制搜索来近似。可以用Java中的以下代码来完成 double R

我想知道如何用android解方程

我的方程式如下:-
SV=A*((1-R)^N)*(1-(R*(M/12))

其中SV是某个值,
A是金额,
R是速率,
N是年,
M是个月

我想找到R

我不知道如何在编码中做到这一点
让我知道是否还需要附加的<强> LB < /St>文件。

< P>通过除以<代码> A <代码>重新排列公式,然后考虑右侧没有“代码> A<代码>。也许
R
被限制在1和0之间?结果右侧似乎在区间(0,1)的
R
中单调递减,因此
R
的期望值可以通过二进制搜索来近似。可以用Java中的以下代码来完成

double R( double SV, double A, double N, double M){
  double DESIRED_ACCURACY = 0.01f; // customize this value
  double targetvalue = SV / A;     // left hand side after rearranging
  double upperbound = 1.0f;        // bounds for binary search
  double lowebound = 0.0f;

  double frac = M / 12.0f;

  while ( upperbound - lowebound > accuracy ){
      double mid = ( upperbound - lowerbound ) / 2.0f;
      double evaluation = Math.Pow( 1.0f - midpoint, N ) * ( 1.0f - midpoint * frac );
      if ( evaluation > targetvalue ){
        upperbound = midpoint;
      } else {
         lowerbound = midpoint;
      }
  }

  return ( upperbound - lowerboud ) / 2.0f;
}

我试着简化上面的内容,我达到了这一点

SV = A * ((1-R)^N) * (1-(R*(M/12)))
SV = A * (1-R)^N * (1-R) * (1-(M/12))

(1-R)^ N+1 = SV/ (A * (1-(M/12))

(1-R) = (N+1) root of (SV/ (A * (1-(M/12)))

R = ((N+1) root of (SV/ (A * (1-(M/12)))) + 1

现在,RHS上的所有值都是已知的,可以替换。希望这有帮助。我也对输出很感兴趣。

我已经用我的方程式更新了我的问题,看一下……因为
N
被用作指数,这有点困难。关于
N
-理想情况下的具体值,是否更为人所知?您希望实现什么?也许可以用一种数学上更简单的方法来完成?N是年,这是用户提供的输入。我只想知道“R”的值,即非常好的比率-然后可以通过
Math.pow(值,(1.0f/(N+1.0f)))计算出
N+1
-次方根
,无需进行二进制搜索。第二步似乎不正确,
1-R(M/12)
不等于
(1-R)*(1-(M/12))
。我同意-我认为代数不正确。这会给出错误的结果,你的代数不正确。请重新表述问题,给出值的域,包括对Java的引用,并提供更多的上下文。我希望这个问题能重新开始,并用下面的评论来回答。