我想知道如何在android中解决方程式
我的等式如下: -
SV = A*((1-R)^N) * (1-(R*(M/12)))
其中SV是某个值,
A是金额,
R是Rate,
N是年,
M是几个月。
我想找到 R
我不知道如何在编码中执行此操作 如果还需要任何其他 lib 文件,请与我们联系。
答案 0 :(得分:1)
我尝试简化上述内容并达到了这一点,
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上的所有值都是已知的,可以替换。希望这可以帮助。我也热衷于输出。
答案 1 :(得分:0)
通过除以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;
}