Resumen: Entrega nº54 del curso Bases de la programación Nivel II.
Codificación aprenderaprogramar.com: CU00255A

 

 

EJERCICIO MÉTODO DE NEWTON

Realizar un programa que simule el método de Newton para determinar el valor que hace cero una función. Utilizar la función f(x) = x3 – 5x2 + x

Anagrama aprenderaprogramar.com

 

 

SOLUCIÓN

 

1. Objetivos:

Determinar el valor x que haga una función f(x) » 0.

 

2. Condicionantes:

Dado que es un proceso iterativo se debe establecer una condición de salida razonable teniendo en cuenta que a través de tanteos es muy difícil obtener soluciones exactas. La condición de salida será: |f(x)| <= e.

El método requiere el uso de la derivada de la función, por lo que hemos de limitarnos a funciones de derivada conocida.

Para evitar que circunstancias especiales den lugar a bloqueos, se limitará el número máximo de iteraciones.

 

3. Método o esquema de resolución:

El planteamiento gráfico es el siguiente:

 

metodo de newton

 

 

A partir de un punto de tanteo, xk, se calcula su imagen f(xk) y la imagen de la derivada f'(xk). es la pendiente de la recta tangente a la función en el punto xk. Usando la ecuación de la recta y = mx + b tenemos:

f(xk) = f'(xk) · x+ b   -->  b = f(xk) - f'(xk) · xk

 

 

El punto xk+1 corresponde al valor de x para el que la ecuación de la recta vale cero:

0 = f(xk ) · xk+1 + b

 

Despejando xk+1 obtenemos:

ejercicio metodo de newton

 

 

En definitiva, a partir de un punto inicial se itera escogiendo los puntos en que la recta tangente corta al eje de abscisas hasta alcanzar un valor aproximadamente cero.

Algunos casos especiales serían:

· No existe punto de corte para el punto inicial elegido (f´(xk) = 0).

 

maximo de una funcion

 

 

· Dinámica circular con xk = xk+2 = xk+4 = ... y xk+1 = xk +3 = xk+5 = ...

 

solucion tanteo metodo de newton

 

 

4. Datos de partida:

f(xk), función.

f´(xk), derivada de la función.

e , desviación de cero admisible.

xk, punto inicial para tanteo.

 

 

5. Resultados a obtener:

Valor de x que hace f(x) = 0, con un número de iteraciones limitado. Si se supera el número de iteraciones permitidas se muestra un mensaje y se da opción a elegir otro punto de partida. Si la derivada es cero o próxima a cero se abortará el cálculo dando opción a introducir otro punto de partida.

 

Pseudocódigo:

PROGRAMA NEWTON [Pseudocódigo aprenderaprogramar.com]

Variables

Enteras: E

Reales: Origen, Valorfx, valderfx

1. Inicio

2. Mientras E <> 2 Hacer

Mostrar “1. Calcular 2. Salir”

Pedir E

Si E = 1 Entonces

Mostrar “Introduzca x de partida”

Pedir Origen

Llamar Calcular(Origen) PorValor

FinSi

Repetir

3. Fin

 

Módulo Calcular(xk: Reales)

Variables

Enteras: N, Nmax

Reales: e

1. Mostrar “Indique el nº máximo de iteraciones”

2. Pedir Nmax

3. Hacer

Mostrar “Indique el valor de e:”

Pedir e

Si e > 0,5 ó e <= 0 Entonces

Mostrar “Por favor introduzca e mayor que 0 y menor de 0,5”

FinSi

Repetir Mientras e > 0,5 ó e <= 0

4. Hacer

N = N + 1

Si N >= Nmax Entonces

Mostrar “Alcanzado el número máximo de iteraciones”

FinSi

Llamar Fdex(xk) PorValor

Si ABS(Valorfx) > e Entonces

Llamar Dfx(xk) PorValor

Si ABS(valderfx) > e Entonces

xk = xk – Valorfx /valderfx

SiNo

Mostrar “Debe elegir otro punto de partida”

FinSi

SiNo

Mostrar “La solución es x=”, xk, “con valor f(x) =”, Valorfx, “y un total de”, N, “iteraciones”

FinSi

Repetir Mientras ABS(Valorfx) > e y ABS(valderfx) > e y N < Nmax

FinMódulo

 

Módulo Fdex(x: Reales)

Valorfx = x ^ 3 – 5 * x ^ 2 + x

FinMódulo

 

Módulo Dfx(z: Reales)

valderfx = 3 * z ^ 2 – 10 * z + 1

FinMódulo

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

Descargar archivo: