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);
이렇게 오류가 뜨네요.. 아무리 다 찾아봐도 저 위쪽 라인에서 인덱스 어떤게 오류인지 모르겠는데 고수님들 부탁드립니다 ㅠㅠ
해당 댓글은 삭제되었습니다.
지금 몇시간째 다 뒤져보고있는데 머리가 터질거같아여..ㅠㅠ