✅ 操作成功!

平方根公式

发布时间:2023-06-04 作者:admin 来源:文学

平方根公式

平方根公式

-整改计划

2023年2月14日发(作者:导热微分方程)

牛顿迭代法求平方根

求n的平方根,先假设一猜测值X

0

=1,然后根据以下公式求出X

1

,再将X

1

代入

公式右边,继续求出X

2

…通过有效次迭代后即可求出n的平方根,X

k+1

(迭代公式)

简单推导

假设f(x)是关于X的函数:

求出f(x)的一阶导,即斜率:

简化等式得到:

然后利用得到的最终式进行迭代运算直至求到一个比较精确的满意值,为什么可以

用迭代法呢?理由是中值定理(IntermediateValueTheorem):

如果f函数在闭区间[a,b]内连续,必存在一点x使得f(x)=c,c是函数f在闭区间

[a,b]内的一点

我们先猜测一X初始值,例如1,当然地球人都知道除了1本身之外任何数的平方

根都不会是1。然后代入初始值,通过迭代运算不断推进,逐步靠近精确值,直到

得到我们主观认为比较满意的值为止。例如要求768的平方根,因为252=625,

而302=900,我们可先代入一猜测值26,然后迭代运算,得到较精确值:27.7128。

回到我们最开始的那个”莫名其妙”的公式,我们要求的是N的平方根,令x2=n,

假设一关于X的函数f(x)为:

f(X)=X2-n

求f(X)的一阶导为:

f'(X)=2X

代入前面求到的最终式中:

X

k+1

=X

k

-(X

k

2-n)/2X

k

化简即得到我们最初提到的那个求平方根的神奇公式了:

用泰勒公式推导

我之前介绍过在TheArtandScienceofC一书中有用到泰勒公式求平方根的算法,其

实牛顿迭代法也可以看作是泰勒公式(TaylorSeries)的简化,先回顾下泰勒公式:

仅保留等式右边前两项:

令f(X

0

+ε)=0,得到:

再令X

1

=X

0

0

,得到ε

1

…依此类推可知:

转化为:

引申

从推导来看,其实牛顿迭代法不仅可以用来求平方根,还可以求立方根,甚至更复

杂的运算。

同样,我们还可以利用pascal语言来实现下那个最简单的求平方根的公式(尽管我

们可以直接用sqrt()完成)

programasd(input,output);

var

a,x,n,i:real;

begin

writeln('Pleaseinputa!');

read(a);

x:=1;

n:=1000;

i:=1;

whilei<=ndo

begin

x:=(x+(a/x))/2;

i:=i+1;

end;

writeln(x:10:3);

readln;

end.

2007年赣州市信息学奥赛高中组上机测试题

第2题:编程求平方根(15分)

任给常数b,编程求b的算术平方根,要求准确到小数点后3位,注意不能调用高级语言

系统的开平方根函数。

输入输出样例:输入:b=7

输出:2.646

确定迭代关系式:x:=(x+(b/x))/2;

programasd(input,output);

var

a,x,n,i:real;

begin

writeln('Pleaseinputb!');

read(b);

x:=1;

n:=1000;

i:=1;

whilei<=ndo

begin

x:=(x+(b/x))/2;

i:=i+1;

end;

writeln(x:10:3);

readln;

end.

👁️ 阅读量:0