Как решить уравнения n-й степени в PHP
Пример:
1 / (1 + I) + 1 / (1 + I)2+…1 / (1 + I)N= к
В то время как k является константой, я хотел бы найти значение i.
Как я могу добиться этого в PHP?
Прежде всего, ваше выражение слева представляет собой геометрическую сумму, поэтому вы можете переписать ее как (используя 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
Теперь из исходного выражения известно, что левая часть в виде суммы выпуклых монотонно убывающих функций одинаково одинакова, поэтому любой из вариантов деления пополам, Regula 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
,
Попробуйте что-то вроде этого ….
$n = 5;
$i = 2;
$k = null;
for ($x = 1; $x <= $n; $x++) {
$k += 1 / pow((1 + $i), $x);
}
echo $k; //Answer --> 0.49794238683128