Python 手工计算x的算术平方根,一个中国古代的数学成就_咋个手算sprt n(2)

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    else: ret += 'e-0'+str(power//2)[1:]
if Float: ret = float(ret)
return ret

### 测试


#### sqrt(n)与n\*\*0.5



for i in range(17):
print(f’sqrt({i})={sqrt(i)}‘)
print(f’{i}0.5={i0.5}')

sqrt(0)=0.0
00.5=0.0
sqrt(1)=1.0
1
0.5=1.0
sqrt(2)=1.41421356237309504880
20.5=1.4142135623730951
sqrt(3)=1.73205080756887729352
3
0.5=1.7320508075688772
sqrt(4)=2.0
40.5=2.0
sqrt(5)=2.23606797749978969640
5
0.5=2.23606797749979
sqrt(6)=2.44948974278317809819
60.5=2.449489742783178
sqrt(7)=2.64575131106459059050
7
0.5=2.6457513110645907
sqrt(8)=2.82842712474619009760
80.5=2.8284271247461903
sqrt(9)=3.0
9
0.5=3.0
sqrt(10)=3.16227766016837933199
100.5=3.1622776601683795
sqrt(11)=3.31662479035539984911
11
0.5=3.3166247903554
sqrt(12)=3.46410161513775458705
120.5=3.4641016151377544
sqrt(13)=3.60555127546398929311
13
0.5=3.605551275463989
sqrt(14)=3.74165738677394138558
140.5=3.7416573867739413
sqrt(15)=3.87298334620741688517
15
0.5=3.872983346207417
sqrt(16)=4.0
16**0.5=4.0

sqrt(2,Float=True) == 20.5
True
sqrt(3,Float=True) == 3
0.5
True
sqrt(123,Float=True) == 123**0.5
True


#### 科学计算法测试



sqrt(1.23e+50)
‘1.10905365064094171620e+025’
1.23e+500.5
1.1090536506409416e+25
sqrt(1.23e+51)
‘3.50713558335003638336e+025’
1.23e+51
0.5
3.5071355833500364e+25
sqrt(1.23e-50)
‘1.10905365064094171620e-025’
1.23e-500.5
1.1090536506409418e-25
sqrt(1.23e-51)
‘3.50713558335003638336e-026’
1.23e-51
0.5
3.5071355833500365e-26


#### 精度测试



sqrt(2,100)
‘1.41421356237309504880168872420969807856967187537694
80731766797379907324784621070388503875343276415727’
sqrt(10,500)
‘3.16227766016837933199889354443271853371955513932521
68268575048527925944386392382213442481083793002951
87347284152840055148548856030453880014690519596700
15390334492165717925994065915015347411333948412408
53169295770904715764610443692578790620378086099418
28371711548406328552999118596824564203326961604691
31433612894979189026652954361267617878135006138818
62785804636831349524780311437693346719738195131856
78403231241795402218308045872844614600253577579702
82864402902440797789603454398916334922265261206779’
sqrt(123,2000)
‘11.09053650640941716205160010260993291846337674245402
00228773128390850016331012896052334560795952104923
97609680678955280792187905933115292625456231839306
77251943912251383176574941199469582196976000438135
40867472202696805822192936674286399297485980945076
78295660716567970352602444301464684924479636459099
14867193001802834979182445692668356613065880869548
25999929108256938950212808340223106891096223696155
58407975630369894453553840958193501976809032496435
98351605065147790119568667920441106521130541775416
88403618227856731042118992185281429619080341919784
91236339758444278806715795552342614568993355758259
00257454016962686033789212494918951906742724387717
86816775058970553110606825772728456503631816127185
97236514403953501043370950197906664648656587402375
47456007486620199478701365589929806411967684259454
52983826062182085142259698311212942126801021825240
49746216571370198706996668818361845968235199845816
69902568378075870406180767774203205467306930309438
16832697339952984981648138573158982379175644441470
50866454616067044997958059525209028336061119869487
42330123683852090419874148218422184948658174234109
57266920859313915279433828848348895422861007776818
60008218306382698626583716405660864687800252861028
31434598682004467042622580768146827595778429365752
19552960734589394860581552514632178318401717998004
12904477515916582731378709757426533231624676879051
21277303475419893966421915682962327965202183939540
07041575389626966661084388718863067485822881867488
00698329255619212758441301451712107894934052042668
13620261632356745839351541875140890682676375675084
74266141686980135645708807796240849684849035273656
15026469136389861472142022294507047846522584450886
83823021978858519029304962564972861464819539784518
43062402845984165814550404820570869649363216162428
32571582506529019502195720558586845830492641836612
65156560044594234298289454649568716622838760718998
14917847213523793754337786561375901264942957378010
57481468928695787589958271831183026476218342365982
72020291818311722410861264031411990033164594115086’


**会被python强制转科学计数法的数建议用字符串形式:**



12345679801234567890.123
1.2345679801234567e+19
sqrt(‘12345679801234567890.123’,30)
‘3513641956.892387732139011965897613363716’
sqrt(12345679801234567890.123,30)
‘3.513641956892387605472292516306e+09’
sqrt(1.2345679801234567e+19,30)
‘3.513641956892387605472292516306e+09’


#### 1000位到1万位的耗时测试



from time import time
for i in range(1,11):
t = time()
s = sqrt(2,i1000)
print(i
1000,‘:’,time()-t)

1000 : 0.09099745750427246
2000 : 0.5609970092773438
3000 : 1.7489948272705078
4000 : 3.7850000858306885
5000 : 7.239997863769531
6000 : 12.108997106552124
7000 : 19.044997692108154
8000 : 28.065003395080566
9000 : 39.57198643684387
10000 : 54.04999876022339


——END——


### 其他方法


#### 牛顿迭代法


牛顿迭代法的思想就是在一条曲线上从某一点的切线开始,首先求其与横轴的交点,之后再确定曲线上和该交点横坐标相同的点,并重复求该点的切线与横坐标的交点的方式,不断逼近真实解的过程。网上相关的讲解很多,我这里就简单总结一下牛顿迭代法的步骤:


        1.确定需要求解的函数y=f(x),在求平方根中该函数为f(x)=x\*x-c;


        2.假设给定初始点的横坐标为x0,则其对应的切线方程为Q(x)=f '(x0)\*(x-x0) + f(x0),在求平方根的算法中该切线方程为Q(x) = 2\*x0\*(x - x0) + x0\*x0-c;


        3.根据切线方程与横坐标的交点得到下一个迭代点的横坐标,若前一迭代点的横坐标记为Xn,则下一迭代点的横坐标记为Xn+1,令第二条中的x0=Xn,Q(x)  = 0可以得到Xn+1的表达式:


        Xn+1 = (c/Xn + Xn) / 2



def newton_sqrt(n):
x = n
y = (x + n / x) / 2
while(x - y > 0.00001):
x = y
y = (x + n / x) / 2
return x

print(newton_sqrt(9))

print(newton_sqrt(10))
print(10**0.5)


**输出:**


3.000000001396984  
 3.162277665175675  
 3.1622776601683795



#### 二分法


二分法的理论基础是零点存在定理。先确定零点所在的区间范围[a,b](区间范围端点值异号),通过不断缩小这个区间范围,达到逐渐逼近最终解的目的。而缩小区间范围的方法就是取[a,b]的中点m,判断f(m)的正负号与f(a)、f(b)的关系,改变a的值(f(b)\*f(m)<0)或者b的值(f(a)\*f(m)<0)为m,每次缩减一半的解空间。循环上述操作,直到最终的范围小于所给的精度范围。



def binary_sqrt(n):
low = 0
high = n
while low <= high:
mid = (low + high) / 2
if mid * mid == n:
return mid
elif mid * mid > n:
high = mid - 0.000001
else:
low = mid + 0.000001
return mid

print(binary_sqrt(9))

print(binary_sqrt(10))
print(10**0.5)


**输出:**


3.0000000242946148  
 3.162277569391012  


**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

![img](https://img-blog.csdnimg.cn/1d40facda2b84990b8e1743f5487d455.png)  
![img](https://img-blog.csdnimg.cn/0fc11d4a31bd431dbf124f67f1749046.png)

**二、Python必备开发工具**

工具都帮大家整理好了,安装就可直接上手!![img](https://img-blog.csdnimg.cn/ff266f529c6a46c4bc28e5f895dec647.gif#pic_center)

**三、最新Python学习笔记**

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

![img](https://img-blog.csdnimg.cn/6d414e9f494742db8bcc3fa312200539.png)

**四、Python视频合集**

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

![img](https://img-blog.csdnimg.cn/a806d9b941c645858c61d161aec43789.png)

**五、实战案例**

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。![img](https://img-blog.csdnimg.cn/a353983317b14d3c8856824a0d6186c1.png)

**六、面试宝典**

![在这里插入图片描述](https://img-blog.csdnimg.cn/97c454a3e5b4439b8600b50011cc8fe4.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/111f5462e7df433b981dc2430bb9ad39.png)

###### **简历模板**![在这里插入图片描述](https://img-blog.csdnimg.cn/646863996ac44da8af500c049bb72fbd.png#pic_center)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值