開発用
◀ 質問一覧質問

openLCA で「Matrix is singular」と出て計算できません

2026-09-13 に公開

openLCA 2.0 で計算しようとすると「Matrix is singular」と出て止まります。複雑な配合の製品で、原料の多くを合成するプロセスを自分で作りました。データベースには Agribalyse と、無料で手に入るデータベースをいくつも取り込んでいます。

行や列が一次従属になっていると出るエラーだと読み、行列を書き出して 0 の行や列を探しましたが、見つかりません。どう原因を突き止めればよいのでしょうか。EF の二次データのプロセスを Direct calculation で計算したときにも、同じエラーが出ることがあるようです。

1 件の回答

アトラス編集部2026-09-13

まず、多くのデータベースを1つにまとめていること自体を見直すとよいかもしれません。 この質問者は、Agribalyse に加えて ELCD 3.2、NEEDS、USDA、ImpactWorld+、OzLCI 2019、worldsteel 2020、EXIOBASE、BioEnergieDat を1つの openLCA データベースに取り込んでいました。作業に使うデータベースにこれらを全部入れるのは、あまり良くないかもしれません。openLCA でデータベースの検証(validation)をかけると、取り込み時のエラーを先に見つけられるかもしれません。

そのうえで、行列式で原因の行(または列)を絞り込めます。 0 だけの行や列は特異行列のよくある原因ですが、原因はそれだけではありません。書き出した行列の行列式は、Excel でも R でも計算できます。含める行・列を少しずつ増やしていくと、ある時点で行列式が 0 になります。そのとき最後に加えた行(または列)が、特異行列の原因です。Excel での行列式の計算は、下に挙げた Real Statistics のページが参考になります。ほかの計算エラーの当たり方は openLCA で「Calculation failed」と出るとき、何を確認すればよいのでしょうか にあります。

EF の二次データ(ef_secondarydata_202202)のプロセスを Direct calculation で計算して出る場合は、自動接続が合っていないのかもしれません。 Direct calculation は供給元を自動で接続します。EF のデータベースは大部分が GaBi の背景データ由来で、完全に集約されているはずのシステムプロセスがそうなっていないものが多く、意図しない入力・出力の製品が接続先に選ばれてしまうことがあります。そのため EF のデータベースは自動接続に向かず、製品システムを手で組む必要がある、というのが回答者の推測です。この質問者は Lazy なら計算が通ると書いていますが、回答者は、Lazy でもあとで特異行列の問題に当たるだろうと推測しています。GaBi 由来のデータで無関係なプロセスが繋がってしまう件は GaBi のデータで、供給元に無関係なプロセスが入り込み結果を支配します にもあります。

答えるにはログインが要ります。

誰が書いたか分かる形で残すためです。表示名は役割名で構いません。

ログインする

関連する質問