我有numpy数组,我想使用幂级数,比如e^x
的泰勒级数,我想知道如何在python中实现它。为了简单起见,我想我可以在x0=0
使用maclaurin系列,其中x
是numpy数组。基本上,我有一个一维像素向量,我想用e^x的泰勒级数展开来非线性展开每个像素值。换句话说,在输出向量中,每个像素将被替换为泰勒级数展开项的第一项和第二项。有没有办法在python中实现这一点
数学概念:
这是我想要实现的简单数学概念,其中nunmpy数组预期通过使用幂级数(如e^x
的maclaurin级数)进行非线性扩展
我的尝试:
import numpy as np
arr= np.array([[120.0,24.0,12.0],[14.0,28.0,43.0]])
arr= arr/255.0
def maclurin_exp(x, power):
res = x*0
for i in range(power):
res += x**i/math.factorial(i)
return res
## test my code:
maclurin_exp(x=arr, power=3)
新更新2:
确切地说,F
是e^x
的泰勒级数,x
是每个像素值,x0
是0处的近似点。例如,如果我们在1维向量中有8个像素,那么在我们对每个像素值使用e^x的泰勒级数之后,泰勒展开的第一项和第二项将被视为输出
如何在python中实现这一点?以更紧凑的方式实现Maclaurin系列的e^x
有什么解决方法吗?有什么想法吗
预期产出
例如,我们有1维像素向量[1,2,3,4,5,6,7,8]
,然后我们应用上述数学方程,通过使用e^x的maclurin序列来近似每个像素值:
pixel = [1,2,3,4,5,6,7,8]
然后,对于每个像素值,e^x的泰勒级数的第一项和第二项将是我的最终输出
根据更新后的定义,可能是这样的:
在
a
周围的e^(x)
的扩展是e^(a) + e^(a)(x-a) + e^(a)(x-a)^2/2!
这一事实之后,依此类推。然后dstack
和ravel
的组合将这些项交织成一个向量。因此,如果您有[np.array([a0,b0,c0]), np.array([a1,b1,c1])]
,它将把它们组合成np.array([a0,a1,b0,b1,c0,c1])
输出:
意味着小的非零差异 您的主要问题是没有强制转换阶乘,因此导致整数除法
相关问题 更多 >
编程相关推荐