martes, 28 de febrero de 2012

Método de Punto Fijo en Matlab

clear all; 
 clc;  
  fprintf('\nCalculo de la raizde una ecuacion por el metodo del Punto Fijo\n\n'); 
   f=input('Dame la 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(f); 
      ea=abs((g-x)/g*100); 
     x=g; 
   c=c+1; 
  end 
 fprintf('\n\n\n\nLa raiz exacta es: %d',g) 
    fprintf('\n\nNumero de iteraciones: %d',c);

8 comentarios:

  1. donde puedo encontrar un tutorial sobre el uso de matlab??

    ResponderEliminar
    Respuestas
    1. En este mismo blog en el aparatado de videotutoriales de matlab ahi encontraras un curso completo de 30 videotutoriales hechos por mi que van de lo mas basico posible.

      Eliminar
    2. Hola ! Tienes el mismo pero en octave

      Eliminar
  2. Use the Bisection method to find p3 for f (x) =

    x − cos x on [0, 1].
    2. Let f (x) = 3(x + 1)(x − 1
    2 )(x − 1). Use the Bisection method on the following intervals to find p3.
    a. [−2, 1.5] b. [−1.25, 2.5]
    3. Use the Bisection method to find solutions accurate to within 10−2 for x3 − 7x2 + 14x − 6 = 0 on
    each interval.
    a. [0, 1] b. [1, 3.2] c. [3.2, 4]
    4. Use the Bisection method to find solutions accurate to within 10−2 for x4 − 2x3 − 4x2 + 4x + 4 = 0
    on each interval.
    a. [−2,−1] b. [0, 2] c. [2, 3] d. [−1, 0].... como puedo resolver estos ejercicios??

    ResponderEliminar
  3. no sabia como hacerlo, pero llegue ala conclusión de que te amo!!! :D

    ResponderEliminar
  4. //metodo punto fij0 por olavid. Aqui lo tienen en c++, lo traduje del codigo de arriba.
    #include
    #include
    using namespace std;
    double g(double x);

    int main(){
    double x0=0; double es=0.01; double ea=0; double xr=0;
    double porcentaje= 100; double x=0; double aprox=2.8601;

    cout<<"\t Metodo del punto fijo para -0.9x^2 + 1.7x + 2.5=0"<=0 && x<=aprox){
    x=g(xr);

    x0=x0+1;
    ea=abs((x-xr)/x)*porcentaje; xr=x;
    cout<<"iteracion= "<<x0<<" | resultado= "<<x<<" | ea = "<<ea<<endl;
    }

    cout<<endl<<"El valor aproximado de la raiz es="<<xr<<" ,en la iteracion= "<<x0<<endl;
    cout<<"cuando Ea="<<ea<<"% < Es="<<es<<"%";

    return 0;
    }

    double g(double x){
    double x1; double const a=0.9; double const b=1.7; double const c=2.5;
    //x=g(x) de -0.9x^2 + 1.7x + 2.5=0
    x1=sqrt((-c -(b*x))/-a);
    return x1;
    }

    ResponderEliminar
  5. //Metodo raphson newton por olavid, tambien suelen pedir este. y para los que no sabemos bien matlab u otro lenguje... c++
    #include
    #include
    using namespace std;
    double resultado(double x);
    double derivada(double x);
    int main(){
    double x0=5; double ea=0; double es=0.01; double resold=0; double resultado1=0; double porciento=100;
    cout<<"\tmetodo de raphson newton -0.9x^2 + 1.7x + 2.5, con x0=5 y es=0.01%";
    cout<<endl<<endl;

    for(int i=1; i<=5; i++){
    resultado1= x0-(resultado(x0)/derivada(x0));
    cout<<"En la iteracion: "<<i<<"| el resultado es="<<resultado1<<endl;
    if(i>1){
    ea=abs((resultado1-resold)/resultado1)*porciento;
    }
    resold=resultado1;
    x0=resultado1;
    }
    if(ea<es){

    cout<<endl<<"El valor aproximado de la raiz=:"<<resultado1<<endl<<"Con un Ea="<<ea<<"%
    cout<<"| que es menor que Es=:"<<es<<"%"<<endl;}
    return 0;
    }
    double resultado(double x){
    double resultado=(-0.9*(x*x))+(1.7*x)+2.5;
    return resultado;
    }
    double derivada(double x){
    double resultado=(-(1.8*x)+1.7);
    return resultado;
    }

    ResponderEliminar
  6. Las librerias son iostream y cmath.

    ResponderEliminar