function x = Spline(A,b)

n = size(A,1);

for i = 2:n

    A(i,i) = A(i,i)-A(i,i-1)/A(i-1,i-1)*A(i-1,i);

end

for i = 2:n

    b(i) = b(i)-A(i,i-1)/A(i-1,i-1)*b(i-1);

end

x(n) = b(n)/A(n,n);

for i = n-1:-1:1

    x(i) = (b(i)-A(i,i+1)*x(i+1))/A(i,i);

end


이렇게 함수를 하나 만들어서


x = [2 3 4 5 6 7 8];

y = [4.8 9.4 19.2 36.6 58 13.8 158.4];

n = size(x,1)-1;

h = zeros(n,1);

F = zeros(n,1);

A = zeros(n-1,n-1);

b = zeros(n-1,1);

for i = 1:n

    h(i,1) = x(i+1)-x(i);

    F(i) = (y(i+1)-y(i))/h(i);

end

for i = 1:n-1

    A(i,i) = 2*(h(i)+h(i+1));

    b(i) = 6*(F(i+1)-F(i));

end

for i = 1:n-2

    A(i,I+1) = h(i+1);

    A(i+1,i) = h(i+1);

end

r = zeros(n+1,1);

r(1) = 0;

r(n+1) = 0;

xx = Spline(A,b);

for i = 2:n

    r(i) = xx(i-1);

end

a = zeros(n,1);

b = zeros(n,1);

c = zeros(n,1);

for i = 1:n

    a(i) = (r(i+1)-r(i))/(6*h(i));

    b(i) = r(i)/2;

    c(i) = -(2*h(i)*r(i)+h(i)*r(i+1))/6+F(i);

end

xp = input('xp = ');

for i = 1:n

    if x(1)>xp

        fprintf('x가 범위 밖입니다.');

        return

    end

    if x(n+1)

        fprintf('x가 범위 밖입니다.');

        return

    end

    if x(i)

        if x(i+1)>xp

            yp = a(i)*(xp-x(i))^3+b(i)*(xp-x(i))^2+c(i)*(xp-x(i))+y(i);

            fprintf('yp의 값은 %f 입니다.',yp)

            return

        end

    end

end


이렇게 코딩을 짯는데


배열 인덱스는 양의 정수이거나 논리값이어야 합니다.


오류 발생: Spline (line 9)

x(n) = b(n)/A(n,n);


오류 발생: 63 (line 23)

xx = Spline(A,b);


이렇게 오류가 뜨네요.. 아무리 다 찾아봐도 저 위쪽 라인에서 인덱스 어떤게 오류인지 모르겠는데 고수님들 부탁드립니다 ㅠㅠ