二分法和牛顿迭代法解方程(python实现)

二分法

1.二分法思路

假设给定的函数是f(x)=(x-2)^3,二分法首先要求函数是单调的,然后选择一个可行的区间[left,right],其中f(left)<0,f(right)>0,然后选择区间的中点middle,若z左侧函数值乘以中点处的函数值小于0,则说明零点在[left,middle],否则在[middle,right]。

2.二分法代码实现

def f(x):
    return pow(x-2,3)

def binaryMethod(left,right):
    middle=(left+right)/2
    time=-1
    if f(middle)==0:
        print("方程的解为:" + str(middle))
        return time,middle
    while abs(f(middle))>1e-6:
        middle=(left+right)/2
        if f(left)*f(middle)<=0:
            right=middle
        else:
            left=middle
        time+=1
        print(time,middle)
    return time,middle

if __name__=='__main__':
    binaryMethod(0,10)

3.结果截图

二分法和牛顿迭代法解方程(python实现)_第1张图片

牛顿迭代法

1.牛顿迭代法思路

二分法和牛顿迭代法解方程(python实现)_第2张图片
这个图借用了别人的。首先确定一个起始点x0,计算出x0点处曲线的切线,切线与x轴有个交点x1,x1作为下一次迭代的起点,依次循环直到f(xn)无限逼近于0,xn可以根据牛顿迭代公式算出。

2.牛顿迭代法代码实现

def f(x):
    return pow(x-2,3)

def df(x):
    return 3*pow(x-2,2)

def newtonMethod(x):
    time=-1
    while abs(f(x))>1e-6:
        x=x-f(x)/df(x)
        time+=1
        print(time,x)
    return time,x


if __name__=='__main__':
    print(newtonMethod(0))

3.结果截图

二分法和牛顿迭代法解方程(python实现)_第3张图片

你可能感兴趣的:(二分法和牛顿迭代法解方程(python实现))