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年からの価格推移をリニアスケールとログスケールでプロット。 | トップページ | 宝塚を久しぶりにぶらぶら歩く。阪急宝塚駅前の像から宝塚大劇場、手塚治虫記念館、宝塚音楽学校、花の道などを通りかかる。 »
「パソコン・インターネット」カテゴリの記事
- PythonでFDTD法で電磁界シミュレーションできるopenEMSを使う(1)例題にあるマイクロストリップラインのノッチフィルタ(スタブ)を動かして電磁界分布を動画で見てみる。CSXCADでモデルは確認できるし、ParaViewで電磁界分布が見られる。Sパラメータも計算できる。(2025.05.14)
- ユニクロとAkamaiのコラボTシャツに書かれているコードを解読してみる。base64でデコードするとbashのシェルスクリプトが出てきて実行すると♥PEACE♥FOR♥ALL♥FOR♥ALL♥PEACE♥FOR♥ALL♥という文字が色付きで正弦波で流れた。(2025.05.01)
- Google Gemini 2.5 Pro experimentalに高周波で使われるSパラメータのTouchstoneファイルを読み込んでプロットするC#コードを書いてもらうと570行のコードができて動いた。ファイルの拡張子snpのnでポート数を判別するが人間を信じないのでデータ数えて確認するのに笑った。(2025.04.21)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年5月16日 BAWフィルタのAkoustisがSpace Xの子会社に売却へ、DuPontがPyraluxなどのエレクトロニクス部門をスピンオフさせQnityという名前に、Microwave Journal5月号でローデ・シュワルツが最新スペアナ解説、GSAが5G Advancedレポート発行(2025.05.16)
- 高周波・RFニュース 2025年5月15日 2025 104th ARFTG のプロシーディング公開、R&SがRF Testing Innovations Forum開催、IEEE Journal of Microwaves5月号発行、Microwave Journal5月特別号は宇宙特集、QorvoがMatter用SoC 3種発売、MediaTekが5G FWA用T930発売(2025.05.15)
- 高周波・RFニュース 2025年5月14日 TDKが8A流せる積層チップビーズを発表、Samsungが5.8㎜の薄さのGalaxy 25 Edge発表、InfineonがマルチセンステクノロジーのPSOC 4100T Plus発表、u-bloxがPointPerfect Global発表、下院委員会が3GHzと6GHzをオークションから除外(2025.05.14)
「旅行・地域」カテゴリの記事
- 明石海峡大橋を真下から見る。(2025.05.01)
- 神戸須磨シーワールドへ行ってきた。昔、神戸市立須磨海浜公園には行ったことがあるがすっかりきれいになっていた。そしてイルカとシャチのショーをみる。(2025.05.05)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年5月16日 BAWフィルタのAkoustisがSpace Xの子会社に売却へ、DuPontがPyraluxなどのエレクトロニクス部門をスピンオフさせQnityという名前に、Microwave Journal5月号でローデ・シュワルツが最新スペアナ解説、GSAが5G Advancedレポート発行(2025.05.16)
- 高周波・RFニュース 2025年5月15日 2025 104th ARFTG のプロシーディング公開、R&SがRF Testing Innovations Forum開催、IEEE Journal of Microwaves5月号発行、Microwave Journal5月特別号は宇宙特集、QorvoがMatter用SoC 3種発売、MediaTekが5G FWA用T930発売(2025.05.15)
- 高周波・RFニュース 2025年5月14日 TDKが8A流せる積層チップビーズを発表、Samsungが5.8㎜の薄さのGalaxy 25 Edge発表、InfineonがマルチセンステクノロジーのPSOC 4100T Plus発表、u-bloxがPointPerfect Global発表、下院委員会が3GHzと6GHzをオークションから除外(2025.05.14)
« 2025年のマグロの初競り価格は2億700万円。ということで1999年からの価格推移をリニアスケールとログスケールでプロット。 | トップページ | 宝塚を久しぶりにぶらぶら歩く。阪急宝塚駅前の像から宝塚大劇場、手塚治虫記念館、宝塚音楽学校、花の道などを通りかかる。 »
コメント