这次说一说构造均分向量的操作。
1. 造轮子
在数值计算中 ,我们通常要在区间[a,b]之间产生指定步长或者给定采样点的一组等差数列(或者说是一个向量),例如MATLAB中的linspace函数,linspace(a,b,n)在区间[a,b]之间产生n个元素,定义一下我们自己的函数,如下:
def lincount(a,b,n):
if n<2:
raise("'n' should be n>=2")
dh=(b-a)/(n-1)
cnt=0
ret=[]
while cnt<n:
ret.append(a+cnt*dh)
cnt+=1
return ret
#测试
print(lincount(1,5,7)) # [1.0, 1.6666666666666665, 2.333333333333333, 3.0, 3.6666666666666665, 4.333333333333333, 5.0]
另外一种是给定步长的方式,定义函数如下:
def linstep(a,b,dx):
ret=[]
x=a
while x<b:
ret.append(x)
x+=dx
return ret
#测试
print(linstep(1,3,0.3)) # [1, 1.3, 1.6, 1.9000000000000001, 2.2, 2.5, 2.8]
2. 用轮子
这么基本而又常见的需求,肯定是有其他大佬早就完成了这样的工作,我们完全没必要自己造轮子,numpy模块中就有这样的函数,分别是arange和linspace。
arange和Python原生的range类似,但是后者只支持整数,而arange则更加强