Java 如何在android中求解线性方程?
我想知道如何用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
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的引用,并提供更多的上下文。我希望这个问题能重新开始,并用下面的评论来回答。