内容正文:
第4单元 计算与问题解决
4.l算法及其特征
1、算法的重要特征
有穷性。算法必须能在执行有限个步骤之后终止。
确切性。算法中的每一次运算都有明确的定义,具有无二义性,并且可以通过计算得到唯一的结果。
输人项。一个算法有0个或多个输人,以刻画运算对象的初始情况,所谓0个输人是指算法本身给出了初始条件。
输出项。算法一定要有输出。任何算法都不能“无功而返”可行性。算法中执行的任何计算都可以在有限时间内完成(也称为有效性)。算法中的运算都必须是可以实现的。
从某种意义上说,算法也是一种数学模型。一般而言,问题求解的第一步是数学建模。用数学语言描述实际现象,将现实世界的问题抽象成数学模型,就可能发现问题的本质并判定其能否求解,继而找到求解该问题的方法和算法。
2、枚举
我们常利用计算机运算速度快、精确度高的特点解决实际问题。在设计算法时,最简单的方法就是“直译”我们的思维过程。有一种算法是把所有可能的答案一一列举,合适就保留,不合适就丢弃。这种方法称作“枚举”或“穷举”
4.2 数值计算
1、numpy模块简介
numpy是一个科学计算包,其中包含很多数学函数,如三角函数、矩阵计算方法等。通过该模块中的arange函数可以创建一个等差数列。如在0~2π之间每隔0.01取个值,则可以用arange(0,2* numpy.pi,0.01)来表示,其中numpy.pi表示π。下列代码可以产生sin(x)的若干个关键点
2、matplotlib模块简介
matplotlib模块是Python中最出色的绘图库,功能很完善。调用 matplotlib.pyplot时,坐标系可以根据数值范围自动生成。
matplotlib的绘图原理很简单,利用plot画线函数就可以在直角平面 内轻松地将(x, y)坐标点对连接成平滑曲线。例如:在上述代码的适当位置增加下列语句,就可以将刚才生成的关键点连接起来。
参考上述代码,让我们一起来完善以下Python程序,尝试绘出“sin(x)”“sin(-x)”和“sin(2x)/2”的图像。
斐波那契在《计算之书》中提出了一个有趣的兔子问题:假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生 小兔子。则一对兔子一年内能繁殖成多少对? 10年呢?
第1个月和第2个月的兔子对数之和为第3个月的兔子对数,第2个月和第3个月的兔子对数之和为第4个月