Documentos de Académico
Documentos de Profesional
Documentos de Cultura
x=input('Ej.[0 1 2 3 4 5 6 7 8 9 10])');
n=length(x);
e=0;
if (x(1,i+1)-x(1,i))~=(x(1,i+2)-x(1,i+1))
e=e+1;
break;
end
end
y=input('(Ej.[1.4 2.1 3.3 4.8 6.8 6.6 8.6 7.5 8.9 10.9 10])');
h=x(1,2)-x(1,1);
n=length(x);
pridrv=zeros(1,n);
%.................................--------...............................
.
%finitas.
%primer dato, diferencias finitas hacia adelante
pridrv(1,1)=(y(1,2)-y(1))/h;
for i=2:n-1
pridrv(1,i)=(y(1,i+1)-y(1,i-1))/(2.*h);
end
pridrv(1,n)=(y(1,n)-y(1,n-1))/h;
fprintf('\n\nRESULTADOS!\n');
disp(pridrv);
segdrv=zeros(1,n);
if n<3
else
segdrv(1,1)=(y(1,3)-2.*y(1,2)+y(1,1))/h.^2;
for i=2:n-1
segdrv(1,i)=(y(1,i+1)-2.*y(1,i)+y(1,i-1))/h.^2;
end
segdrv(1,n)=(y(1,n)-2.*y(1,n-1)+y(1,n-2))/h.^2;
disp(segdrv);
end
%Tercera derivada:
if n<5
if n<4
else
fprintf('\n');
exterdrv=zeros(1,2);
exterdrv(1,1)=(y(1,4)-3.*y(1,3)+3.*y(1,2)-y(1,1))/h.^3;
exterdrv(1,2)=(y(1,n)-3.*y(1,n-1)+3.*y(1,n-2)-y(1,n-3))/h.^3;
disp(exterdrv);
end
else
terdrv=zeros(1,n);
terdrv(1,1)=(y(1,4)-3.*y(1,3)+3.*y(1,2)-y(1,1))/h.^3;
terdrv(1,2)=(y(1,5)-3.*y(1,4)+3.*y(1,3)-y(1,2))/h.^3;
for i=3:n-2
terdrv(1,i)=(y(1,i+2)-2.*y(1,i+1)+2.*y(1,i-1)-y(1,i-2))/(2*h.^3);
end
terdrv(1,n-1)=(y(1,n-1)-3.*y(1,n-2)+3.*y(1,n-3)-y(1,n-4))/h.^3;
terdrv(1,n)=(y(1,n)-3.*y(1,n-1)+3.*y(1,n-2)-y(1,n-3))/h.^3;
disp(terdrv);
end
%Cuarta derivada
if n<6
if n<5
else
excuadrv(1,1)=(y(1,5)-4.*y(1,4)+6.*y(1,3)-4.*y(1,2)+y(1))/h.^4;
excuadrv(1,2)=(y(1,n)-4.*y(1,n-1)+6.*y(1,n-2)-4.*y(1,n-3)+y(n-4))/h.^4;
fprintf('Estas son:');
disp(excuadrv);
end
else
cuadrv=zeros(1,n);
cuadrv(1,1)=(y(1,5)-4.*y(1,4)+6.*y(1,3)-4.*y(1,2)+y(1))/h.^4;
cuadrv(1,2)=(y(1,6)-4.*y(1,5)+6.*y(1,4)-4.*y(1,3)+y(2))/h.^4;
for i=3:n-2
cuadrv(1,i)=(y(1,i+2)-4.*y(1,i+1)+6.*y(1,i)-4.*y(1,i-1)+y(1,i-2))/h.^4;
end
cuadrv(1,n)=(y(1,n)-4.*y(1,n-1)+6.*y(1,n-2)-4.*y(1,n-3)+y(n-4))/h.^4;
cuadrv(1,n-1)=(y(1,n-1)-4.*y(1,n-2)+6.*y(1,n-3)-4.*y(1,n-4)+y(n-5))/h.^4;
disp(cuadrv);
end
clear all
%Entrada de informacion
n=input('numero de datos=');
x=input('vector de abscisas=');
y=input('vector de ordenadas=');
for i=1:n-1
h(i)=x(i+1)-x(i);
end
for k=1:n-2
b(k)=6*((y(k+2)-y(k+1))/h(k+1)-(y(k+1)-y(k))/h(k));
end
%Sistema de ecuaciones para hallar las segundas derivadas, desde w(2) hasta w(n-1)
% M*W=B
M(1,1)=2*(h(1)+h(2));
M(1,2)=h(2);
B(1)=b(1)-h(1)*W1;
M(n-2,n-3)=h(n-2);
M(n-2,n-2)=2*(h(n-2)+h(n-1));
B(n-2)=b(n-2)-h(n-1)*WN;
for k=2:n-3
M(k,k-1)=h(k);
M(k,k)=2*(h(k)+h(k+1));
M(k,k+1)=h(k+1);
B(k)=b(k);
end
aux=inv(M)*B';
W(1)=W1;
W(n)=WN;
for j=2:n-1;
W(j)=aux(j-1);
end
for k=1:n-1
U(k)=(y(k+1)-y(k))/h(k)-(h(k)/6)*(2*W(k)+W(k+1));
end
for k=1:n-1
c(k,1)=(W(k+1)-W(k))/(6*h(k));
c(k,2)=W(k)/2-3*x(k)*c(k,1);
c(k,3)=U(k)-x(k)*W(k)+3*c(k,1)*x(k)^2;
c(k,4)=-c(k,1)*x(k)^3+(x(k)^2)*W(k)/2-x(k)*U(k)+y(k);
end
for i=1:n-1
t(i,:)=x(i):0.01*h(i):x(i+1);
p(i,:)=c(i,1).*(t(i,:).^3)+c(i,2).*(t(i,:).^2)+c(i,3).*t(i,:)+c(i,4);
plot(t(i,:),p(i,:),'k')
grid on
hold on
end
plot (x,y,'o')
for j=1:n-1
for i=1:4
s(i)=c(j,i);
end
disp(strcat('p',num2str(j),'=',poly2str(s,'t')));
end
I=0;
for i=1:n-1
I=I+c(i,1)*(x(i+1)^4-x(i)^4)/4+c(i,2)*(x(i+1)^3-x(i)^3)/3+c(i,3)*(x(i+1)^2-x(i)^2)/2+c(i,4)*(x(i+1)-x(i));
end