PHPカンファレンス 2021 1週間前イベント 〜 帰ってきたPHP勉強会@東京の登壇資料です。
MathPHP で数学人材を目指す2021.09.24 PHPカンファレンス 2021 1週間前イベント 〜 帰ってきたPHP勉強会@東京濱田晃輔 @hamakou108
View Slide
自己紹介濱田晃輔 @hamakou108株式会社M&AクラウドPHP 歴は2年弱
数学人材
数学人材とは経団連が数学と数学人材に注目するのはAI(人工知能)やICTの土台となっているからだけではない。物事の抽象度を高めて定式化する数学的思考のできる人材が、デジタル社会に不可欠という認識がある。世界で争奪戦の数学人材、経団連が産学連携で日本の出遅れ挽回できるか | 日経クロステック(xTECH);https://xtech.nikkei.com/atcl/nxt/column/18/00001/05872/
「数学人材」と聞いて、あまりピンとこない
そもそも数学の重要性がはっきりと分からない
そもそも人類にとって数学はどのような存在なのか
西暦一五〇〇年ごろ、歴史はそれまでで最も重大な選択を行ない、人類の運命だけではなく、おそらく地上のあらゆる生命の運命をも変えることになった。私たちはそれを科学革命と呼ぶ。(中略)近代科学には教義はない。とはいえ、共通の核となる研究の方法はある。そうした方法はみな、経験的観察結果(少なくとも私たちの五感の一つで観察できるもの)を収集し、数学的ツールの助けを借りてそれをまとめることに基づいている。ユヴァル・ノア・ハラリ. サピエンス全史(下) 文明の構造と人類の幸福
人類の飛躍的進化は数学的ツールによって成し得た
数学人材を目指すしかない
PHPer として数学的ツールを活用したい
数学をプログラミングに落とし込む際の困難数学的概念の理解特異値や数値誤差の考慮名前空間やクラスの整理
MathPHPmarkrogoyski/math-php - GitHub; https://github.com/markrogoyski/math-php
MathPHP を使ってできること代数学、算術演算、多項式、複利計算、配列の演算、ガンマ関数、ベータ関数、誤差関数、超幾何関数、符号関数、ロジスティック関数、シグモイド関数、エントロピー、行列、ベクトル、任意長の整数、複素数、四元数、有理数、内挿、数値微分、数値積分、ニュートン法、割線法、二分法、不動点反復法、順列、組合せ、カタラン数、正規分布、t分布、F分布、カイ二乗分布、ベータ分布、ガンマ分布、コーシー分布、一様分布、ベルヌーイ分布、二項分布、ポワソン分布、幾何分布、超幾何分布、多変量分布、分布表、サンプル生成、数列、集合、 ANOVA 、相関係数、分散、標準偏差、パーセンタイル、ユークリッド距離、マハラノビス距離、コサイン類似度、累積度数、累積相対度数、効果量、回帰分析、仮説検定...
使い方も簡単 - 行列の場合use MathPHP\LinearAlgebra\Matrix;use MathPHP\LinearAlgebra\MatrixFactory;// 1. Matrixクラスのインスタンスを生成$matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9],];$A = MatrixFactory::create($matrix);// 2.行いたい操作に対応するメソッドを呼び出し$Aᵀ = $A->transpose(); //転置行列$D = $A->diagonal(); //対角行列$A⁻¹ = $A->inverse(); //逆行列
例. 任意長の整数use MathPHP\Number\ArbitraryInteger;//任意長の巨大な整数を作成$bigInt = new ArbitraryInteger('876937869482938749389832');$extremelyBigInt = $bigInt->pow(2);$string = (string) $extremelyBigInt;// "769020026933275716728118484358230957952304988224"
例. パーセンタイルuse MathPHP\Statistics\Descriptive;$numbers = [13, 18, 13, 14, 13, 16, 14, 21, 13];// Percentiles$twentieth_percentile = Descriptive::percentile($numbers, 20); // 13.0$ninety_fifth_percentile = Descriptive::percentile($numbers, 95); // 19.8
例. 相関係数r ==ssx ysxy (x− )i∑ni xˉ 2(y−)i∑ni yˉ 2(x− )(y−)i∑ni xˉ i yˉuse MathPHP\Statistics\Correlation;$X = [1, 2, 3, 4, 5];$Y = [2, 3, 4, 4, 6];$r = Correlation::r($X, $Y); // 0.95940322360025
まとめ数学人材は人類の進化にとって重要(茶番)MathPHP を使って数学をプログラミングすると捗る
Thank you!