Edited at

Σを使った数式をpythonで試す

More than 3 years have passed since last update.


目次


経緯


  1. 授業でΣ(シグマ)に出くわす

  2. 久しぶりだしPython使って簡単に表現できないか思いつく

  3. 軽くググッて見る

  4. [使えそうなリソース]を発見

  5. ちょっとだけ試してみる


Σとは

一言で言うとsumとか(主に)数列の和と表現したりする。

sigma.jpg

*画像転載元: Learn Sigma Notation Online

詳しい使い方は以下参照:

Σの意味ってなんでしたっけ?

【数列9】シグマ1 シグマとは?シグマの意味、計算を説明 【高2数学・数B】

数列の和~シグマΣの定義と計算方法:ビジュアル数学(数学B:数列


やりたいこと

ソース元を参考に、

544x215xsigma.png.pagespeed.ic.f1Iqf-52cp.png

をどうにかしてpythonで動かしてみる。


Pythonで動作確認

以下が元のコード


sigma.py

def f(x):

return 2*x + 1

def g(x):
return (x-1) * (x-3)

def sigma(func, frm, to:
result = 0;
for i in range(frm, to+1):
result += func(i)
return result

sigma(f, 2, 4) #21
sigma(g, 1, 3) #-1


細かい流れはここ参照。

これをPython3.xでも使えるように


sigma2.py

def f(x):

return

def sigma(func, frm, to):
result = 0;
for i in range(frm, to+1):
result += func(i)
print(result)

sigma(f, 1, 10) #21



例題を軽く

例題:以下の式の和を求めよ。

math.png

これを

math.png --- #1

math copy.png --- #2 (これが上の画像で言うk番目のa)

に分ける。

まずは#2の答えを出す関数を作る

def f(n):

return 3 * n - 2

そして#1の答えを出す関数

def sigma(func, frm, to):

result = 0; #答えの受け皿
for i in range(frm, to+1):
result += func(i)
#ここで関数を呼び出す。ちなみにここではi = x
print(result)

完成形はこんな感じ

ef f(n):

return 3 * n - 2

def sigma(func, frm, to):
result = 0; #答えの受け皿
for i in range(frm, to+1):
result += func(i)
#ここで関数を呼び出す。ちなみにここではi = x
print(result)

sigma(f, 1, 4) #22


番外編~what if~

f(x)の式を作る必要がない式に出くわした場合、

1. sigma関数の引数funcを消す

2. result += func(i)からresult += i

3. これで正常に動く。。はず

def sigma2(frm, to):

result = 0;
for i in range(frm, to+1):
result += i
print(result)

sigma2(1,10) #55