2016-08-04 5 views
0

나는이 함수에서 y(x+1)=y(x)-f(x)/f'(x)을 계산한다. 나는 y (x)가 필요하다. 그리고이 함수를 사용한다. y (1)에 대한 재귀가 & y (2)이다. y (x + 1)를 계산할 때 zeros()을 사용하지만 x> 2 인 경우 동일한 대답을 얻습니다. 무엇이 없습니까? 무엇을 대신 사용할 수 있습니까? @patrik 지침에 따라 (X-1)함수를 호출하고 사용하는 방법

function y= newt(x) 
%define beta,gamma,delta,....there 
y(1)=R*T/p; 
answ=zeros(1,20); 
z=0; 
if x==1 
    f=(R*T*y(1)^3)+(beta*y(1)^2)+(gamma*y(1))+delta-(p*y(1)^4);   
    f1=(3*y(1)^2*R*T)+(2*y(1)*beta)+gamma+(4*p*y(1)^3);   
    answ(1) = y(1); 
    fprintf('n=1 v=%f\n',y(1));  
else 
    y=newt(x-1); 
    f=(R*T*y^3)+(beta*y^2)+(gamma*y)+delta-(p*y^4); 
    f1=(3*y^2*R*T)+(2*y*delta)+gamma+(4*p*y^3); 
    z=y-f/f1 
    answ(1,2:x)=z; 
end 
    answ(1) = y(1); 
    answ(1,2:x)=z; 
+0

함수에 대한 호출 사이에 메모리에 보존 된 값의 영구 변수와 값을 정의 할 수 있습니다. – User1551892

+0

@ User1551892 엉망을 만드는 경향이 있으므로이 방법은 권장하지 않습니다. 일반적인 주장을 사용하는 것이 좋습니다. 어쨌든 질문에 관하여; 나는 Newtons 방법이 잘못 구현되었다고 믿는다. 변수'x'는 마지막 반복의 결과에 기초하여 반복적으로 갱신 될 필요가 있습니다. 함수 핸들을 사용하고 함수에 대한 입력을 시도하십시오. 이렇게하면 단일 MATLAB 함수를 사용하여 대부분의 연속 함수에 대해 0을 계산할 수 있습니다. – patrik

+0

@patrik 다른 함수를 정의한다는 것을 의미합니까? 코드에서 나를 보여줄 수 있습니까 ?? – isan

답변

관련 문제