miércoles, 18 de enero de 2012

Simpson 1/3 en Matlab


%regla de simpson 1/3
clear all; close all; clc
fun=input('Ingresa la función f(x) entre comillas: ');
f=inline(fun);
n=1;
while mod(n,2)~=0
    n=input('Ingrese el número de subintervalos: ');
    if mod(n,2)~=0
        disp('El número de subintervalos debe ser par, pulse una tecla para continuar')
        pause
    end
end
a=input('Ingrese el límite inferior de la integral: ');
b=input('Ingrese el límite superior de la integral: ');


h=(b-a)/n;


sumai=0;
sumap=0;


for i=1:2:n-1
    sumai=sumai+feval(f,h*i+a);
end
for i=2:2:n-2
    sumap=sumap+feval(f,h*i+a);
end


int=(h/3)*(feval(f,a)+4*sumai+2*sumap+feval(f,b));


disp(['El resultado de la integral es ' num2str(int)])

23 comentarios:

  1. Gracias. El código me ayudo a aclarar mejor mis ideas de abstracción.

    ResponderEliminar
  2. una pregunta no tendras uno metodo de trapecio

    ResponderEliminar
    Respuestas
    1. %regla de simpson 1/3
      clear all; close all; clc
      fun=input('Ingresa la función f(x) entre comillas: ');
      f=inline(fun);
      n=input('Ingrese el número de subintervalos: ')
      a=input('Ingrese el límite inferior de la integral: ');
      b=input('Ingrese el límite superior de la integral: ');

      h=(b-a)/n;
      sumat = 0;

      for i=1:n-1
      sumat=sumat+feval(f,a+h*i);
      end for

      int=h*((feval(f,a)+feval(f,b))/2+sumat);

      disp(['El resultado de la integral es ' num2str(int)])

      PD: No tengo a mano el Matlab para probar el código, me avisas si tienes problemas. Slds.

      Eliminar
    2. %regla de simpson 1/3
      clear all; close all; clc
      fun=input('Ingresa la función f(x) entre comillas: ');
      f=inline(fun);
      n=input('Ingrese el número de subintervalos: ')
      a=input('Ingrese el límite inferior de la integral: ');
      b=input('Ingrese el límite superior de la integral: ');

      h=(b-a)/n;
      sumat = 0;

      for i=1:n-1
      sumat=sumat+feval(f,a+h*i);
      end

      int=h*((feval(f,a)+feval(f,b))/2+sumat);

      disp(['El resultado de la integral es ' num2str(int)])

      Eliminar
  3. 2. Aproxime por el método de Simpson con N = 20 la integral de

    f (x) = sen(4x) ln(x+2) 0 ≤ x ≤ π

    ResponderEliminar
  4. Respuestas
    1. %regla de simpson 1/3
      clear all; close all; clc
      f=inline('sin(4*x)*log(x+2)'); %log es logartimo natural en matlab
      n=20;
      a=0;
      b=pi;


      h=(b-a)/n;


      sumai=0;
      sumap=0;


      for i=1:2:n-1
      sumai=sumai+feval(f,h*i+a);
      end
      for i=2:2:n-2
      sumap=sumap+feval(f,h*i+a);
      end


      int=(h/3)*(feval(f,a)+4*sumai+2*sumap+feval(f,b));


      disp(['El resultado de la integral es ' num2str(int)])

      Eliminar
    2. como hago para que en el codigo me calcule el error?

      Eliminar
  5. holaa tenes el codigo fuente de la regla 1/3 de simpson pero que no use la funcion... porque tengo los resultados de una funcion desconicida para cada x pero desconozco la funcion

    ResponderEliminar
  6. Buenas, tendrás el código para resolver por el método de intervalos desiguales? Gracias de antemano...

    ResponderEliminar
  7. hola, tendras el codigo usando la de simpson 1/3 y 3/8 segun el numero de intervalos....

    ResponderEliminar
  8. Alguien sabe como se puede hacer la tabla de distribucion normal usando la regla de simpson en matlab?? sería de gran ayuda!!!

    ResponderEliminar
  9. perdona si es un poco descarado de mi parte, pero me podrias explicar en funcionamiento por favor, de ante mano muchas gracias

    ResponderEliminar
  10. Como esta me podria explicar para q sirve el numero de subintervalos y porq m pide numeros pares, me puede explicar esa parte

    ResponderEliminar
  11. Disculpa, como hago para que me vote trapecios en el grafico?

    ResponderEliminar
  12. Muchas Gracias. Me fue de gran ayuda. Saludos

    ResponderEliminar