En una aplicación informática, necesito solucionar miles de millones de veces una ecuación que puede ser reducido a $$f(x)=\sin(x)-a x=0$$ Newton methods (quadratic and higher orders) are used for the solution. Parameter $un$ is random and the solution $x$ looked for is the one between $0$ and $\pi$ if it exists. The retained solution is immediate ($x=0$) if $\geq 1$ or $\leq 0$.
Para el resto de casos ($0 \lt a \lt 1$), ya que la necesito para guardar tantas iteraciones como puedo, me centré en cómo establecer una buena y unexpensive aproximación de la solución. Después de algunos experimentos empíricos, lo que he encontrado es que escribir $$\sin(x) \simeq \frac{4}{\pi^2} x(\pi-x)$$ is a quite good approximation if $0 \leq \leq 0.7$ leading to $$x \simeq \pi -\frac{\pi ^2 a}{4}$$
Para el resto de intervalo, usando la aproximación de Pade $$\sin(x) \simeq \frac{x-\frac{7 x^3}{60}}{1+\frac{x^2}{20}}$$ which leads to $$x \simeq \frac{2 \sqrt{15} \sqrt{1-a}}{\sqrt{3 a+7}}$$ parece muy interesante.
Me pregunto si esto podría ser mejorado, el objetivo de ser un simple expresión explícita para la estimación de la solución.
Cualquier idea y/o sugerencia, sería muy bienvenida.
Añadió más tarde
En los comentarios y respuestas, Bhoot me sugirió buscar en la aproximación $$\sin(x) \simeq \frac{16 (\pi -x) x}{5 \pi ^2-4 (\pi -x) x}$$ proposed by Mahabhaskariya of Bhaskara I, a seventh-century Indian mathematician. This spendid approximation leads to $$x \simeq \frac{2 \sqrt{-\pi ^2 a^2+2 \pi a+4}+\pi a-4}{2 a}$$ which is effectively very good except very close to $a=1$. Esto ya se hace una mejora significativa.
Mejora temporal
Muy impresionado por la calidad de la aproximación propuesta por Mahabhaskariya de Bhaskara I (más de 1400 años atrás), traté de entender por qué era muy buena, excepto en las proximidades de $a=1$. Yo sospechaba que la derivada podría estar en un error en los puntos finales. Efectivamente, esta fórmula se obtiene una pendiente igual a $\frac{16}{5\pi} \simeq 1.01859$ en lugar de $1$. Por otro lado, el área bajo la curva está dada por $$A=\pi \left(-4+\pi +\tan ^{-1}\left(\frac{3116}{237}\right)\right) \simeq 1.99955$$ So, modestly, I built an approximation which is $$\sin(x) \simeq \frac{\pi x(\pi-x)}{\pi^2+(\pi-4)x(\pi-x)}$$ which allows to match exactly the function and derivative values at $x=0,\frac{\pi}{2},\pi$; with respect to accuracy, it is not as good as the original showing a maximum error of $0.0052$ instead of $0.0016$. The area under the curve is then given by $$A=\frac{\pi \left(-4 \pi +\pi ^2+4 \sqrt{(4-\pi ) \pi } \bronceado ^{-1}\left(\sqrt{\frac{4}{\pi }-1}\right)\right)}{(\pi -4)^2} \simeq 1.99161$$ muy significativamente peor que el original.
La estimación de la solución está dada por $$x \simeq \frac{\pi \left((\pi -4) a-\sqrt{(\pi -4) a (\pi a-2)+1}+1\right)}{2 (\pi -4) a}$$ lo que hace Newton esquema de convergencia en menos de dos iteraciones para toda la gama.
Añadido después de que Christian la respuesta de Blatter
Yo lo que ha sido amablemente propuesto por Christian Blatter en su respuesta y establecer
$$\tilde f^2(a):={p(a)\over q(a)},\qquad p(a):=c_0+c_1 a+ c_2 a^2,\quad q(a):=1+d_1a +d_2 a^2\ $$ Using nonlinear regression, I adjusted the five involved parameters in order to minimize $$SSQ=\sum_{i=1}^n \Big(\sin(\tilde f(a_i))-a_i \tilde f(a_i)\Big)^2$$ The values of the $a_i$ were generated using $1000$ equally spaced values of the $x_i$ between $0$ and $\pi$. I have not been able to compute formally $$\int_0^1 \Big(\sin(\tilde f(a_i))-a_i \tilde f(a_i)\Big)^2 da$$
Comenzando con los coeficientes dados en Cristiano la respuesta de Blatter, la inicial $SSQ=5.968\times 10^{-5}$ que ya es muy bueno. Llegué a $SSQ= 3.800\times 10^{-6}$. Los parámetros correspondientes son $$c_0=9.86774920$$ $$c_1=4.91765690$$ $$c_2=-14.77935381$$ $$d_1=2.48744104$$ $$d_2=0.63396306$$ For these values, the largest error is $0.000295$ and the average error is $0.000052$ which is incredibly good. As a result, a single Newton iteration is basically required for the desired accuracy. In the following plot the function $\tilde f$ is denoted $g$:
Me gustaría agradecer a todas las personas que contribuyeron a este trabajo. Ustedes han sido de gran ayuda.
Añadió más tarde
Continuar trabajando el problema, me puse $$\tilde f^2(a):={p(a)\over q(a)},\qquad p(a):=\sum_{i=0}^n c_i a^i,\quad q(a):=1+\sum_{i=1}^n d_i a^i\ $$ and played with $n$. The first result is that moving to cubic polynomials changes a lot the result : $SSQ=4.9609379\times 10^{-10}$, maximum error $= 0.000004$, average error $< 0.000001$. Esto significa que una sola iteración de Newton se requiere para una alta precisión. La siega de la cuarta oder da la solución sin ningún tipo de iteración de Newton.