Pythonだといくつか連立方程式を解く方法(ライブラリ)があるのですが、JavaScriptにあるかどうか知りませんでした。
調べるとmath.jsというライブラリがあります。
数学に関する色々なことができます。
行列を扱うこともでき、これを使って連立方程式を解くことができます。
使い方
CDNが簡単です。
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/11.10.1/math.min.js"></script>
行列の積
まず行列の計算について見てみます。
積は次のとおりです。
x = [[1, 2], [3, 4]];
y = [[2, 3], [4, 5]];
result = math.multiply(x, y);
console.log(result);
y = [[2, 3], [4, 5]];
result = math.multiply(x, y);
console.log(result);
実行結果
[[10, 13], [22, 29]]
逆行列
x = [[1, 2], [3, 4]];
y = [[2, 3], [4, 5]];
result = math.inv(x);
console.log(result);
y = [[2, 3], [4, 5]];
result = math.inv(x);
console.log(result);
実行結果
[[-2, 1], [1.5, -0.5]]
連立方程式
8元連立方程式を解いてみます。
4x1+2x2+3x3+3x4+2x5+3x6+4x7+2x8=26
2x1+3x2+2x3+2x4+4x5+2x6+4x7+2x8=13
3x1+4x2+4x3+4x4+2x5+3x6+2x7+3x8=0
4x1+2x2+3x3+4x4+4x5+4x6+2x7+4x8=20
2x1+3x2+2x3+2x4+3x5+2x6+3x7+4x8=5
3x1+4x2+4x3+3x4+2x5+4x6+3x7+2x8=5
4x1+2x2+3x3+3x4+2x5+4x6+2x7+4x8=17
2x1+3x2+2x3+2x4+1x5+3x6+2x7+2x8=-6
A = [
[4, 2, 3, 3, 2, 3, 4, 2],
[2, 3, 2, 2, 4, 2, 4, 2],
[3, 4, 4, 4, 2, 3, 2, 3],
[4, 2, 3, 4, 4, 4, 2, 4],
[2, 3, 2, 2, 3, 2, 3, 4],
[3, 4, 4, 3, 2, 4, 3, 2],
[4, 2, 3, 3, 2, 4, 2, 4],
[2, 3, 2, 2, 1, 3, 2, 2]
];
b = [
26,
13,
0,
20,
5,
5,
17,
-6
];
x = math.lusolve(A, b);
console.log(x);
[4, 2, 3, 3, 2, 3, 4, 2],
[2, 3, 2, 2, 4, 2, 4, 2],
[3, 4, 4, 4, 2, 3, 2, 3],
[4, 2, 3, 4, 4, 4, 2, 4],
[2, 3, 2, 2, 3, 2, 3, 4],
[3, 4, 4, 3, 2, 4, 3, 2],
[4, 2, 3, 3, 2, 4, 2, 4],
[2, 3, 2, 2, 1, 3, 2, 2]
];
b = [
26,
13,
0,
20,
5,
5,
17,
-6
];
x = math.lusolve(A, b);
console.log(x);
実行結果
[
[8.000000000000004],
[-6.999999999999997],
[5.9999999999999964],
[-5],
[4],
[-3.000000000000001],
[1.9999999999999991],
[-1.0000000000000007]
]
コメント
[…] JavaScriptで連立方程式を解く方法を紹介しましたが、これをウェブページにしてみました。 […]