对于不便于求解的方程,我们可以求其近似解,即使用二分法和黄金分割比的方法。具体的案例如下。
确定了一个方程:
对上式的要求如下:
上面的第二式是确定根的区间。
而我们需要做的是,根据二分法和黄金分割法的方法求解。
具体代码如下:
import numpy as np
def f(x):
y=x**41+x**3+1
return y
x1=-1.1;x2=-0.9;n1=0#二分法
while 1>0:
n1+=1;x3=x1*0.5+x2*0.5
if f(x3)*f(x1)>0:
x1=x3;x2=x2
if f(x3)*f(x2)>0:
x1=x1;x2=x3
if np.abs(x1-x2)<=10**-8:
print('二分法的近似根:{};程序计算次数:{}'.format(x3,n1))#输出
break
x1=-1.1;x2=-0.9;n2=0#黄金分割法
while 1>0:
n2+=1;x3=x1*0.382+x2*0.618
if f(x3)*f(x1)>0:
x1=x3;x2=x2
if f(x3)*f(x2)>0:
x1=x1;x2=x3
if np.abs(x1-x2)<=10**-8:
print('黄金分割法的近似根:{};程序计算次数:{}'.format(x3,n2))#输出
break
我们需要注意一点的是,对于不同的方法确定下一个自变量取值的函数不同。我们要理解到这点。