CPU|C语言-迭代平方根

CPU|C语言-迭代平方根


①源程序
#include<srdio.h>
main()
/*定义变量类型 。 */
{double ax0x1;
printf(\"求一个实数a的平方根x1\\");
/*do-while循环:
满足条件 a<=0时 , 执行循环输入实数a 。 不满足条件a<=0时 , 退出循环 , 即保证了a>0 。 */
do
scanf(\"%lf\"&a);
while(a<=0);
/*赋初值给x1 。 */
x1=a/2.0;
/*do-while 循环:
满足条件(>误差1e-6)时 , 则继续循环迭代 。
不满足条件(>误差1e-6)时 , 则停止循环迭代 。
*/
do
{x0=x1;
x1=(x0+a/x0)/2.0;
/*平方根迭代公式 , 用牛顿迭代法求得 。 */
while((x1-x0)>1e-6||(x1-x0)<-1e-6);
/*迭代误差为1e-6 , 即e的负6次方 , 约等于2.71821的负6次方为0.000001 。 */
printf(\"%f的平方根是%\\"ax1);

~
②牛顿迭代法
曲线:y=f(x1)
曲线外一点:(x0f(x0))
过点做曲线切线切线的斜率:
f'(x1)=(y-f(x0))/(x1-x0)
当y=f(x1)=x1^2即为平方函数时:
2x1=(x1^2-x0^2)/(x1-x0)
2x1^2-2x1x0=x1^2-x0^2
x1^2-2x1x0=-x0^2
x1^2+x0^2=2x1x0
a+x0^2=2x1x0
x1=(x0+a/x0)/2
【CPU|C语言-迭代平方根】即求得平方根迭代公式 。