La idea básica con el método de Newton-Raphson es que comience con una aproximación razonablemente buena de la raíz deseada de cualquier función de la que estemos hablando (en este caso, [matemáticas] f (x) = x ^ 2 – n [/ matemática] si [matemática] \ sqrt {n} [/ matemática] es lo que estamos buscando) y utiliza la aproximación lineal de la función (es decir, la línea tangente) en ese valor de [matemática] x [/ matemática] para encontrar un mejor aproximación; luego repita según sea necesario. Mientras su primera aproximación esté lo suficientemente cerca, la raíz de la aproximación lineal (es decir, la intercepción [matemática] x [/ matemática] de la línea tangente) estará aún más cerca de la raíz real de [matemática] f (x) [/ math], así que esa será tu próxima aproximación.
Es bastante fácil encontrar el número entero más cercano a la raíz cuadrada deseada, y eso debería estar lo suficientemente cerca. Por ejemplo, si está buscando [math] \ sqrt {35} [/ math], es razonable comenzar con [math] x_0 = 6 [/ math] desde [math] 36 [/ math], es decir, [math ] 6 ^ 2 [/ math], es el número cuadrado más cercano a 35. Si está buscando algo como [math] \ sqrt {123,456,789} [/ math] (¡y no hacer trampa!) Puede generar cuadrados bastante rápido al Agregar números impares sucesivos (por ejemplo,
[matemáticas] 1 = 1 ^ 2 [/ matemáticas]
suma 3: [matemática] 4 = 2 ^ 2 [/ matemática]
suma 5: [matemáticas] 9 = 3 ^ 2 [/ matemáticas]
agregue 7: [matemáticas] 16 = 4 ^ 2 [/ matemáticas]
y así…)
hasta que encuentre que [matemáticas] 123,454,321 = 11,111 ^ 2 [/ matemáticas] y [matemáticas] 123,476,544 = 11,112 ^ 2 [/ matemáticas]. (Hice trampa.)
- Dado un flujo de alrededor de mil millones de números en una matriz, que tiene aproximadamente solo 1000 números únicos, ¿cómo puedo imprimir los números únicos? La complejidad debe ser menor que O (n).
- ¿Cuál es el programa más simple para encontrar números primos en C ++?
- ¿Cuál es la complejidad de [matemáticas] T (n) = 2T (n-1) + C? [/ Matemáticas]
- ¿Existe una aplicación de Android que toma datos de entrada y genera una ecuación algebraica?
- ¿Cuál es el cálculo más simple para que un número crezca pero a incrementos más pequeños a medida que aumenta?
Volvamos a [math] \ sqrt {35} [/ math] para que no tenga que escribir tanto. Ya hemos determinado que [matemáticas] x_0 = 6 [/ matemáticas] es una buena aproximación inicial. Sabemos por cálculo que [matemáticas] f ‘(6) [/ matemáticas] es la pendiente de la línea que es tangente a la gráfica de [matemáticas] f (x) [/ matemáticas] en el punto [matemáticas] (6, f (6)) [/ math], entonces una ecuación para la aproximación lineal es [math] y – f (6) = f ‘(6) (x – 6) [/ math]. En este caso [matemáticas] f (x) = x ^ 2 – 35 [/ matemáticas] y, por lo tanto, [matemáticas] f ‘(x) = 2x [/ matemáticas]; entonces usamos la ecuación [matemática] y – 1 = 12 (x – 6) [/ matemática], conectamos 0 para [matemática] y [/ matemática] y [matemática] x_1 [/ matemática] para [matemática] x [ / math] y resuelve [math] x_1 [/ math]. En este caso obtenemos [matemáticas] x_1 = 71/12 [/ matemáticas]. Digamos que aproximamos esto como 5.91666666667. Luego configuramos la ecuación [matemáticas] 0 – (5.91666666667 ^ 2 – 35) = 2 (5.91666666667) (x_2 – 5.91666666667) [/ matemáticas] y resolvemos [matemáticas] x_2 [/ matemáticas]. O realmente, simplemente usamos la fórmula que habría resultado de resolver [matemáticas] 0 – (x_1 ^ 2 – 35) = 2 x_1 (x_2 – x_1) [/ matemáticas] para [matemáticas] x_2 [/ matemáticas]. Repita hasta que sus respuestas sucesivas estén tan juntas que tenga una aproximación que sea tan precisa como desee.