python 三次根号_开3次方根(多次方根)的代码:二分法,python

基本问题:

给出n值,求其对应的三次方根

d1cb7629d491f9846831bc95062b6684.png的值(该问题可以扩展到多次方根

5bc259978fdd73c348d1ceabd32b7a95.png的值)

解决思路:

该问题的解决思路可以有两个:

1)类比于在一堆数列里找某一个符合条件的值x,条件为:

0036a615867feb7550718cbed51e7a22.png,可想而知,最常用的搜索方法为二分法。

其基本思路为:假设n=7

step1: 7/2=3.5;

b1743aa6fcc31544641e66fa85ac0c55.png=42.875>7;

step2: 3.5/2= 1.75;

ce5e690eb66668f4d5cd451b85eaa4ae.png=5.359<7;

step3: (1.75+3.5)/2=2.625;

865f5b82d7572c2496612687a323aaa1.png=18.088>7;

step4: (1.75+2.625)/2=2.1875;

fcdee51f6469e4bef2de30a82a8faa19.png=10.47>7

.....

stepn: 通过二分法,不断逼近

0036a615867feb7550718cbed51e7a22.png,达到最终解。

通过low,high,middle 三个变量进行控制。python代码如下:

# 通过二分法求n的三次方根的值

def cube_root(n):

if(n<0):

temp=-n

else: temp=n

precision=0.0000001

low=0

high= temp/2

while(abs(high*high*high-temp)>precision):

if(high*high*high>temp):

high=high-(high-low)/2

elif(high*high*high

运行结果为:d6350a6832555c3c3783103d7b2286bb.png....... (未完还有)

2)使用牛顿迭代进行推导。

牛顿迭代求解这些问题是非常快的,牛顿迭代法顾名思义当然是迭代法的一种,所谓迭代法顾名思义就是重复地进行某种运算。进行到何时为止全凭个人好恶,但是理想情况下应该是计算的次数越多离真正的解就越近 [1]。

但最近看一篇知乎文章里面说,文章链接在参考文献 [2] 中。ps.该文章对牛顿迭代讲解非常清楚,并且有图解释。

4021e86120102261d67fd50762b2bc07.png

特注明:在此引用的知乎内容,无恶意,若作者不希望被引用,联系我则删

参考文献:

[1] 如何通俗易懂地讲解牛顿迭代法求开方?数值分析? - 鍵山小鞠的回答 - 知乎

https://www.zhihu.com/question/20690553/answer/564405611

[2] 如何通俗易懂地讲解牛顿迭代法求开方?数值分析? - 马同学的回答 - 知乎

https://www.zhihu.com/question/20690553/answer/146104283


版权声明:本文为weixin_31860973原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。