Sie sind auf Seite 1von 4

function [Tabla2] = DiferenciacionNumericaTabla(X,Y)

%Código para Seccionado de Datos en Pares e Impares Suponiendo que de


esta
%manera se logre un espaciado equitativo.
M = length(X);
Tabla = [X;Y];
Token = M/2;
Token2 = Token;
Token = ceil(Token);
Datos1 = zeros(1,Token);
Datos2 = zeros(1,Token-1);
Datos3 = zeros(1,Token);
Datos4 = zeros(1,Token-1);

if isreal(Token2) && rem(Token2,1)==0 %Si se cumple esta condición


entonces el número es entero y par.
for i=1:Token
Datos1(1,i) = X(2*i-1);
[~,col] = find(Tabla==Datos1(1,i));
Datos3(1,i) = Tabla(2,col(1,1));
Datos2(1,i) = X(2*i);
[~,col] = find(Tabla==Datos2(1,i));
Datos4(1,i) = Tabla(2,col(1,1));
end
else %Para numero no entero e impar.
for i=1:Token
Datos1(1,i) = X(2*i-1);
[~,col] = find(Tabla==Datos1(1,i));
Datos3(1,i) = Tabla(2,col(1,1));
end

for i=1:Token-1;
Datos2(1,i) = X(2*i); %Solamente Contiene los Valores de x.
[~,col] = find(Tabla==Datos2(1,i));
Datos4(1,i) = Tabla(2,col(1,1));
end
end
%Código para Determinación de Fórmulas a Utilizar y Calculo Numérico.
L = length(Datos1);
H = Datos1(2)-Datos1(1);

%Solamente para Datos1


DerX01 = zeros(1,L);
if L >= 3 && L < 5
for i=1:L
if i==1
%Forward-Difference Three-Point Formula
Val = ((1)/(2*H))*(-3*Datos3(i)+4*Datos3(i+1)-Datos3(i
+2));
DerX01(1,i) = Val;
elseif i > 1 && i < L
%Three-Point Midpoint Formula

1
Val = ((1)/(2*H))*(Datos3(i+1)-Datos3(i-1));
DerX01(1,i) = Val;
elseif i==L
%Backward-Difference Three-Point Formula
Val = ((1)/(2*H))*(3*Datos3(i)-4*Datos3(i-1)+Datos3(i-2));
DerX01(1,i) = Val;
end
end
elseif L > 0 && L <= 2
for i=1:L
if i==1
Val = (Datos3(i+1)-Datos3(i))/(H);
DerX01(1,i) = Val;
elseif i==2
Val = (Datos3(i)-Datos3(i-1))/(H);
DerX01(1,i) = Val;
end
end
elseif L >= 5
for i=1:L
if i==1
%Forward-Difference Five-Point Formula
Val = ((1)/(12*H))*(-25*Datos3(i)+48*Datos3(i
+1)-36*Datos3(i+2)+16*Datos3(i+3)-3*Datos3(i+4));
DerX01(1,i) = Val;
elseif i==2
%Three-Point Midpoint Formula
Val = ((1)/(2*H))*(Datos3(i+1)-Datos3(i-1));
DerX01(1,i) = Val;
elseif i >= 3 && i < (L-1)
%Five-Point Midpoint Formula
Val = ((1)/(12*H))*(Datos3(i-2)-8*Datos3(i-1)+8*Datos3(i
+1)-Datos3(i+2));
DerX01(1,i) = Val;
elseif i==(L-1)
%Three-Point Midpoint Formula
Val = ((1)/(2*H))*(Datos3(i+1)-Datos3(i-1));
DerX01(1,i) = Val;
elseif i==L
%Backward-Difference Five-Point Formula
Val = ((1)/(12*H))*(-25*Datos3(i)+48*Datos3(i
+1)-36*Datos3(i+2)+16*Datos3(i+3)-3*Datos3(i+4));
DerX01(1,i) = Val;
end

end

end

%----------------------------------------------------------------------------------
%Solamente para Datos2
M = length(Datos2);
H2 = Datos2(2)-Datos2(1);

2
DerX02 = zeros(1,M);
if M >= 3 && M < 5
for i=1:M
if i==1
%Forward-Difference Three-Point Formula
Val = ((1)/(2*H2))*(-3*Datos4(i)+4*Datos4(i+1)-Datos4(i
+2));
DerX02(1,i) = Val;
elseif i > 1 && i < M
%Three-Point Midpoint Formula
Val = ((1)/(2*H2))*(Datos4(i+1)-Datos4(i-1));
DerX02(1,i) = Val;
elseif i==M
%Backward-Difference Three-Point Formula
Val = ((1)/
(2*H2))*(3*Datos4(i)-4*Datos4(i-1)+Datos4(i-2));
DerX02(1,i) = Val;
end
end
elseif M > 0 && M <= 2
for i=1:M
if i==1
Val = (Datos4(i+1)-Datos4(i))/(H2);
DerX02(1,i) = Val;
elseif i==2
Val = (Datos4(i)-Datos4(i-1))/(H2);
DerX02(1,i) = Val;
end
end
elseif M >= 5
for i=1:M
if i==1
%Forward-Difference Five-Point Formula
Val = ((1)/(12*H2))*(-25*Datos4(i)+48*Datos4(i
+1)-36*Datos4(i+2)+16*Datos4(i+3)-3*Datos4(i+4));
DerX02(1,i) = Val;
elseif i==2
%Three-Point Midpoint Formula
Val = ((1)/(2*H2))*(Datos4(i+1)-Datos4(i-1));
DerX02(1,i) = Val;
elseif i >= 3 && i < (M-1)
%Five-Point Midpoint Formula
Val = ((1)/(12*H2))*(Datos4(i-2)-8*Datos4(i-1)+8*Datos4(i
+1)-Datos4(i+2));
DerX02(1,i) = Val;
elseif i==(M-1)
%Three-Point Midpoint Formula
Val = ((1)/(2*H2))*(Datos4(i+1)-Datos4(i-1));
DerX02(1,i) = Val;
elseif i==M
%Backward-Difference Five-Point Formula
Val = ((1)/
(12*H2))*(25*Datos4(i)-48*Datos4(i-1)+36*Datos4(i-2)-16*Datos4(i-3)+3*Datos4(i-4));
DerX02(1,i) = Val;

3
end

end

end

%Código para Ordenar Datos.


Part1 = [Datos1;DerX01];
Part2 = [Datos2;DerX02];
Part3 = [Part1,Part2];
[~,I]=sort(Part3(1,:));
Tabla2=Part3(:,I);

end

Error using DiferenciacionNumericaTabla (line 4)


Not enough input arguments.

Published with MATLAB® R2015a

Das könnte Ihnen auch gefallen