用迭代法求。求平方根的选代公式为
要求前后两次求出的x的差的绝对值小于10^-5。
#include <stdio.h>
//导入"math.h"头文件
#include "math.h"
int main() {
//pow()函数用来求x的y次方的值
//sqrt()函数求出原数值的开根号后的结果
float x1,x2,a;
float s = 0;
printf("请输入一个数字a:");
scanf("%f",&a);
x1 = sqrt(a);
x2 = (x1+a/x1)/2;
while(fabs(x1-x2) >= 1e-5){
x1 = x2;
x2 = (x1+a/x1)/2;
}
printf("此时的a是%5.2f,x2是%5.2f",a,x2);
return 0;
}
def square_root(n:int)->float:
""" f(x) = x^2 - n = 0,求该方程的根
"""
x0 = 1
for i in range(100):
x1 = x0 - (x0**2 - n)/(2*x0)
if x1 - x0 < 1e-20 and x1-x0> -1e-20:
print("total iterations: ", i+1)
break
x0 = x1
return x1