6 votos

¿Cómo utilizar Newton ' método s para encontrar las raíces de un polinomio oscilante?

Use el método de Newton para encontrar las raíces de $32x^6 − 48x^4 + 18x^2 − 1 = 0$ exacta dentro de $10^{-5}$.

El método de Newton requiere la derivada de esta función, que es fácil de encontrar. El problema es que hay varias raíces cerca el uno del otro:

graph

Estas raíces están tan cerca que parecen prevenir el método de Newton funciona correctamente, pero no sé por qué. Cómo modificar el método de modo que aún funciona en este caso? Y cómo el código de este método modificado (en Matlab) para que el algoritmo de encontrar esas raíces de una manera eficiente?

7voto

Halfgaar Puntos 2866

Aquí vamos:

alpha = 0.05;
NM = @(x,f)x-alpha*prod(([1,0]*f([x,1;0,x])).^[1,-1]);
f = @(x)32*x^6-48*x^4+18*x^2-x^0;
x = 0.5;
eps = 1;
while eps > 1e-5
    xn = NM(x,f);
    eps = abs(xn-x);
    x = xn;
end
[x f(x)]

Le advierto a usted que no gire en este código a tu profesor. Probablemente se preguntará cómo funciona.

Que proporcione, de modo que usted puede ver cómo funciona el método. Sin embargo, los mecanismos de cómo este código en particular las obras son un poco complicados y es probable que más allá de su nivel. Usted tendrá que escribir su propia función. Si activa esta en el, y el profesor revisa tu código, te garantizo que va a ser penalizado por plagio.


En un serio intento de respuesta, el código anterior incluye un truco.

Una iteración del método de Newton se parece a esto:

$$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}.$$

However, if we plot our polynomial, we find that it oscillates somewhat like a sine wave centered at $x=0$. This causes a unique behavior of Newton's method: each projection of the slope throws the value to another part of the wave, and you get a "back and forth" action.

In order to accommodate this, we add a scaling parameter, $\alpha$:

$$x_{n+1} = x_n - \alpha\frac{f(x_n)}{f'(x_n)}.$$

Setting this scaling parameter such that $0 < \alfa < 1$ atenúa el efecto de la pendiente. Esto ralentiza la convergencia, pero se asegura de que no proyecto "demasiado lejos" por delante y quedar atrapado en un bucle infinito.

Examinar la diferencia entre alpha = 0.05 y alpha = 1.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X