Newton Raphson

Páginas: 5 (1076 palabras) Publicado: 24 de septiembre de 2012
i=1
xi = x0
while i <= N
xim1 = g(xi) 'xim1 es x_{i+1}
if |xim1 - xi|< Tol then
'parar
Exit Sub
end if
i=i+1
xi = xim1
wend
En este caso, debemos leer y almacenar la funci¶on g . Entonces, en el c¶odigo, g(xi) =Fun.Eval1(xi)
En este ejemplo vamos a usar
Do while condici¶on
instrucciones
Loop
Si ejecutamos el c¶odigo desde un bot¶on entonces el c¶odigo ser¶³a algo comoPrivate Sub CommandButton1_Click()
Dim x0, tol, xi, xim1, errorEst As Double
Dim N As Integer
Dim OK As Boolean
Dim Fun As New clsMathParser ' as¶³ se llama el m¶odulo de clase aqu¶³
x0 = Cells(7, 3)
N = Cells(7, 2)
tol = Cells(7, 1)
g = Cells(3, 2)
Cells(6, 6) = " " 'limpia mensajes anteriores
OK = Fun.StoreExpression(g) 'formula actual es g
If Not OK Then GoTo Error_Handler
xi = x0
i = 1Do While i <= N
xim1 = Fun.Eval1(xi) 'formula actual es g, ¶esta es la que est¶a evaluando
errorEst = Abs(xim1 - xi)
Cells(6 + i, 4) = xim1
Cells(6 + i, 5) = errorEst
If errorEst < tol Then
Cells(6 + i + 1, 4) = "Ok"
Exit Sub
End If
i = i + 1
xi = xim1
Loop
Cells(6, 6) = " No se tuvo ¶exito" 'si se termin¶o el Do sin ¶exito'---------------------------------------------------------------
If Err Then GoTo Error_Handler
Error_Handler: Cells(1,1)=Fun.ErrorDescription
'---------------------------------------------------------------
End Sub

Método de Newton Raphson Modificado en Matlab
clear;
clc;
fprintf('\n metodo de Newton Rapson Modificado\n\n');
funcion=input('Dame la funcion f(x) :','s');
dfuncion=input('Dame la derivada de funcion f(x) : ','s');
d2funcion=input('Dame la senda derivada de funcion f(x) : ','s');
xi=input('Dame el valor inicial de x : ');
e=input('Dame el porciento del error : ');
ea=1000;
c=1;
x=xi;while ea>e
g=eval(funcion);
h=eval(dfuncion);
k=eval(d2funcion);
j=x-(g*h)/(h^(2)-(g*k));
ea=abs((j-x)/j*100);
x=j;
c=c+1;
end
fprintf('\n\n\n\nLa raiz exacta es: %d',j)
fprintf('\n\nNumero de iteraciones:%d',c);

Note que cuando existe una raíz múltiple (en el caso de x=1), el algoritmo de Newton Raphson modificado, tiene mejor comportamiento, que cuando no es el caso de raíz múltiple (x=3).
Implementación en Java.
/**
* <p>Title: Metodo de Newton Raphson Modificado</p>
* <p>Description: Compara los métodos de Newton</p>
* <p>Copyright: Copyright (c) 2003</p>* <p>Company: UMSH</p>
* @author Dr. Felix Calderon Solorio.
* @version 1.0
*/

public class ej059 {

public static void main(String[] args) {
Newton_Raphson(0, 1e-10);
Newton_Raphson_Modificado(0, 1e-10);
}

public static double Newton_Raphson(double x0, double T)
{
int i =0;
double x = x0;

while(Math.abs(f(x)) > T)
{
System.out.println("Iteracion " + i++ + "" + x + " " + f(x));
x = x - f(x)/df(x);
}
System.out.println("Iteracion " + i++ + " " + x + " " + f(x));
return x;
}

public static double Newton_Raphson_Modificado(double x0, double T)
{
int i =0;
double x = x0;

while(Math.abs(f(x)) > T)
{
System.out.println("Iteracion " + i++ + " " + x + " " + f(x));
x = x - (f(x)*df(x))/(df(x)*df(x) - f(x)*ddf(x));
}System.out.println("Iteracion " + i++ + " " + x + " " + f(x));
return x;
}

public static double f(double x)
{
return (x*x*x - 5.0*x*x + 7.0*x - 3.0);
}

public static double df(double x)
{
return (3.0*x*x - 10.0*x + 7.0);
}

public static double ddf(double x)
{
return (6.0*x - 10.0);
}

}

Algoritmo de la secante modificado.
==================================================
Para encontrar una...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Newton Raphson
  • Newton-raphson
  • Newton raphson
  • Newton-Raphson
  • METODOS NEWTON RAPHSON
  • Newton raphson metodos numericos
  • Metodo De Newton Raphson
  • Método De Newton Raphson

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS