2017-11-27 18 views
0

저는 루트 검색을위한 고정 소수점 방법을 구현하고 있습니다. 다음은 코드입니다.Matlab - 함수 : 변수 벡터를 반환합니다.

clear; 
clc; 

f = inline('y^4 - 2', 'y'); 
phii = inline('y - (y^4 -2)/(4*(y^3))', 'y'); 
x0 = 4; 
toler = 10^-10; 
nmax = 1000; 

a = fixpoint(x0,toler,nmax,f,phii) 

function[alpha,res,iters] = fixpoint(x_0,tol,max_iters,fun,phi) 

    error = tol +1; 
    iters = 0; 
    xvect = x_0; 
    x = x_0; 
    res = fun(x); 
    xdif = []; 

    while iters < max_iters & error > tol 
     iters = iters +1; 
     x_n = phi(x); 
     error = abs(x_n - x); 
     xdif = [xdif; error]; 
     x = x_n; 
     xvect = [xvect;x]; 
     res = [res;fun(x)]; 
    end 
    alpha = xvect(end); 
    residual = res(end); 
    return 
end 

이 방법은 정상적으로 작동합니다. 내가 가지고있는 유일한 문제는 alpha, res (마지막 엔트리가 중요도의 나머지이지만 모든 값이 필요한 벡터) 및 반복의 세 가지를 모두 반환해야한다는 것입니다.

현재 알파 만 반환됩니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

1
[alpha,res,iters] = fixpoint(x0,toler,nmax,f,phii) 

여기에 return은 필요하지 않습니다.