Foro Matemáticas

Laboratorio 16 de Mayo de 2011

Ver el tema anterior Ver el tema siguiente Ir abajo

Laboratorio 16 de Mayo de 2011

Mensaje  Favián el Lun Mayo 16, 2011 4:19 pm

En análisis numérico, el método de Newton (conocido también como el método de Newton-Raphson o el método de Newton-Fourier) es un algoritmo eficiente para encontrar aproximaciones de los ceros o raíces de una función real. También puede ser usado para encontrar el máximo o mínimo de una función, encontrando los ceros de su primera derivada.(http://es.wikipedia.org)
su fórmula recursiva esta dada por:

donde x0 debe proporcionarse.
Un punto fijo de una función f(x), es un número c tal que f(c)=c. El problema de encontrar las soluciones de una ecuación y el de encontrar los puntos fijos de una función son equivalentes en el siguiente sentido: dado el problema de encontar las soluciones de una ecuación f(x)=0, podemos definir una función g(x) con un punto fijo p de muchas formas; por ejemplo, f(x)=x-g(x). En forma inversa, si la función g(x) tiene un punto fijo en p , entonces la función definida por f(x)=x-g(x) posee un cero en p.
Ejercicios:
1) Encuentre una raiz de la función f(x)=x4+2x2-x-3,
a) buscando un punto fijo
b) Por el método de newton (el programa debe calcular la derivada en cada iteración)
DEBE SUBIR A ESTE FORO:
*_LA LISTA DE APROXIMACIONES
EJEMPLO
0 2
1 1.33
2 1.2333
3 1.0124
*
*
*_codigo fuente
EN JAVA
*_EL INTERVALO DONDE SE PUEDE ESCOGER CON CONFIANZA A LOS VALORES INICIALES

Favián

Mensajes : 24
Fecha de inscripción : 12/01/2011
Localización : Popayán

Ver perfil de usuario http://www.unicauca.edu.co/matematicas/farenas

Volver arriba Ir abajo

17091019 método de newton en (-10,0] halla una raiz negativa y en (0,10) halla la positiva

Mensaje  luisportilla el Mar Mayo 17, 2011 9:39 am

Código:
public class funciones {
double f(double x){
    double y= Math.pow(x, 4)+2*Math.pow(x, 2)-x-3;
        return y;}

double der(double x){
    double y=4*Math.pow(x, 3)+4*x-1;
        return y;}

}
 public static void main(String[] args) {
funciones g=new funciones();
double x0=20;
int n=0;
    while(Math.abs(g.f(x0))>0.00000000001){
      double x1=x0-(g.f(x0)/g.der(x0));
          System.out.println(n+"\t"+x0+"\t"+g.f(x1));
              x0=x1;
                  n++;    }}


Última edición por luisportilla el Mar Mayo 17, 2011 5:43 pm, editado 2 veces

luisportilla

Mensajes : 21
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Metodo de Newton

Mensaje  Jesteban el Mar Mayo 17, 2011 12:59 pm

Código:

public class metodos {
    double funcion(double x){

//f(x)=x4+2x2-x-3,
        return x*x*x*x+2*x*x-x-3;
    }

    double derfuncion(double x){

      //f´(x)=4x3+4x-1,
    return 4*x*x*x+4*x-1;}

 void newton (double x0){
        double xa;
        int n=21;

        for(int i=0;i<=n;i++){
        System.out.println(i+"valor aprox"+x0);
        xa=x0;
        x0=x0 - (funcion(x0)/derfuncion(x0));

        if(x0==xa){ break;}
        }System.out.println("la raiz es:"+x0);
}

 

}
valor inicial=0

valor inicial=1

Jesteban

Mensajes : 12
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

metodo de newton por yeison urrea cod: 17101021

Mensaje  yeison el Mar Mayo 17, 2011 2:26 pm

PUNTO FIJO
Código:



public class punto {




double g(double x){

double r =Math.pow(x, 4)+2*Math.pow(x, 2)-3;

return r;
}

double puntofijo(double x0, double tol, int I){


double x = x0;

int i=0;

while(i<=I){
System.out.println("x"+i+" "+x);
i++;
x = g(x0);

if(Math.abs(x0-x)<TOL){
return x;
x0 = x;
}System.out.println("aproximacion: "+i+" iteraciones");
return x;
}

METODO DE NEWTON
el valor inicial es de x0= 1
el intervalo de escogencia del punto inicial es [1, 127]
Código:

// donde se escribe la funcion
public class metodos {
double f(double x){
double y=(Math.pow(x, 4)+2*Math.pow(x, 2)-x-3);
      return y;
}

//donde calcula la derivada
public class derivada {
    metodos n=new metodos ();
double df(double x){
    double h=0.00000000000001;
double y=((n.f(x+h))-(n.f(x)))/h;
return y;
}

// metodo newton
public class newton {
    metodos n=new metodos ();
    derivada m=new derivada ();
double  newton(double x0){
double x1; int i=0;
  do {
System.out.println("x"+i+"  "+x0);
  x1=x0-(n.f(x0)/m.df(x0));
  x0=x1;
i++;
  }while (Math.abs(n.f(x1))>0.00000001);
 
return x1;
}

//visualizar en la clase principal
 public static void main(String[] args) {
        newton n=new newton();
       
        System.out.println("-------raiz por metodo de newton--------");
System.out.println(n.newton(1));
       
    }
lista de aproximaciones


Última edición por yeison el Mar Mayo 17, 2011 4:59 pm, editado 2 veces

yeison

Mensajes : 6
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Laboratorio 16 de Mayo de 2011

Mensaje  felipe nar el Mar Mayo 17, 2011 2:55 pm

Código:
public class funciones {
double f(double x){
    double y= Math.pow(x, 4)+2*Math.pow(x, 2)-x-3;
        return y;}

double der(double x){
    double h=Math.pow(10, -10);
        double y=(f(x+h)-f(x))/h;
return y;}
funciones g=new funciones();
double x0=8;
int n=0;
    do{
      double x1=x0-(g.f(x0)/g.der(x0));
          System.out.print(n+"    "+x0+"      "+" f(x)=  "+g.f(x1)+"\n");
              x0=x1;
                  n++;
    }while(Math.abs(g.f(x0))>0.00000000001);

felipe nar

Mensajes : 12
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Raices empleando newton y punto fijo " cod 17031003"

Mensaje  wilmer cordoba el Mar Mayo 17, 2011 3:58 pm

Valor inicial para x0 en newton es 0.3;
Intervalo de escogencia [0.3,16000];

valor inicial para x0 en punto fijo es 0.1;
Intervalo de escogencia en [0.1,0.4];

[code]
// clase punto

public class punto {




double g(double x){

double r =Math.pow(x, 4)+2*Math.pow(x, 2)-3;

return r;
}

double puntofijo(double x0, double tol, int I){


double x = x0;

int i=0;

while(i<=I){
System.out.println("x"+i+" "+x);
i++;
x = g(x0);

if(Math.abs(x0-x) return x;
x0 = x;
}System.out.println("Falla despues de: "+i+" pasos");
return x;
}


double f(double x){

double z = Math.pow(x, 4)+2*Math.pow(x, 2)-x-3;
return z;
}

double fp(double x){
double h=.000000000001;
double z =(f(x+h)-f(x))/h;
return z;
}

double newton(double x,int I){
for (int i=0;i double K=f(x);
double r= fp(x);
double x1= x-(K/r);

if(x !=x1){

System.out.println("x" + i+"=" + " " + x);
x=x1;
} else{System.out.println("la raiz es x" + i +"="+ " " + x);
break; }

}return x;}

//clase principal

punto R=new punto();

System.out.println("-------raiz por medio de newton--------------");
System.out.print(R.newton(0.3, 100000)+"\n");

System.out.println("-------raiz por medio punto fijo--------------");
System.out.print(R.puntofijo(0.1, 0.000001, 11));

Lista de la raices





wilmer cordoba

Mensajes : 10
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Metodo de Newton Y del punto fijo, cod:17091002 Dorlan Rivera

Mensaje  Dorlan Enrique el Mar Mayo 17, 2011 5:03 pm

Código:


//METODO DE NEWTON-RAPHSON X0=0.5

public class newton {
  public static void main(String[] args) {
   
      double x=0.5;                //valor inicicial x0
      double f=((Math.pow(x,4))+(2*x*x)-x-3);  // declaracion de la funcion
     
      double x1;
      double resta=0.1;            //inicializador del while
      metodos g=new metodos();
         
      int i=0;                    //contador (numero de iteraciones)
    System.out.println("-----Metodo de Newton---");         
    System.out.println("Iteraciones"+"\t"+"x");
         
    while(resta>0.000000000000001){
          x1=x-g.cociente(x,f);
          resta=Math.abs(x1-x);
          x=x1;
          i++;
          System.out.println("  "+i+"\t"+x1);         
          }     
    System.out.println("raiz = "+x);
     
}
}
------------------------------------------------------------------------------
public class metodos {
   

double cociente(double x, double f){
      f=((Math.pow(x,4))+(2*x*x)-x-3); 
   
      double h=1E-14;        //h muy pequeño
      double fprima=(((Math.pow(x+h,4))+(2*(x+h)*(x+h))-(x+h)-3)-f)/h; 
      return f/fprima;
}
}

Código:


//METODO DEL PUNTO FIJO X0=0.5

public class Punto_fijo {
public static void main(String[] args) {
   
    double x=0.5;                //valor inicicial x0
    //double f=Math.pow(x,4))+(2*x*x)-x-3); 
     
      double x1;
      double t=0.1;            //inicializador del while
      funcion s=new funcion();
     
      int i=0;                    //contador (numero de iteraciones)
    System.out.println("-----Metodo del Punto fijo---");         
    System.out.println("Iteraciones"+"\t"+"x=g(x)"+"\t"+"\t"+"f(x)");

      while(t>0.000000000000001){
          x1=s.gx(x);
          t=Math.abs(x1-x);
          x=x1;
          i++;
          System.out.println("  "+i+"\t"+x1+"\t"+s.f_x(x));         
          }     
    System.out.println("raiz = "+x);     
   
    }   
}
------------------------------------------------------------------
public class funcion {
   
      double gx(double x){
        double c=(x+3)/((x*x)+2);
        double g=Math.sqrt(c); 
        return g;
    }
      double f_x(double x){
          double f=Math.pow(x,4)+(2*x*x)-x-3;     
        return f;       
      }         
}


Última edición por Dorlan Enrique el Mar Mayo 17, 2011 8:35 pm, editado 3 veces

Dorlan Enrique

Mensajes : 8
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

metodo del punto fijo felipe narvaez 17091050 la raiz se puede hallar en (0,100)

Mensaje  felipe nar el Mar Mayo 17, 2011 5:28 pm

Código:
double f2(double x){
    double y=-Math.pow((x+3)/(Math.pow(x,2)+2),0.5);
        return y;}

funciones g=new funciones();
double x0=100;
int n=0;
do{double x1=g.funcion1(x0);
          System.out.println(n+"\t"+x0+"\t"+" f(x)=  "+g.f(x1));
              x0=x1;
                  n++;}
while(Math.abs(g.funcion1(x0)-x0)>0.00000000001);

felipe nar

Mensajes : 12
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

17091019 la raiz puede hallarse en el intervalo (-3,100)

Mensaje  luisportilla el Mar Mayo 17, 2011 5:40 pm

Código:
double g(double x){
    double y=-Math.pow((x+3)/(Math.pow(x,2)+2),0.5);
        return y;}
funciones g=new funciones();
double x0=-3;
int n=0;
while(Math.abs(g.g(x0)-x0)>0.00000000001){
      double x1=g.g(x0);
          System.out.println(n+"\t"+x0+"\t"+" f(x)=  "+g.f(x1));
              x0=x1;
                  n++;}

luisportilla

Mensajes : 21
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

METODO PUNTO FIJO Intervalo:(-3,1000+) Jhonatan Peñafiel COD:17091007

Mensaje  Jesteban el Mar Mayo 17, 2011 5:58 pm

Código:

public class metodo {

    double xgx(double x){
    //x=x4+2x2-3,
      double g=-Math.pow((x+3)/(Math.pow(x,2)+2),0.5);
    return g; }

 void  puntof(double x0){
        double xa;
        int n=0;
        double tol=Math.pow(10, -10);
   
   
      xa=x0;
        do
    {
      System.out.println("X("+n+")= " + xa);
      x0 = xa;
      xa =xgx(x0);
      n ++;
    }while (Math.abs(xa-x0) > tol);

        System.out.println("X("+(n-1)+") valor aprox="+x0);
    }
}

Código:

 public static void main(String[] args) {
      metodo p=new metodo();

      p.puntof(0.1);
    }


Jesteban

Mensajes : 12
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Laboratorio 16 de Mayo de 2011

Mensaje  jenny el Dom Mayo 29, 2011 7:44 pm

Código:
package puntofijo;


public class punto {
   



 double g(double x){

  double r =Math.pow(x, 4)+2*Math.pow(x, 2)-3;
         
     return r;
}

double puntofijo(double x0, double tol, int I){


  double x = x0;

  int i=0;
 
  while(i<=I){
System.out.println("x"+i+"  "+x);
    i++;
    x = g(x0);
   
    if(Math.abs(x0-x)<tol)
      return x;
                x0 = x;
    }
    return x;
  }


double f(double x){

  double z = Math.pow(x, 4)+2*Math.pow(x, 2)-x-3;
     return z;
}

 double fp(double x){
double h=.000000000001;
  double z =(f(x+h)-f(x))/h;
     return z;
}

 double newton(double x,int I){
for (int i=0;i<I;i++){
        double K=f(x);
        double r= fp(x);
      double x1= x-(K/r);

          if(x !=x1){

System.out.println("x" + i+"=" + "    " + x);
x=x1;
        }  else{System.out.println("la raiz es x" + i +"="+ "    " + x);
      break; }
 
    }return x;}

}


jenny

Mensajes : 9
Fecha de inscripción : 28/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Laboratorio 16 de Mayo de 2011

Mensaje  Contenido patrocinado Hoy a las 11:21 am


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.