function [cc,rootx,rooty,x2] = secant_mlist(func,x0,x1) %secant_method function
c = 0; cc=[];
rootx=[]; rooty=[];
y0 = feval(func,x0);
y1 = feval(func,x1);
x2 = x0-(y0*(x1-x0))/(y1-y0); %두점(x0,x1)을 지나는 직선의 해
y2 = feval(func,x2); %본 함수에 x2를 대입해서 나온 결과
fprintf('Func-count x f(x) Procedure\n');
fprintf('%d %f %f secant_method\n',c,x2,y2);
while abs(y2) < 1e-4 %tols = 1e-4
x0 = x1; y0 = y1; x1 = x2; y1 = y2; %x0,y0를 밀어내고 x1,x2를 이용해
x2 = x0-(y0*(x1-x0))/(y1-y0); %다시 위과정을 반복
y2 = feval(func,x2);
c=c+1; cc(1,c) = c+1;
rootx(1,c) = x2; rooty(1,c) = y2;
end
fprintf('%d %f %f secant_method\n',cc,rootx,rooty);
원 함수가 이러한데요 그중에
c = 0; cc=[];
rootx=[]; rooty=[];
이렇게 초기에 0행렬 3개를 잡고,
c=c+1; cc(1,c) = c+1;
rootx(1,c) = x2; rooty(1,c) = y2;
요렇게 while 문 안에서 하나하나 차곡차곡 채워넣고 루프 밖에서 출력하는 방식을 쓸려고 하는데 결과값이 전부 []으로 출력되네요.
구조상 맞는것 같은데 무슨 문제일까요?; 초기0행렬이랑 행렬에 하나하나 채워넣는부분을 제외하곤 맞게 돌아갑니다. (즉 필요한 secant method 해는 등장합니다.)
멍하니 이거만 붙잡고 2시간째네요 에고.