Está en la página 1de 7

E EULER

clear all
disp('METODO DE EULER')
clc
syms x
syms y
f=inline(input('ingrese la derivada:','s'));
x=input('ingrese el valor de x:');
y=input('ingrese el valor de y:');
h=input('ingrese el valor de h:');
n=input('ingrese numero de iteraciones:');
clc
disp('x(n) y(n) y(n) hy(n)');
for i=1:n
y1=feval(f,x,y);
hy1=h*y1;
fprintf('\n%0.1f %0.4f %0.4f %0.4f ',x,y,y1,hy1);
y=y+hy1;
x=x+h;
end
METODO DE NEWTON-COTES
clc
clear all
disp('METODO DE NEWTON-COTES')
syms x
f=inline(input('ingrese la funcion:','s'));
a=input('ingrese intervalo inferior:');
b=input('ingrese intervalo superior:');
n=1
h=(b-a)/3
x0=a
x1=x0+h
x2=x1+h
x3=x2+h
x4=x3+h
f0=feval(f,x0)
f1=feval(f,x1)
f2=feval(f,x2)
f3=feval(f,x3)
f4=feval(f,x4)
I1=(h/2)*(f0+f1)
error=(-1/12)*(h^5)*((f2-(2*f1)+f0)/(h^2))
I1=I1+error
n=2
I2=(h/3)*(f0+4*f1+f2)
error=(-1/90)*(h^5)*((f4-(4*f3)+(6*f2)-(4*f1)+f0)/(h^4))
I2=I2+error

METODO DE EULER MODIFICADO


clear all
disp('METODO DE EULER MODIFICADO')
clc
syms x
syms y
f=inline(input('ingrese la derivada:','s'));
x=input('ingrese el valor de x:');
y=input('ingrese el valor de y:');
h=input('ingrese el valor de h:');
n=input('ingrese numero de iteraciones:');
clc
disp('x(n) y(n) hy(n) y(n+1),p hy(n+1),p y(n+1),c');
for i=1:n
s=h+x;
y1=feval(f,x,y);
hy1=h*y1;
y2=y+hy1;
y3=feval(f,s,y2);
hy2=y3*h;
yn=y+((hy1+hy2)/2);
fprintf('\n%0.1f %0.4f %0.4f %0.4f %0.4f %0.4f',x,y,hy1,y2,hy2,yn);
y=yn;
x=x+h;
end
METODO DE LA SECANTE
clc
syms x
f=inline(input('ingrese la funcion :','s'));
x0=input('ingrese intervalo inferior:');
x1=input('ingrese intervalo superior:');
tol=input('ingrese la tolerancia:');
fx0=feval(f,x0);
fx1=feval(f,x1);
n=1;
if(abs(fx0))<(abs(fx1)) fx2=900; disp('n x0 x1 x2 f(x0) f(x1) f(x2) ') while (abs(fx2))>tol
x2=x1-((x1-x0)/(fx1-fx0))*fx1;
fx2=feval(f,x2);
fprintf('\n%d %0.4f %0.4f %0.4f %0.4f %0.4f %0.4f',n,x0,x1,x2,fx0,fx1,fx2)
x0=x1;
x1=x2;
fx0=feval(f,x0);
fx1=feval(f,x1);
n=n+1;
end
else
disp('NO SE PUEDE REALIZAR POR ESTE METODO');

disp('|F(X0)| TIENE QUE SER MENOR A |F(X1)|');


end
METODO DE SIMPSON 3/8
clc
disp('METODO DE SIMPSON 3/8')
f=inline(input('ingrese la funcion a integrar:','s'));
a=input('ingrese intervalo inferior:');
b=input('ingrese intervalo superior:');
h=input('digite el valor del paso:');
c=0;suma=0;sumav=0;
s=a;
while (s<=b) c=c+1; s=s+h; end x=a:h:b; if(rem((c-1),3)~=0) disp('\n\nERROR') disp('SE
REQUIERE UN NUMER0 DE PAREJAS DIVISIBLE POR 3') disp('EJECUTE DE
NUEVO Y CAMBIE EL PASO') break; else p=4; for(i=1:c) fi=feval(f,x(i)) if(i==1 | i==c)
suma=suma+fi; else if(i==p) sumav=sumav+(fi*2); p=p+3; else sumav=sumav+(fi*3); end
end end end suma=suma+sumav; integral=(3*h/8)*suma; t0=feval(f,x(1)); t1=feval(f,x(2));
t2=feval(f,x(3)); t3=feval(f,x(4)); t4=feval(f,x(5)); f4=(t4-(4*t3)+(6*t2)-(4*t1)+t0)/(h^4);
error=-((b-a)/80)*(h^4)*f4; integral=integral+error
METODO DE SIMPSON 1/3
clc
disp('METODO DE SIMPSON 1/3')
f=inline(input('ingrese la funcion a integrar:','s'));
a=input('ingrese intervalo inferior:');
b=input('ingrese intervalo superior:');
h=input('digite el valor del paso:');
c=0;suma=0;sumav=0;
s=a;
while (s<=b) c=c+1; s=s+h; end x=a:h:b; if(rem(c,2)==0) disp('ERROR') disp('SE
REQUIERE UN NUMERO PAR DE PAREJAS') disp('EJECUTE DE NUEVO Y
CAMBIE EL PASO') break; else for(i=1:c) fi=feval(f,x(i)); if(i==1 | i==c) suma=suma+fi;
else if(rem(i,2)==0) sumav=sumav+(fi*4); else sumav=sumav+(fi*2); end end end end
suma=suma+sumav; integral=(h/3)*suma; t0=feval(f,x(1)); t1=feval(f,x(2));
t2=feval(f,x(3)); t3=feval(f,x(4)); t4=feval(f,x(5)); f4=(t4-(4*t3)+(6*t2)-(4*t1)+t0)/(h^4);
error=-((b-a)/180)*(h^4)*f4; integral=integral+error
METODO DE RUUGE-KUTTA
clc
disp('METODO DE RUUGE-KUTTA')
syms x
syms y
f=inline(input('ingrese la derivada:','s'));
x=input('ingrese el valor de x:');
y=input('ingrese el valor de y:');
h=input('ingrese el valor de h:');
n=input('ingrese numero de iteraciones:');
clc

disp('x(n) k1 k2 k3 k4 ');
for i=1:n
k1=h*(feval(f,x,y));
z=x+(1/2*(h));
w=y+(1/2*(k1));
k2=h*(feval(f,z,w));
w=y+(1/2*(k2));
k3=h*(feval(f,z,w));
z=x+h;
w=y+k3;
k4=h*(feval(f,z,w));
fprintf('\n%0.1f %0.4f %0.4f %0.4f %0.4f %0.4f',x,y,k1,k2,k3,k4);
x=x+h;
y=y+((1/6)*(k1+2*k2+2*k3+k4));
end
METODO DE BAIRSTOW
clc
tol=10^-3;
x1=input('ingrese x1:');
x2=input('ingrese x2:');
x3=input('ingrese x3:');
x4=input('ingrese x4:');
x5=input('ingrese x5:');
r=input('ingrese r:');
s=input('ingrese s:');
b1=1;b0=1;
while(abs(b1>tol) & abs(b0>tol))
b4=x1;
b3=(b4*r)+x2;
b2=(b3*r)+(b4*s)+x3;
b1=(b2*r)+(b3*s)+x4;
b0=(b1*r)+(b2*s)+x5;
c4=b4;
c3=(c4*r)+b3;
c2=(c3*r)+(c4*s)+b2;
c1=(c2*r)+(c3*s)+b1;
dr=((-b1*c2)-(-b0*c3))/((c2*c2)-(c1*c3));
ds=((c2*-b0)-(c1*-b1))/((c2*c2)-(c1*c3));
r=dr+r;
s=ds+s;
end
p=-r;
q=-s;
fprintf('POLINOMIO = %0.0fX^4 +%0.2fX^3 + %0.2fX^2 + %0.2fX
+%0.2f\n',x1,x2,x3,x4,x5);
fprintf('LA FORMA BUSCADA ES \n(%0.0fX^2 + %0.1fX + %0.2f) Y %0.0fX^2 +
%0.1fX + %0.2f',b4,b3,b2,x1,p,q);

fprintf('\nLAS RAICES APROXIMADAS SON:\n\n');


raiz1=(-b3+sqrt((b3^2)-4*b4*b2))/2*b4
raiz2=(-b3-sqrt((b3^2)-4*b4*b2))/2*b4
raiz3=(-p-sqrt((p^2)-4*x1*q))/2*x1
raiz4=(-p-sqrt((p^2)-4*x1*q))/2*x1
METODO DE BISECCIN
f=inline(input('ingrese la funcion:','s'));
a=input('ingrese intervalo inferior:');
b=input('ingrese intervalo superior:');
tol=input('ingrese la tolerancia:');
fa=feval(f,a);
fb=feval(f,b);
if (sign(fa)==sign(fb))
disp('no se garantiza el teorma de bolzano:');
break;
end
fc=10;
n=1;
disp('n an bn cn f(c)n');
while(n~=8)
c=(a+b)/2;
fc=feval(f,c);
fprintf('\n%d %0.4f %0.4f %0.4f %0.4f',n,a,b,c,fc);
if (fc==0)
fprintf('%f es un cero de f',c);
break;
end
if (sign(fc)==sign(fa))
s=c;
t=b;
else
if(sign(fc)~=sign(fb))
s=a;
t=c;
end
end
n=n+1;
a=s;
b=t;
fa=feval(f,a);
fb=feval(f,b);
end
POSDATA: no se les olvide agradecer...............
n=3
I3=((3*h)/8)*(f0+(3*f1)+(3*f2)+f3)
error=(-3/80)*(h^5)*((f4-(4*f3)+(6*f2)-(4*f1)+f0)/(h^4))

I3=I3+error
Enlaces a esta entrada
Crear un enlace
Entrada ms reciente Entrada antigua Pgina principal

contador

También podría gustarte