Matlab - Spline cúbico Matlab

 
Vista:

Spline cúbico Matlab

Publicado por Yhoana (3 intervenciones) el 13/01/2016 20:08:05
Buena tarde

Actualmente estoy trabajando con el algoritmo para el calculo de los coeficientes del polinomio del spline cubico que se encuentra en la siguiente ruta https://www.dspace.espol.edu.ec/bitstream/123456789/20886/1/ANALISIS%20NUMERICO%20BASICO.pdf, sin embargo, al ejecutarlo me sale el siguiente error´y no se como solucionarlo. Agradezco su colaboración

??? Undefined function or method 'tridiagonal' for input arguments of type 'double'.

Error in ==> trazador at 25
u=tridiagonal(A,B,C,D);

El código es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function [a,b,c,d]=trazador(x,y,z)
%Trazador Cúbico Natural: a(i)(x-x(i))^3+b(i)(x-x(i))^2+c(i)(x-x(i))+d(i),
%n>3
%z es opciona: es el vector de puntos para evaluar el trazador
%Entrega puntos del trazador o los coeficientes de los polinomios
%segmentarios
n=length(x);
clear A B C D;
if n<4
    return
end
for i=1:n-1
    h(i)=x(i+1)-x(i);
end
s(1)=0;
s(n)=0;
B(1)=2*(h(1)+h(2));
C(1)=h(2);
D(1)=6*((y(3)-y(2))/h(2)-(y(2)-y(1))/h(1))-h(1)*s(1);
for i=2:n-3           % Sistema tridiagonal para obtener S
    A(i)=h(i);
    B(i)=2*(h(i)+h(i+1));
    C(i)=h(i+1);
    D(i)=6*((y(i+2)-y(i+1))/h(i+1)-(y(i+1)-y(i))/h(i));
    u=tridiagonal(A,B,C,D);
end
A(n-2)=h(n-2);
B(n-2)=2*(h(n-2)+h(n-1));
D(n-2)=6*((y(n)-y(n-1))/h(n-1)-(y(n-1)-y(n-2))/h(n-2))-h(n-1)*s(n);
for i=2:n-1
    s(i)=u(i-1);
end
for i=1:n-1        %Coeficientes del trazador cúbico natural
    a(i)=(s(i+1)-s(i))/(6*h(i));
    b(i)=s(i)/2;
    c(i)=(y(i+1)-y(i))/h(i)-(2*h(i)*s(i)+h(i)*s(i+1))/6;
    d(i)=y(i);
end
if nargin ==3       %Puntos del trazador cúbico natural 
    p=[];
    m=length(z);
    for k=1:m
        t=z(k);
        for i=1:n-1
            if t>=x(i) && t<=x(i+1)
                p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
            end
        end
    end
    if m>1
        k=m;i=n-1;
        p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
    end
    clear a b c d;
    a=p;
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder