准备总结一下通过Python进行数值计算的环境,先说一下数值计算的基本语法和库。
1.基本运算
Python中提供基本运算符,常见的加减乘除,唯一需要注意的是除法,整数除法和浮点数除法不一样。
一般除法/,无论参与运算的数是整数还是浮点数,能不能被整除,其结果一定是浮点类型的:
print(type(4/2),type(5/2)) # <class 'float'> <class 'float'>
对于整数除法使用//(两个/),在参与运算的两个数均为整数时,结果也为整数:
print(type(4//2),type(5//2)) # <class 'int'> <class 'int'>
这个时候是类似C语言中两个整数的除法的。
不过,Python中还是会把事情弄得稍微有点复杂,what if……对浮点数使用整除呢?测试一下:
x=5.6//2
print(x,type(x)) # 2.0 <class 'float'>
y=9.5//2.4
print(y,type(y)) # 3.0 <class 'float'>
看来,在这种情况下,可以保证结果为“整数”(注意还是浮点类型)。
求模运算使用% ,对于整数和浮点数都可以使用,其效果是a%b=a-(a//b)*b,但是浮点数由于IEEE 754的表示方式,所以会出现误差:
x=5.6%2
print(x,type(x)) # 1.5999999999999996 <class 'float'>
y=9.5%2.4
print(y,type(y)) # 2.3000000000000003 <class 'float'>
幂函数使用两个乘号(**),例如2**3=8,当然了,也可以支持底和幂都是浮点数的计算,但是,**计算的结果类型,可能是整型,也可能是浮点型:
print(1.2**3.4) # 1.858729691979481
p=2**3
print(p,type(p)) #8 <class 'int'>
2.数学函数
模块math基本上可以理解为和C语言标准math.h提供相同的功能,使用该模块需要import math,其中主要包括了以下的一些常量和函数。
自然对数底数e和圆周率pi,这两个值太常见了:
import math
print(math.e) # 2.718281828459045
print(math.pi) # 3.141592653589793
幂函数和对数函数包括pow,exp和log,log10,使用方式如下:
print(math.pow(2,3)) # 8.0,注意这里是一个float类型
print(math.exp(3)) # 20.085536923187668
print(math.log(math.e)) # 1.0
print(math.log10(2)) # 0.3010299956639812
另外就是各种三角函数和反三角函数了,和C语言中使用的方式大同小异,这里就不展开细说了。
3.numpy库
NumPy是一个Python的开源的数值计算扩展,支持多种维度数组与矩阵运算,此外也针对数组运算提供很多数学函数库,可以很方便的计算矩阵的乘法、求逆运算等,具体的使用将在后面逐步介绍。官方网站为:NumPy -
4.Matplotlib绘图库
Matplotlib 是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,官方网站为:https://matplotlib.org/
仅需要几行代码,便可以生成绘图、直方图、功率谱、条形图、错误图、散点图等,例如绘制一个二次曲线的图形:
import matplotlib.pyplot as plt
import numpy as np
import mathdef f(x):return x**2-2*x-3x=np.arange(-4,4,0.01)
f_hdl=np.vectorize(f)
y=f_hdl(x)
plt.plot(x,y)
plt.grid()
plt.show()
绘制效果如下:
更多的使用方式将在后面逐步学习和介绍。
OK,以上是通过Python进行数值计算的基本语法和工具,后面在相应的使用中逐渐展开学习。