如何解决PHP中的n次方程式
示例:
1 /(1 + I)+ 1 /(1 + I) 2 + ... 1 /(1 + I)名词 = K
虽然k是常数,但我想找到i的值。
如何在PHP中实现这一目标?
答案 0 :(得分:2)
首先,左边的表达式是几何总和,因此您可以将其重写为(使用x=1+i
)
1/x*(1+...+1/x^(n-1)) = 1/x * (1-1/x^n)/(1-1/x) = (1-x^(-n))/(x-1)
因此等式可以改写为
(1 - pow( 1+i, -n))/i = k
现在从原始表达式中我知道左侧作为凸单调递减函数的总和同样如此,因此任何二分法,正则falsi变量或割线方法都能很好地工作。
使用
(1+i)^(-n)=1 - n*i + (n*(n+1))/2*i^2 +...
得到近似方程和第一近似值
1-(n+1)/2*i = k/n <=> i = (1-k/n)*2/(n+1)
这样您就可以从0
到i
的两倍间隔开始包围方法。
答案 1 :(得分:1)
尝试这样的事情......
$n = 5;
$i = 2;
$k = null;
for ($x = 1; $x <= $n; $x++) {
$k += 1 / pow((1 + $i), $x);
}
echo $k; //Answer --> 0.49794238683128