Python迭代法Iteration的讲解及求解海藻问题、方程问题实战(超详细 附源码)

简介: Python迭代法Iteration的讲解及求解海藻问题、方程问题实战(超详细 附源码)

一、迭代法简介

迭代法(iteration)是现代计算机求解问题的一种基本形式。迭代法与其说是一种算法,更是一种思想,它不像传统数学解析方法那样一步到位得到精确解,而是步步为营,逐次推进,逐步接近。迭代法又称辗转法或逐次逼近法。

迭代法的核心是建立迭代关系式。迭代关系式指明了前进的方式,只有正确的迭代关系式才能取得正确解。

二、迭代法解决海藻问题

问题描述:

假设在空池塘中放入一颗水藻,该类水藻会每周长出三颗新的水藻,问十周后,池塘中有多少颗水藻?

第1周的水藻数量:1;

第2周的水藻数量:1+1×3;

第3周的水藻数量:1+1×3+(1+1×3)×3

可以归纳出从当前周水藻数量到下一周水藻数量的迭代关系式。设上周水藻数量为x,从上周到本周水藻将增加的数量为y,本周的水藻数量为x^′,那么在一次迭代中

y←3x

x^′←x+y

迭代开始时,水藻的数量为1,为迭代法的初始条件。

迭代次数为9(不包括第一周),为迭代过程的控制条件。

解决代码如下

x = 1 # 初始条件:第一周水藻数量
times = 1 # 迭代次数
while times < 10: # 迭代过程
    y = 3 * x
    x = x + y
    times += 1
    print("第%d周的水藻数量:%d" % (times, x))

 

三、迭代法解方程

迭代法是求解机器学习问题的基本方法,有着广泛的应用。

用迭代法求方程的解时,每次迭代都得到一个新的x值,将每次迭代得到的x值依序排列就可得到数列{x_k}。设x_0为初值。

在用迭代法求解方程时有个常用的迭代关系式建立方法:先将方程f(x)=0变换为x=φ(x),然后建立起迭代关系式:

x_k+1=φ(x_k)

如果{x_k}收敛于x^∗,那么x^∗就是方程的根,因为:

x^∗=lim┬k→∞x_k+1=lim┬k→∞φ(x_k)=φ(lim┬k→∞x_k)=φ(x^∗)

即,当x=x^∗时,有f(x)=x−φ(x)=0。

用迭代法求下列方程的解:

迭代关系式为:

x^3+e/2^x+5x−6=0

迭代的结束条件是实际应用时需要考虑的问题,在该例中没有明确的结束条件。在无法预估时,可采用控制总的迭代次数的办法。

代码如下

import math
x = 0
for i in range(100):
    x = (6 - x**3 - (math.e**x)/2.0)/5.0
    print(str(i)+":"+str(x))

也可以根据数列{x_k}的变化情况来判断,如将|x_k+1−x_k|的值小于某个阈值作为结束的标准。还可以将两种办法结合使用。

 

代码如下

x = 0 # 初始条件
delta = 0.00001 # 控制退出条件
times = 0 # 用来显示迭代次数
while True: # 条件为True,如果没有别的退出手段,while循环将会无限进行下去
    x_old = x
    x = (6 - x**3 - (math.e**x)/2.0)/5.0 
    print(str(times)+":"+str(x))
    times += 1
    if abs(x - x_old) < delta:
        break # 如果符合退出条件,则直接退出循环

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
27天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
28天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
46 10
|
2月前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
2月前
|
算法 Unix 数据库
Python编程入门:从基础到实战
本篇文章将带你进入Python编程的奇妙世界。我们将从最基础的概念开始,逐步深入,最后通过一个实际的项目案例,让你真正体验到Python编程的乐趣和实用性。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。让我们一起探索Python的世界吧!
|
2月前
|
并行计算 调度 开发者
探索Python中的异步编程:从基础到实战
在Python的世界里,异步编程是一种让程序运行更加高效、响应更快的技术。本文不仅会介绍异步编程的基本概念和原理,还将通过具体代码示例展示如何在Python中实现异步操作。无论你是初学者还是有经验的开发者,都能从中获益,了解如何运用这一技术优化你的项目。
|
2月前
|
数据处理 Python
探索Python中的异步编程:从基础到实战
在Python的世界中,“速度”不仅是赛车手的追求。本文将带你领略Python异步编程的魅力,从原理到实践,我们不单单是看代码,更通过实例感受它的威力。你将学会如何用更少的服务器资源做更多的事,就像是在厨房里同时烹饪多道菜而不让任何一道烧焦。准备好了吗?让我们开始这场技术烹饪之旅。
|
8月前
|
索引 Python
|
29天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
16天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
102 80
|
2月前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
150 59