Está en la página 1de 6

Interpolacin por lagrange

function p=lagrange(x,y)
n=length(x);
p=zeros(1,n);
for i=1:n
s=1;
for j=1:n
if j~=i
s=conv(s,[1 -x(j)])/(x(i)-x(j));
end
end
p=p+y(i)*s;
end
%%%%%%%%%%%%%%%%%%%%%ejemplo aplicado a los puntos
>> x=[1,2,4,6];
>> y=[2,3,5,2];
>> lagrange(x,y)
Los coeficientes del polinomio interpolado son
>> k=lagrange(x,y)
k=
-0.1250 0.8750 -0.7500 2.0000
INTERPOLACIN POR NEWTON
function [c,d]=newpoly(x,y)
%-x vector con lista de absisas
%-y vector con lista de ordenadas
%-c vector con coeficientes de polinomio interpolador de newton
% d es la tabla de diferencias divididas
n=length(x);
d=zeros(n,n);
d(:,1)=y';
for j=2:n
for k=j:n
d(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1));
end
end
%calculando el vector con los coeficientes del polinomio newton
c=d(n,n);
for k=(n-1):-1:1
c=conv(c,poly(x(k)));
m=length(c);
c(m)=c(m)+d(k,k);
end

end
%%%%%%%%%%%%%%%%%%ejemplo para los puntos
>> x=[0,1/3,2/3,1];
>> y=[0,1/81,16/81,1];
>> newpoly(x,y)
ans =
2.0000 -1.2222 0.2222

0
Integracin por el mtodo del trapecio

function area=trapecioo(f,a,b,m)
%----a y b son las cotas de integracion
%---m es el numero de subintervalos
h=(b-a)/m;
area=0;
for k=1:(m-1)
x=a+h*k;
area=area+feval(f,x);
end
area=h*(feval(f,a)+feval(f,b))/2+h*s;
end
integracin por el mtodo de simpsom 1/3
function s=simsom(f,a,b,m)
% f es el integrando
% ay b son las cotas de integracion
h=(b-a)/(2*m);
s1=0;
s2=0;
for k=1:m
x=a+h*(2*k-1);
s1=s1+feval(f,x);
end
for k=1:(m-1)
x=a+h*2*k;
s2=s2+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;
end
Mtodo de Runge-kutta 4
function y=RK4(a,y0,b,n)
f=@(x,y)-2*x*y;

h=(b-a)/n;
for i=0:n
fprintf(' %2.0f %8.4f %8.9f %8.9f\n ',i,a+i*h,y0,exp(-(a+i*h)^2));
k1=h*f(a+i*h,y0);
k2=h*f(a+i*h+h/2,y0+k1/2);
k3=h*f(a+i*h+h/2,y0+k2/2);
k4=h*f(a+(i+1)*h,y0+k3);
y1=y0+(k1+2*k2+2*k3+k4)/6;
y0=y1;
end
end
%%%%%%%%%%%%%%%%%%%%
ejemplo para
y
2 xy
x
y (0) 1
0 x 1
>> RK4(0,1,1,10)
0 0.0000 1.000000000 1.000000000
1 0.1000 0.990049833 0.990049834
2 0.2000 0.960789435 0.960789439
3 0.3000 0.913931174 0.913931185
4 0.4000 0.852143772 0.852143789
5 0.5000 0.778800781 0.778800783
6 0.6000 0.697676387 0.697676326
7 0.7000 0.612626610 0.612626394
8 0.8000 0.527292931 0.527292424
9 0.9000 0.444859037 0.444858066
10 1.0000 0.367881066 0.367879441
Mtodo de Taylor de orden 1 (mtodo de euler)
function y=eulerr(a,yo,b,n)
f=@(x,y)-2*x*y;
h=(b-a)/n
for i=0:n-1
y1=yo+f(a+i*h,yo)*h;
fprintf(' %2.0f %8.4f %8.4f %8.4f\n ', i,a+i*h,yo,exp(-(a+i*h)^2))
yo=y1;
end
end
%%%%%%%%%%%%%%%%%%ejemplo
y
2 xy
x
y (0) 1

0 x 1

h=
0.1000
0 0.0000 1.0000 1.0000
1 0.1000 1.0000 0.9900
2 0.2000 0.9800 0.9608
3 0.3000 0.9408 0.9139
4 0.4000 0.8844 0.8521
5 0.5000 0.8136 0.7788
6 0.6000 0.7322 0.6977
7 0.7000 0.6444 0.6126
8 0.8000 0.5542 0.5273
9 0.9000 0.4655 0.4449
Mtodo de Taylor de orden 2 (mtodo de euler)
%Resolver:
%dy/dt=-2ty
%y(0)=1,0<t<1
%n=numero de subintervalos
function y = Euler2(a,y0,b,n)
%f=@(t,y)-2*t*y;
f=@(t,y)exp(t);
%df=@(t,y)-2*y+4*t^2*y;
df=@(t,y)exp(t);
%g=@(t)exp(-t^2);
g=@(t)exp(t);
h=(b-a)/n;
for i=0:n-1
y1=y0+f(a+i*h,y0)*h+((h^2)*df(a+i*h,y0))/2;
exacto=g(a+(i+1)*h);
fprintf('%2.0f %8.4f %8.4f %8.4f\n',i,a+(i+1)*h,y1,exacto)
y0=y1;
end
end
EJEMPLO
Euler2(0,1,1,5)
0
1
2
3
4

0.2000
0.4000
0.6000
0.8000
1.0000

1.2200
1.4887
1.8169
2.2178
2.7074

1.2214
1.4918
1.8221
2.2255
2.7183

Universidad Nacional
de San Agustn

INTEGRACION Y DERIVACION POR METODOS


NUMERICOS

Escuela: ingeniera Elctrica


Curso : mtodos numricos
computacionales
Pertenece : Vilca Vilca Wilbert
Arequipa Per

2014

También podría gustarte