matlab这个代码怎么写? 5

 我来答
小菜鸟2无聊写代码
2021-08-26 · TA获得超过1058个赞
知道小有建树答主
回答量:932
采纳率:87%
帮助的人:161万
展开全部

使用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;

代码如图,24行

第一次运行,迭代收敛太快,远未π

于是做了一点修改,手工指定了迭代次数为8,并调高了精度。

调整的代码如图

结果如上

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式