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;
함수에 대한 호출 사이에 메모리에 보존 된 값의 영구 변수와 값을 정의 할 수 있습니다. – User1551892
@ User1551892 엉망을 만드는 경향이 있으므로이 방법은 권장하지 않습니다. 일반적인 주장을 사용하는 것이 좋습니다. 어쨌든 질문에 관하여; 나는 Newtons 방법이 잘못 구현되었다고 믿는다. 변수'x'는 마지막 반복의 결과에 기초하여 반복적으로 갱신 될 필요가 있습니다. 함수 핸들을 사용하고 함수에 대한 입력을 시도하십시오. 이렇게하면 단일 MATLAB 함수를 사용하여 대부분의 연속 함수에 대해 0을 계산할 수 있습니다. – patrik
@patrik 다른 함수를 정의한다는 것을 의미합니까? 코드에서 나를 보여줄 수 있습니까 ?? – isan