{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Математик среди биологов: заметки с тегом сингулярное разложение",
    "_rss_description": "Я немного умею складывать, но от вычитания у меня всегда кружится голова",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/antonlyakh.ru\/blog\/tags\/singulyarnoe-razlozhenie\/",
    "feed_url": "https:\/\/antonlyakh.ru\/blog\/tags\/singulyarnoe-razlozhenie\/json\/",
    "icon": false,
    "author": {
        "name": "Антон Лях",
        "url": "https:\/\/antonlyakh.ru\/blog\/",
        "avatar": false
    },
    "items": [
        {
            "id": "522",
            "url": "https:\/\/antonlyakh.ru\/blog\/all\/singulyarnoe-razlozhenie-matricy-na-php\/",
            "title": "Сингулярное разложение матрицы на ПХП",
            "content_html": "<p>Это заметка-напоминалка о пхп-библиотеках, позволяющих найти <i>сингулярное разложение матрицы (SVD — singular value decomposition)<\/i>.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/antonlyakh.ru\/blog\/pictures\/svd-!.png\" width=\"800\" height=\"230\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Из <i>Bellegarda (2005) <a href=\"https:\/\/doi.org\/10.1109\/MSP.2005.1511825\">Latent semantic mapping<\/a><\/i><\/div>\n<\/div>\n<hr \/>\n<p class=\"foot\">Наилучший вариант ↓<\/p>\n<p><b><a href=\"https:\/\/github.com\/vladkolodka\/SVD\/tree\/master\">PHP — Singular value decomposition SVD<\/a> Влада Колодки<\/b>.<br \/>\nБез зависимостей. Один файл <kbd>svd.php<\/kbd>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">include &quot;svd.php&quot;;\r\n\r\n\/\/ Конструирую матрицу\r\n$matrix = [['0.00', '0.00', '0.56', '0.56'. '0.00', '0.00', '1.00'], \r\n           ['0.49', '0.71', '0.00', '0.00'. '0.00', '0.71', '0.00'],\r\n           ['0.49', '0.71', '0.00', '0.00'. '0.00', '0.71', '0.00'],\r\n           ['0.72', '0.00', '0.00', '0.00'. '1.00', '0.00', '0.00'],\r\n           ['0.00', '0.00', '0.83', '0.83'. '0.00', '0.00', '0.00']];\r\n\r\n\/\/ Создаю класс для работы с матрицами\r\n$matrixClass = new Matrix;\r\n\r\n\/\/ Вычисляю SVD\r\n$USV = $matrixClass-&gt;svd($matrix);\r\n\r\n\/*\r\n Получаю ассоциативный массив, в котором M = USV.\r\n ВНИМАНИЕ: матрица V уже транспонирована.\r\n\r\n $matrices['U'] = $U;\r\n $matrices['S'] = $S;\r\n $matrices['W'] = $W;\r\n $matrices['V'] = $this-&gt;matrixTranspose($V);\r\n $matrices['Rank'] = $rank;\r\n $matrices['K'] = $k;\r\n*\/\r\n\r\n\/\/ Восстанавливаю исходную матрицу\r\n$input = $matrixClass-&gt;matrixMultiplication($USV['U'] ,$matrixClass-&gt;matrixMultiplication($USV['S'], $USV['V']));\r\n$input = $matrixClass-&gt;matrixRound($input);<\/code><\/pre><hr \/>\n<p class=\"foot\">Тяжеловесная библиотека ↓<\/p>\n<p><b><a href=\"https:\/\/github.com\/markrogoyski\/math-php\">MathPHP<\/a> — Powerful modern math library for PHP<\/b><br \/>\nОгромное число разнообразных функций. Установка через композер.<\/p>\n<p><a href=\"https:\/\/github.com\/markrogoyski\/math-php?tab=readme-ov-file#linear-algebra---matrix\">Полный перечень функций для работы с матрицами<\/a>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"php\">use MathPHP\\LinearAlgebra\\Matrix;\r\nuse MathPHP\\LinearAlgebra\\MatrixFactory;\r\n\r\n\/\/ Create an m × n matrix from an array of arrays\r\n$matrix = [\r\n    [1, 2, 3],\r\n    [4, 5, 6],\r\n    [7, 8, 9],\r\n];\r\n$A = MatrixFactory::create($matrix);\r\n\r\n\/\/ Basic matrix data\r\n$array = $A-&gt;getMatrix();  \/\/ Original array of arrays\r\n$rows  = $A-&gt;getM();       \/\/ number of rows\r\n$cols  = $A-&gt;getN();       \/\/ number of columns\r\n\r\n\/\/ Matrix decompositions\r\n\/\/ LU decomposition\r\n$LU = $A-&gt;luDecomposition();\r\n$L  = $LU-&gt;L;  \/\/ lower triangular matrix\r\n$U  = $LU-&gt;U;  \/\/ upper triangular matrix\r\n$P  = $LU-P;   \/\/ permutation matrix\r\n\r\n\/\/ QR decomposition\r\n$QR = $A-&gt;qrDecomposition();\r\n$Q  = $QR-&gt;Q;  \/\/ orthogonal matrix\r\n$R  = $QR-&gt;R;  \/\/ upper triangular matrix\r\n\r\n\/\/ SVD (Singular Value Decomposition)\r\n$SVD = $A-&gt;svd();\r\n$U   = $A-&gt;U;  \/\/ m x m orthogonal matrix\r\n$V   = $A-&gt;V;  \/\/ n x n orthogonal matrix\r\n$S   = $A-&gt;S;  \/\/ m x n diagonal matrix of singular values\r\n$D   = $A-&gt;D;  \/\/ Vector of diagonal elements from S\r\n\r\n\/\/ Crout decomposition\r\n$LU = $A-&gt;croutDecomposition();\r\n$L  = $LU-&gt;L;  \/\/ lower triangular matrix\r\n$U  = $LU-&gt;U;  \/\/ normalized upper triangular matrix\r\n\r\n\/\/ Cholesky decomposition\r\n$LLᵀ = $A-&gt;choleskyDecomposition();\r\n$L   = $LLᵀ-&gt;L;   \/\/ lower triangular matrix\r\n$LT  = $LLᵀ-&gt;LT;  \/\/ transpose of lower triangular matrix\r\n\r\n\/\/ Eigenvalues and eigenvectors\r\n$eigenvalues   = $A-&gt;eigenvalues();   \/\/ array of eigenvalues\r\n$eigenvecetors = $A-&gt;eigenvectors();  \/\/ Matrix of eigenvectors\r\n\r\n\/\/ Solve a linear system of equations: Ax = b\r\n$b = new Vector(1, 2, 3);\r\n$x = $A-&gt;solve($b);<\/code><\/pre><hr \/>\n<p class=\"foot\">Библиотека для машинного обучения ↓<\/p>\n<p><b><a href=\"https:\/\/php-ml.readthedocs.io\/\">PHP-ML<\/a> — Machine learning library for PHP<\/b><br \/>\nНе по теме. Не понял, есть ли SVD.<\/p>\n",
            "date_published": "2025-06-10T16:04:46+03:00",
            "date_modified": "2025-06-10T16:12:51+03:00",
            "image": "https:\/\/antonlyakh.ru\/blog\/pictures\/svd-!.png",
            "_date_published_rfc2822": "Tue, 10 Jun 2025 16:04:46 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "522",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/antonlyakh.ru\/blog\/pictures\/svd-!.png"
                ]
            }
        }
    ],
    "_e2_version": 3559,
    "_e2_ua_string": "E2 (v3559; Aegea)"
}