matlab这个代码怎么写? 5
使用matlab计算该递推数列,需要要符号计算symbolic toolbox以提高计算精度,从而实现数值方法。对于精度,取|pₙ₊₁-pₙ|<ε为迭代终止条件,计算过程为:依次计算aₙ,bₙ,cₙ,sₙ,pₙ,并检查|pₙ-pₙ₋₁|<ε,一符合即结束循环,代码如下:
digits(30);
ab0=[sym(1) ,sym(1/2)^0.5 sym(0)];
r=@(x)(x(1:end-1));
n=@(x)(x(end));
abab=@(t)([mean(r(t)) prod(r(t))^0.5 n(t)+1]);
ab1=abab(ab0);
c=@(t)(sum((r(t).^2).*[1 -1]));
s0=sym([1]);
ss=@(t,x)(t-c(x).*2*2^n(x));
s1=ss(s0,ab1);
ee=sym(10e-19);
p=@(ab,s)(sum(r(ab)).^2/4/s);
p0=p(ab0,s0);
p1=p(ab1,s1);
pold=1000;
while abs(pold-p1)>=ee;
fprintf('p(%d)=',n(ab1));
disp(vpa(p1,29));
ab1=abab(ab1);
s1=ss(s1,ab1);
pold=p1;
p1=p(ab1,s1);
end;
于是做了一点修改,手工指定了迭代次数为8,并调高了精度。