Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Your logo
Wolfram Language コトハジメ
Noboru Wakabayashi
Mar. 19, 2016 @ dots / Shibuya
ヒューリンクス所属:株式会社 /執行役員
プログラマのための数学勉強会
2016 / 3 / 19 渋谷 dots.  Page 2
のセッション今日
 簡単な歴史:
 むかしむかし、イギリスに Stephen Wolfram という頭の良い少年がいました。彼
は物理が大好きで、12歳の時に自分で物理学の辞書...
 Mathematica へ: カリフォルニア工科大学での研究の時に、自分が使う数式の
処理のために、現在の Mathematica の原型となる処理システムを作ったと言われ
ています。
Wolfram Language って聞いたことがあり...
で、 は の今日 何 話?
 Web ページを検索する検索エンジンではない
 なんか単語(英語)を入れると、データベース化されている「数値化されているデー
タ」から 何か情報を引っ張ってきてくれる
 「 Cheeseburger 」 >>...
 次のようなグラフを書いてみます。
 「  plot x^3 - 6x^2 + 4x + 12  」
 に かしようとすると の次 何 有料 「 PRO にしろと ってくる  う む。。」版 言 ! ~
。
 もう少し違う関数で
 「...
 んじゃ、次は3次元グラフ
 「  plot sin(x)*cos(y)  」
 インタラクティブには せない。回
 表示範囲もこんな感じで指定 (英語そのもの)
 「  plot sin(x)*cos(y)   from 0 to ...
 んじゃ、 Fourier Transform をさせてみる?
 「  Fourier transform ln(x)  」
 微積分
 「  Differential 4*x^3+5*x^2+2*x+7  」
 「  Integra...
…ではなくて
2016 / 3 / 19 渋谷 dots.  Page 8
Woflram Mathematica とか、 Mathematica Online
とかで使う、プログラミング言語のことを
「 Wolfram Language 」
と呼びます。
ここまで紹介してきた Wolfram Alpha も、
自然言...
言語の特徴をわかりやすくするために、同じ
式やグラフを Wolfram Language と Python
で比べてみます。
問題は、 Mathematica にはお金がかかります
。その分、 Python よりも記述が楽。
(<少し商売を入れ...
Mathematica は他のプログラミング言語で言
うところの IDE と思ってよいでしょう。
作成したファイルはノートブック( .nb )と呼
ばれます。
>>> つまり、自分でノートを書いて次々
と計算をさせていく感じ。思考と実証を繰り
...
2 次元の線グラフを書いてみる1 ( sin(x) )
Python
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(- 2*np.pi, 2*np.pi, ...
2 次元の線グラフを書いてみる1 ( sin(x) )
Wolfram Language
Plot[Sin[x], {x, -2*π, 2*π}]
ちょっと座標軸が違うが、まあ
こんな感じ
2016 / 3 / 19 渋谷 dots.  Pa...
2 次元の線グラフを書いてみる2 ( a sin(b x) )
Python
前のページのコードに a と b を変化させるスライドバーと、その
移動にあわせてグラフを書くのは結構、行数を書く必要があります。
スライダーを書くだけでも:
Imp...
2 次元の線グラフを書いてみる2 ( a sin(b x) )
Wolfram Language
Manipulate[Plot[a * Sin[b * x],
{x, -2*π, 2*π}], {a, 1, 3},
{b, 1, 4}]
の1...
3次元のグラフを動かすぞ ( sin(a x) * cos (b y) )
Python
グラフが3次元になっても同じ。
a と b は定数だが、ダイナミックに変えて状態を確認したい
2016 / 3 / 19 渋谷 dots.  Page ...
3次元のグラフを動かすぞ ( sin(a x) * cos (b y) )
Wolfram Language
Manipulate[
Plot3D[Sin[a*x]*Cos[b*y],{x, 0, 6*π}, {y, 0, 6*π}],
{a,...
書く行数が少ないだけでなく、シンボリックに簡単
に計算できる
2016 / 3 / 19 渋谷 dots.  Page 18
a x2
+ bx + c = 0 を に を れないまま定数 数値 入 計算
Python
from sympy ...
書く行数が少ないだけでなく、シンボリックに簡単
に計算できる
Wolfram Language
Solve[a*x^2 + b*x + c ==0, x]
の1行で OK 。これで a と b と c をその
ままに計算ができる。
計算部分の書...
微分方程式を解いてみる ( y’(x)+y(x) = a sin(x) )
2016 / 3 / 19 渋谷 dots.  Page 20
Python
from sympy import *
a,x = symbols(‘a x’)
y =...
微分方程式を解いてみる ( y’(x)+y(x) = a sin(x) )
Wolfram Language
DSolve[y’[x] + y[x] == a Sin[x], y[x], x]
の1行で OK 。
dsolve を実装しだしたの...
Wolfram Language って、やたらと関数が多い。
>だからプログラムを短く書くことができる
なんでー、覚えるのが大変。。。
2016 / 3 / 19 渋谷 dots.  Page 22
以前に聞いたことがあります。。。
「頭のい...
セッションはここで終わり
あと1~2分、宣伝につきあって!
2016 / 3 / 19 渋谷 dots.  Page 23
株式会社ヒューリンクス
今日紹介した Wolfram Mathematica を始め、科学
技術研究開発用ソフトを海外から輸入して開発してい
る会社です。
数学・統計・データ系でいうと:
Mathematica 、 Geometry Expre...
Noboru Wakabayashi
Thank you for your attention!
2016 / 3 / 19 渋谷 dots.  Page 25
Upcoming SlideShare
Loading in …5
×

20160319 プログラマのための数学勉強会

337 views

Published on

2016年3月19日開催/プログラマのための数学勉強会発表資料

Published in: Technology
  • Be the first to comment

20160319 プログラマのための数学勉強会

  1. 1. Your logo Wolfram Language コトハジメ Noboru Wakabayashi Mar. 19, 2016 @ dots / Shibuya ヒューリンクス所属:株式会社 /執行役員 プログラマのための数学勉強会
  2. 2. 2016 / 3 / 19 渋谷 dots.  Page 2 のセッション今日  簡単な歴史:  むかしむかし、イギリスに Stephen Wolfram という頭の良い少年がいました。彼 は物理が大好きで、12歳の時に自分で物理学の辞書を書きました。 最初の30分は、できるだけ商売抜きでお話します。 で、、、、最後の2分は本日のスポンサーとして、宣伝させてください。 Wolfram Language って聞いたことがあります?  15歳になると彼は量子場理論と素粒子力学を研究し始めました。17歳で、 オックスフォード大学に入ったのですが、卒業することなく大西洋を渡ることを 決心しました。  大陸を横断し、カリフォルニア工科大学に入りました。そこで彼は20歳で素粒 子力学において博士号をとりました(ファインマンらが指導)。そのままカリ フォルニア工科大学の教授として研究を続けました。その後、イリノイ大学に移 り、教鞭をとっていました。
  3. 3.  Mathematica へ: カリフォルニア工科大学での研究の時に、自分が使う数式の 処理のために、現在の Mathematica の原型となる処理システムを作ったと言われ ています。 Wolfram Language って聞いたことがあります? > つづき  1986年にイリノイ大学を退職し、このシステムを販売するために Wolfram Research という会社を作りました。  1987年、 Stephen は NeXT にいた Steve Jobs と出会い、製品の話をしました。 Stephen が考えていた名前は Omega と PolyMath でしたが、 Jobs は「みにくい 名前だ」と言いました。 Sony Trinitron の名前を例に出して、 Jobs は 「 Mathematica 」という名前を提案し、それ以来、 Mathematica という名前に なったとさ。  続編: それから20年以上がたちました。 Mathematica はぐんぐん育ち、その 数学的機能も、計算能力もパソコンの中に収まりきらなくなりました。  2010年代になって Mathematica の計算能力を活かした Computational Engine 、 Wolfram|Alpha のサービスが開始しました。さらに世界は広が り、 Mathematica で記述するための言語も、単なる数学の枠を超え始めたため、 その体系を Wolfram Language とよぶようになりました。 2016 / 3 / 19 渋谷 dots.  Page 3
  4. 4. で、 は の今日 何 話?  Web ページを検索する検索エンジンではない  なんか単語(英語)を入れると、データベース化されている「数値化されているデー タ」から 何か情報を引っ張ってきてくれる  「 Cheeseburger 」 >>> 何が返ってくる?  「 Today 」 >>> 何が返ってくる?  「 Triangle and circle 」 >>> 何が返ってくる?  「 Triangle in a circle 」 に変えると???  「 How many baseballs fit in a Boeing 747? 」  自然言語的な記述で数式を解いてくれる。可視化してくれる >> 例は次のページ から Wolfram | Alpha でできること まずは、軽いところで、 Woflram|Alpha で遊ぶ方法を見てみます。最近は、ちょ っと難しいことをさせようとすると、「お金を払うバージョンにしてください」な んていうようになってしまいましたが、無料で遊べる範囲で使ってみます。 2016 / 3 / 19 渋谷 dots.  Page 4
  5. 5.  次のようなグラフを書いてみます。  「  plot x^3 - 6x^2 + 4x + 12  」  に かしようとすると の次 何 有料 「 PRO にしろと ってくる  う む。。」版 言 ! ~ 。  もう少し違う関数で  「  plot sin(x)/x  」 x3 -6 x2 +4 x+12 Sin(x) x 2016 / 3 / 19 渋谷 dots.  Page 5
  6. 6.  んじゃ、次は3次元グラフ  「  plot sin(x)*cos(y)  」  インタラクティブには せない。回  表示範囲もこんな感じで指定 (英語そのもの)  「  plot sin(x)*cos(y)   from 0 to 10*pi 」 Sin(x) x Cos(y) Sin(x) x Cos(x) (0<x<10π) 2016 / 3 / 19 渋谷 dots.  Page 6
  7. 7.  んじゃ、 Fourier Transform をさせてみる?  「  Fourier transform ln(x)  」  微積分  「  Differential 4*x^3+5*x^2+2*x+7  」  「  Integral 4*x^3+5*x^2+2*x+7  」  構文を気にせず、ほぼ英語の自然言語で表現できるので、プログラミングをしている 感覚はない  これが Wolfram Language ??? 2016 / 3 / 19 渋谷 dots.  Page 7
  8. 8. …ではなくて 2016 / 3 / 19 渋谷 dots.  Page 8
  9. 9. Woflram Mathematica とか、 Mathematica Online とかで使う、プログラミング言語のことを 「 Wolfram Language 」 と呼びます。 ここまで紹介してきた Wolfram Alpha も、 自然言語 ⇒  Wolfram Language に変換して、 Mathematica のグリッド 版、 gridMathematica に食わせています。 2016 / 3 / 19 渋谷 dots.  Page 9
  10. 10. 言語の特徴をわかりやすくするために、同じ 式やグラフを Wolfram Language と Python で比べてみます。 問題は、 Mathematica にはお金がかかります 。その分、 Python よりも記述が楽。 (<少し商売を入れた) * Python は numPy や SciPy を前提 2016 / 3 / 19 渋谷 dots.  Page 10
  11. 11. Mathematica は他のプログラミング言語で言 うところの IDE と思ってよいでしょう。 作成したファイルはノートブック( .nb )と呼 ばれます。 >>> つまり、自分でノートを書いて次々 と計算をさせていく感じ。思考と実証を繰り 返しながら、計算の目的地に到達するという のがコンセプトです。 2016 / 3 / 19 渋谷 dots.  Page 11
  12. 12. 2 次元の線グラフを書いてみる1 ( sin(x) ) Python import numpy as np import matplotlib.pyplot as plt x = np.linspace(- 2*np.pi, 2*np.pi, 100) y = np.sin(x) plt.plot(x, y) plt.axes() plt.show() 2016 / 3 / 19 渋谷 dots.  Page 12
  13. 13. 2 次元の線グラフを書いてみる1 ( sin(x) ) Wolfram Language Plot[Sin[x], {x, -2*π, 2*π}] ちょっと座標軸が違うが、まあ こんな感じ 2016 / 3 / 19 渋谷 dots.  Page 13 実際の画面で実際の画面で
  14. 14. 2 次元の線グラフを書いてみる2 ( a sin(b x) ) Python 前のページのコードに a と b を変化させるスライドバーと、その 移動にあわせてグラフを書くのは結構、行数を書く必要があります。 スライダーを書くだけでも: Import wx panel = wx.Panel(frame, wx.ID_ANY) slider = wx.Slider(panel,          style=wx.SL_HORIZONTAL) な感じ。 a と b は定数だが、ダイナミックに変えて状態を確認したい 2016 / 3 / 19 渋谷 dots.  Page 14
  15. 15. 2 次元の線グラフを書いてみる2 ( a sin(b x) ) Wolfram Language Manipulate[Plot[a * Sin[b * x], {x, -2*π, 2*π}], {a, 1, 3}, {b, 1, 4}] の1行で OK 。これで a と b を可変にして 変化を見ることができる。 これは結構簡単。 a と b は定数だが、ダイナミックに変えて状態を確認したい 2016 / 3 / 19 渋谷 dots.  Page 15 実際の画面で実際の画面で
  16. 16. 3次元のグラフを動かすぞ ( sin(a x) * cos (b y) ) Python グラフが3次元になっても同じ。 a と b は定数だが、ダイナミックに変えて状態を確認したい 2016 / 3 / 19 渋谷 dots.  Page 16
  17. 17. 3次元のグラフを動かすぞ ( sin(a x) * cos (b y) ) Wolfram Language Manipulate[ Plot3D[Sin[a*x]*Cos[b*y],{x, 0, 6*π}, {y, 0, 6*π}], {a, 1, 3}, {b, 1, 4}] の1行で OK 。これで a と b を可変にして 変化を見ることができる。 スライダーが動いているときは、描画 速度を上げるために画像が荒くなった りする。 a と b は定数だが、ダイナミックに変えて状態を確認したい 2016 / 3 / 19 渋谷 dots.  Page 17 実際の画面で実際の画面で
  18. 18. 書く行数が少ないだけでなく、シンボリックに簡単 に計算できる 2016 / 3 / 19 渋谷 dots.  Page 18 a x2 + bx + c = 0 を に を れないまま定数 数値 入 計算 Python from sympy import * a = Symbol(‘a’) b = Symbol(‘b’) c = Symbol(‘c’) result = solve(a*x**2 + b*x + c, x) print(result) な感じ。結果は、 [(-b + sqrt(-4*a*c + b**2))/(2*a),   -(b + sqrt(-4*a*c + b**2))/(2*a)]
  19. 19. 書く行数が少ないだけでなく、シンボリックに簡単 に計算できる Wolfram Language Solve[a*x^2 + b*x + c ==0, x] の1行で OK 。これで a と b と c をその ままに計算ができる。 計算部分の書く行数はほぼ同じ。「これがシンボル だよ」という宣言が Python では必要。 2016 / 3 / 19 渋谷 dots.  Page 19 実際の画面で実際の画面で a x2 + bx + c = 0 を に を れないまま定数 数値 入 計算
  20. 20. 微分方程式を解いてみる ( y’(x)+y(x) = a sin(x) ) 2016 / 3 / 19 渋谷 dots.  Page 20 Python from sympy import * a,x = symbols(‘a x’) y = symbols(‘y’, cls=Fuction) result = dsolve(Eq(y(x).diff(x)+y(x), a*sin(x)), y(x)) print(result) な感じ。結果は、 y(x) == (C1 + a*(sin(x) - cos(x) *exp(x)/2)*exp(-x)
  21. 21. 微分方程式を解いてみる ( y’(x)+y(x) = a sin(x) ) Wolfram Language DSolve[y’[x] + y[x] == a Sin[x], y[x], x] の1行で OK 。 dsolve を実装しだしたのは、 Mathematica が先なんだろうな―、と 想像します。裏を取っていないので、信じないように。 2016 / 3 / 19 渋谷 dots.  Page 21 実際の画面で実際の画面で ちなみに上の入力を Wolfram Alpha に突っ込むと計算してくれたりする
  22. 22. Wolfram Language って、やたらと関数が多い。 >だからプログラムを短く書くことができる なんでー、覚えるのが大変。。。 2016 / 3 / 19 渋谷 dots.  Page 22 以前に聞いたことがあります。。。 「頭のいい人は、関数を覚えられるから、短く書けるほう が思考の邪魔をしない。 関数が少ないと、高度なことを計算させるときに、本質的 ではない細かなところで行をたくさん書く必要がある」
  23. 23. セッションはここで終わり あと1~2分、宣伝につきあって! 2016 / 3 / 19 渋谷 dots.  Page 23
  24. 24. 株式会社ヒューリンクス 今日紹介した Wolfram Mathematica を始め、科学 技術研究開発用ソフトを海外から輸入して開発してい る会社です。 数学・統計・データ系でいうと: Mathematica 、 Geometry Expressions, KaleidaGraph 、 IGOR Pro SigmaPlot 、 Pro Fortran 、 Predictive Modeler 2016 / 3 / 19 渋谷 dots.  Page 24
  25. 25. Noboru Wakabayashi Thank you for your attention! 2016 / 3 / 19 渋谷 dots.  Page 25

×