Python MATPLOT LIB 2D数组

2024-10-03 23:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始用matplot lib画一个微分的3d曲面。具体来说,我有一个任务来编写我自己的ArcTan函数,在代码中被看作ExtArcTan,并将它的值与pythons自己的值进行比较,在代码中被看作atan。我这样做是为了X和N的不同值。N是指函数中级数项的数目,因为它实际上是泰勒近似。你知道吗

我首先创建x和N数组:

  N=np.arange(50)
  X=np.arange(-5,6) 
  N,X=np.meshgrid(N,X)

然后,我需要为这两个变量中的每一个计算给定的微分,下面的代码就是引发错误的原因。你知道吗

Diff=abs(ExtArcTan(X,N)-atan(X))

如果没有最终的数组,我就无法完成将数组放入绘图以生成曲面的琐碎任务。你知道吗

我在Diff线上得到了这个错误:

ValueError: The truth value of an array with more than one element is 
ambiguous. Use a.any() or a.all()

不知道我做错了什么:

供参考:

def ArcTanComponent(x,i): #calculates the ith component of arctan(x) taylor series
   return (((-1)**i)/(2*i+1))*(x**(2*i+1))

def BaseArcTan(x,N): #calculates all components for given N and sums to give approximation of arctan(x)
   Components=[]
   for i in range(N+1):
       Components.append(ArcTanComponent(x,i))
   return np.sum(Components)

def ExtArcTan(x,N): #extends baseArcTan function to work over entire range
    if (x>0):
        return PI/2 - BaseArcTan(1/x,N)
    elif(x<0):
         return -PI/2 - BaseArcTan(1/x,N)
    elif(x==0):
         return 0

Tags: of函数代码returndef错误npcomponents
1条回答
网友
1楼 · 发布于 2024-10-03 23:25:59

ExtArcTan(x,N)中,使用if x>0:(和其他比较),如果x是错误所说的数组,那么这种比较是不明确的。你从N,X=np.meshgrid(N,X)发送X,这是一个数组。例如,您需要使用带有np.where的逐元素检查,而不是使用x==0检查整个数组。你知道吗

编辑:关于这个(未经测试的)的东西呢

def ExtArcTan(x,N):
    x = np.sum(ArcTanComponent(x,i) for i in range(N+1))
    if (x>0):
        return PI/2 - BaseArcTan(1/x,N)
    elif(x<0):
         return -PI/2 - BaseArcTan(1/x,N)
    elif(x==0):
         return 0

EAT = np.array([[ExtArcTan(x,N) for x in row] for row in X])
Diff=abs(EAT-atan(X))

相关问题 更多 >