fukke.cafe

Tensorflowjsで連立方程式を解く

{x+y=2x+3y=4\begin{cases} x + y = 2 \\ x + 3y = 4 \end{cases}
の解は、
以下の行列を解くと得られます。
(1113)(xy)=(24)\begin{pmatrix} 1 & 1 \\ 1 & 3 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 2 \\ 4 \end{pmatrix}
両辺に逆行列をかけて
(xy)=(1113)1(24)\begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 3 \end{pmatrix} ^{-1} \begin{pmatrix} 2 \\ 4 \end{pmatrix}
これを解けば求めれます。
import * as tf from "@tensorflow/tfjs";
import * as math from "mathjs";

const C = [
  [1, 1],
  [1, 3]
]

const D = [
  [2],
  [4]
]

tf.matMul(math.inv(C), D).print()
同様に
{x+y+z=6x+2y+2z=112x+3y4z=3\begin{cases} x + y + z = 6 \\ x + 2y + 2z = 11 \\ 2x + 3y - 4z = 3 \end{cases}
の解は、
const E = [
  [1, 1, 1],
  [1, 2, 2],
  [2, 3, -4]
]

const F = [
  [6],
  [11],
  [3]
]

tf.matMul(math.inv(E), F).print()
tensorflowjsには逆行列を求めるメソッドがなかったので自作するか今回はmathjsを使っている。 本家tensorflowにはあるのになんでないんだろう🤔

公開日 2023/01/11

Thanks you for reading.