« 2025年のマグロの初競り価格は2億700万円。ということで1999年からの価格推移をリニアスケールとログスケールでプロット。 | トップページ | 宝塚を久しぶりにぶらぶら歩く。阪急宝塚駅前の像から宝塚大劇場、手塚治虫記念館、宝塚音楽学校、花の道などを通りかかる。 »

2025年1月 6日 (月)

PHPの数値計算ライブラリmathPHPを使う(1)まずは行列計算。連立方程式、逆行列、行列式はもちろん、LU分解、QR分解、コレスキー分解なども簡単にできる。

過去にVisual C#用の数値計算ライブラリMath.NET numericsやJavaScript用の数値計算ライブラリmath.jsを使って遊んでみたが

今回はPHPの数値計算ライブラリ、mathPHPを使ってみる。

https://github.com/markrogoyski/math-php

インストールは書いてある通りにすればすぐできた。機能かなり充実している。ではまずは連立方程式、逆行列、行列式を計算してみよう。

事例はJavaScriptのときに使ったもの。


<?php
require_once __DIR__ . '/vendor/autoload.php';
use MathPHP\LinearAlgebra\MatrixFactory;
use MathPHP\LinearAlgebra\Vector;

$m = [
       [ 2, 1,  1],
       [-1, 1, -1],
       [ 1, 2,  3]
    ];
$A = MatrixFactory::create($m);
$b = new Vector([2, 3, -10]);
$x = $A->solve($b);
$A_inv = $A->inverse();
$detA = $A->det();
print("x = $x\n");
print("A⁻¹ = $A_inv\n");
print("det(A) = $detA\n");

結果は

x = [3, 1, -5]
A⁻¹ = [0.55555555555556, -0.11111111111111, -0.22222222222222]
[0.22222222222222, 0.55555555555556, 0.11111111111111]
[-0.33333333333333, -0.33333333333333, 0.33333333333333]
det(A) = 9
となって一瞬で計算できた。めっちゃ簡単。
行列の分解もLU分解(とCrout分解)、QR分解、コレスキー分解、特異値分解(SVD、これは別の記事で書く)などが簡単にできる。
QR分解やってみよう。Wikipediaに出てた例題を使う。

<?php
require_once __DIR__ . '/vendor/autoload.php';
use MathPHP\LinearAlgebra\MatrixFactory;

$A = MatrixFactory::create([[12, -51, 4],
                            [6, 167, -68],
                            [-4, 24, -41],
                            ]);
$QR = $A->qrDecomposition();
$Q = $QR->Q;
$R = $QR->R;

print("Q = $Q\n");
print("R = $R\n");
Q = [-0.85714285714286, 0.39428571428571, 0.33142857142857]
[-0.42857142857143, -0.90285714285714, -0.034285714285714]
[0.28571428571429, -0.17142857142857, 0.94285714285714]
R = [-14, -21, 14]
[5.5169544146758E-17, -175, 70]
[6.1489275210009E-18, -3.5527136788005E-15, -35]
となってこれも簡単に計算できた。
ちょっといろいろ使ってみよう(続く)。

« 2025年のマグロの初競り価格は2億700万円。ということで1999年からの価格推移をリニアスケールとログスケールでプロット。 | トップページ | 宝塚を久しぶりにぶらぶら歩く。阪急宝塚駅前の像から宝塚大劇場、手塚治虫記念館、宝塚音楽学校、花の道などを通りかかる。 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

旅行・地域」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 2025年のマグロの初競り価格は2億700万円。ということで1999年からの価格推移をリニアスケールとログスケールでプロット。 | トップページ | 宝塚を久しぶりにぶらぶら歩く。阪急宝塚駅前の像から宝塚大劇場、手塚治虫記念館、宝塚音楽学校、花の道などを通りかかる。 »

最近の記事

最近のコメント

2025年1月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
フォト
無料ブログはココログ