代码错误,计算sqrt(a)的方法

问题描述 投票:0回答:1

[一种计算sqrt(a),a> 0的方法是

X(n+1) = (a + (X(n)*X(n-1))/(X(n)+X(n-1)), n = 1, 2, …,

具有X0=1X1=a(即,已知lim n-> infin of Xn = sqrt(a)] >>

编写实现此计算的函数[sqa, nitr] = mySqrt(a)。该函数应使用while循环,当Xn + 1与Xn之差变得小于eps(10*a)时终止,并在sqa中输出Xn + 1并在[[ C0]。测试nitr的功能。

我已经写了这个,但是没用

a = 103041

我收到错误:

function [sqa, nitr] = mySqrt (a)
%[sqa, nitr] = mySqrt (a)
% computes square root of a 
% sqa = a;
sqaprev = a;
nitr = 0;
X(n+1) = (a + (X(n)*X(n-1))/(X(n)+X(n-1))); %find the second term
sqa= X(n+1)
while abs (sqaprev-sqa) >= eps (10*a)
    sqaprev = sqa;
    sqa = (1/2) *(sqaprev+ (a/sqaprev));
    nitr = nitr + 1;
end %while
end

有人可以帮我吗?

计算sqrt(a)的一种方法,a> 0是X(n + 1)=(a +(X(n)* X(n-1))/(X(n)+ X(n -1)),n = 1,2,…,且X0 = 1且X1 = a(即,已知lim n-> Xn的无穷大= sqrt(a)...

matlab numerical-methods
1个回答
0
投票

您应该先声明变量并为其赋值


0
投票

根据您提出的平方根算法,您可以尝试下面的代码

© www.soinside.com 2019 - 2024. All rights reserved.