我对Python&;编写具有函数的程序:
X = np.linspace(0,50)
F1 = np.sin(X)
测试函数是否为线性(如中所示,显示叠加):
for i in range(1,10):
LT1 = i*(F1)
X = i*X
LT2 = F1
if np.all(LT1) == np.all(LT2):
Linear = 'This function is linear.'
elif np.all(LT1) != np.all(LT2):
Linear = 'This function is nonlinear.'
break
并测试函数是否具有平移不变性:
for j in range(1,10):
SI1 = (F1)-j
X = X-j
SI2 = F1
if np.all(SI1) == np.all(SI2):
SI = 'This function is shift-invariant.'
elif np.all(SI1) != np.all(SI2):
SI = 'This function is shift-variant.'
break
但是我的代码调用所有函数,不管是否是LSI,线性&;移位变量。有没有更好的方法来运行这些测试?我见过线性回归作为测试线性的一种方法,但在尝试使用正弦函数时,它错误地将函数分类为非线性。我也找不到任何关于测试移位不变性的指导
@Ragnar提供了一个非常好的数学解决方案,但我想发布一个简短的解决方案
如果函数由等距的值给出,则
如果函数是线性的,则返回
True
,否则返回False
其思想是,每次函数都以相同的值递增(这里我使用的是
X
是等距的)。因此,取连续数字的差应该返回具有所有相同项的数组。如果函数是线性的,则再次取连续数的差返回所有零让我们首先定义所有必需的功能
接下来,我们定义信号
定义系统
现在让我们看看我们在行动中定义的一切
您可以轻松定义其他系统,例如
等等
相关问题 更多 >
编程相关推荐