求解一元高次方程的时候 ,用迭代法近似求解这类问题,梯度法,最小二乘法,牛顿迭代法。
迭代法 用于 线性非线形方程组和曲线拟合等问题
thinking: 迭代法和递推法,迭代法是很多数学问题的求解算法。递推法是一种设计算法的常用
思想,没有固定的算法实现模式 ,通常与其他算法模式配合形成算法实现。
有种说法,对于所有使用了迭代思想的算法实现都可以理解为使用的迭代法。这样以来,除了线性动态规划算法,遗传算法,退火算法等算法也可以归入迭代法的范畴。
迭代法三要点
确定迭代变量:迭代变量是要求问题的解,根据递推公式由旧值推出新值,可以是多个,还要设置迭代
变量初始值
确定迭代递推关系:根据旧值计算新值的关系或公式
确定迭代终止条件:推出迭代,
1 迭代变量已经得到精确值
2 无法得到精确值,精度已经满足要求
3 确定迭代次数,防止在某个区间上发散进入死循环
用迭代法计算
CodeCogsEqn.pngimport math
LOOP_LIMIT = 9999999999999
#a 初始值 exp 终止条件
def cl_root(a, exp):
# 初始值用a的一半
xi = a / 2.0
count = 0
while True:
xt = xi
#递推关系
xi = (xt + (a / xt)) / 2.0
count += 1
if count > LOOP_LIMIT:
#不收敛,返回失败
return False, 0.0
if math.fabs(xi - xt) > exp:
return True, xi
网友评论