2017-03-09 7 views
-1

ために助けを求める:これを計算するのを助ける必要が和(シグマ)関数

function

ので、Yの合計数がxの数に等しく、各Yは一つのXで計算されますいくつかの。 以下のコードリストは、a0の正しい結果を示しています。これを計算する簡単な方法は何ですか?おそらく異なるバージョンでも結果を確認できます。

ありがとうございます。

import numpy as np 
import matplotlib.pyplot as plt 

a = np.array([1,2,3,4],float) # here we can give several a 
b = np.asarray(list(enumerate(a))) 
x = np.linspace(0.0,1.0,10) 
y1 = [] 

for r in x: 
    y1.append(np.exp(np.sum((1-r)**2*a*((2*b[:,0]+1)*r-1+r)*(r-1+r)**(b[:,0]-1)))) 

y1=np.asarray(y1) 
+1

ベクトル乗算を行う必要があります。あなたはすでにnp配列を持っています。 –

答えて

1

あなたはnumpyの中で、ほぼ文字通り同じことを書くことができます側の注意点として

def f(x, a): 
    x, a = np.asanyarray(x), np.asanyarray(a) 
    x = x[:, None]  # create new dimension to sum along 
    i = np.arange(len(a)) # create counter 
    return np.sum((1-x)**2 * a * ((2*i + 1) * x - (1-x)) * (x - (1-x))**(i-1), axis=-1) 

を:あなたはの利点を取ることができる明白な代数的な単純化があります。

+0

ありがとうございました。私はいくつかの質問を持っています1、x、ここではタプル、各コンポーネントは配列ですか? 2、すべての軸に沿ったaxis = -1 sumの意味ですか? –

+0

@ Z.Nie 1)いいえ、xは2次元配列ですので、個々の要素をx [i、j]として扱うことができます。しかし、この場合の2番目の次元は1であるため、 'j'はゼロでなければなりません(この場合、一般的ではありません)。 'axis = -1'は最後の軸に沿った合計を意味し、したがって、軸0である' x'の元の次元は元のままです。この例の最後の次元は 'i'と' a'によって生成され、それらはその軸で崩壊します。 –

+0

ありがとうございます。もう一つの質問。あなたのコードでは、return((1-x)** 2 * a *((2 * i + 1)* x - (1-x))*(x - (1-x))**(i- 1))、合計ではなく、形状(10,4)の配列を与える。しかし、同じx、a、iを定義して((1-x)** 2 * a *((2 * i + 1)* x - (1-x))*(x - x))**(i-1))、それはエラーを与える。この違いをどのように解釈するのですか? –

関連する問題