计算根号(a)的代码错误

2次浏览(过去30天)
阿纳斯塔西娅今天
阿纳斯塔西娅今天 2020年2月25日
回答: “止Aleti 2020年2月28日
计算平方(a)的方法之一,是>0
X (n + 1) = (a + X (X (n) * (n - 1) / (X (n) + X (n - 1)), n = 1, 2,…,和X0 = 1 X1 =(也就是说,众所周知,lim n - > infin Xn =√6 (a)
写一个函数[sqa, nitr] = mySqrt(a)来实现这个计算。该函数应使用while循环,当Xn+1与Xn之间的差值小于eps(10*a)时终止,并在sqa中输出Xn+1,在nitr中输出while循环终止时的n值。测试函数a = 103041
我写过这个,但它不起作用
函数[sqa, nitr] = mySqrt (a)
%[sqa, nitr] = mySqrt (a)
%计算a的平方根
% sqa = a;
Sqaprev = a;
Nitr = 0;
X(n+1) = (a + (X(n)*X(n-1))/(X(n)+X(n-1)));找到第二项
sqa = X (n + 1)
Abs (sqaprev-sqa) >= eps (10*a)
Sqaprev = sqa;
Sqa = (1/2) *(sqaprev+ (a/sqaprev));
Nitr = Nitr + 1;
结束%,而
结束
4评论
亚当
亚当 2020年2月25日
当你有一个序列,其中下一项是根据前一项定义的,你必须以某种方式初始化第一项,否则第一项就没有前一项了,才能让整个序列继续下去。在你的例子中,你的下一项是基于前两项的,这就是为什么你在问题中得到了序列的前两项,这样你就可以循环增加n并引用前两项,如果你插入它们,例如,它们就会存在。
X = [0 a];

登录评论。

答案(1)

“止Aleti
“止Aleti 2020年2月28日
你可能需要 初始化变量"sqaprev", "sqa",如下所示:
函数[sqa, nitr] = mySqrt (a)
Sqaprev = 0;
sqa =一个;
Nitr = 0;
Abs (sqaprev-sqa) >= eps (10*a)
Sqaprev = sqa;
Sqa = (1/2) *(sqaprev+ (a/sqaprev));
Nitr = Nitr + 1;
结束
结束

类别

了解更多轮廓图帮助中心而且文件交换

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!