如何在matlab中调用和使用函数递归
how to call and use function Recursivity in matlab
我有一个用牛顿法计算的练习 y(x+1)=y(x)-f(x)/f'(x)
在这个函数中我需要 y(x) 并且为此我对 y(1) 和 y(2) 使用函数递归它工作因为 y(1 ) 有公式 y(1)=R*T/p
,为了保存 y(x) 我使用 zeros()
在计算 y(x+1) 时使用但是对于 x>2 我得到相同的答案,我错过了什么??我可以使用而不是 zeros() 来保存和访问 newt(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;
根据@patrik的指导,我找到了答案
f=@(v)p*v^4-R*T*v^3-beta*v^2-gamma*v-delta;
f1=@(v)4*p*v^3-3*R*T*v^2-2*beta*v-gamma;
我有一个用牛顿法计算的练习 y(x+1)=y(x)-f(x)/f'(x)
在这个函数中我需要 y(x) 并且为此我对 y(1) 和 y(2) 使用函数递归它工作因为 y(1 ) 有公式 y(1)=R*T/p
,为了保存 y(x) 我使用 zeros()
在计算 y(x+1) 时使用但是对于 x>2 我得到相同的答案,我错过了什么??我可以使用而不是 zeros() 来保存和访问 newt(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;
根据@patrik的指导,我找到了答案
f=@(v)p*v^4-R*T*v^3-beta*v^2-gamma*v-delta;
f1=@(v)4*p*v^3-3*R*T*v^2-2*beta*v-gamma;