時には、逆行列を求めようとしているのに、どうしても最後まで求められない場合があります。または行列式を計算していて、その値がゼロになってしまう場合があります。こうした場合は、実は逆行列が存在しないということを意味しています。 このページでは、この逆行列が存在する条件について… という重要なポイントをアニメーションを交えながら誰でもわかるように解説していきます。この辺りから線形代数の面白味も増していくと思いますので、ぜひ楽しみながらご覧頂ければ嬉しく思います。 それでは始めましょう。 …
逆行列の求め方~掃き出し法と逆行列の公式の2つの方法の徹底解説~
ここでは逆行列の求め方についての方法を、どこよりもよく理解できるようにアニメーションを用いて解説します。 なお、逆行列とは、空間をある行列 \(A\) で線形変換した後に、元の空間に戻す行列 \(A^{-1}\) のことです。このことは以下のアニメーションで復習することができます。 このように空間を元に戻すために使う逆行列はどうしたら求めることができるのでしょうか? そのための方法は2つあります。 結論からお伝えすると、逆行列は掃き出し法で求めるのが一般的です。これさえ抑えておけば、\(2×2\) の行列と \(3×3\) …
行列の対角化とは?意味と方法と使い方[練習問題付き]
行列の対角化とは、ある行列の固有値を成分とした対角行列を作ることを意味します。 これはシンプルですが強力なツールであり、経済学から統計学、工学、物理学に到る様々な分野で、主に漸化式や微分方程式を効率よく解くために使われています。 そこで、このページでは、行列の対角化の方法を見ながら、対角化とは何かということを具体的に解説します。その後に行列の対角化の最も一般的な使い方である、行列の累乗の簡単な求め方を解説します。 そして最後に、理解を深めるために役立つ練習問題を用意しています。 ぜひ、行列の対角化に対する理解を深めるために役立てて頂ければ幸いです。それでは始めましょう。 …
連立方程式を行列で解く方法|行の基本変形と掃き出し法とは
行列で連立方程式の解を求めるのは、最も基本的な行列の使い方の一つです。とてもシンプルなものですが、行列を扱う上でなくてはならない技術です。 また、普通の解き方では、未知数が何十何百もあるような連立方程式に対応することはほとんど不可能です。しかし、行列とコンピュータの力を借りると、どれだけ未知数が多い連立方程式でも解くことができます。 とても重要な技術なので、ぜひ、このページでしっかりと学んでいただければと思います。 なお、このページで行列での連立方程式の解き方を学ぶ過程で… 単位行列とは何か行列の基本変形とは何か掃き出し方法とは何か といった重要な概念についてもバッ …
ベクトルの引き算の求め方と計算方法の初心者のための解説
ベクトルの引き算は、幾何学的には、反転したベクトルとの和で求めることができます。成分表示においては、単純にそれぞれの座標ごとに引き算をすることで求めることができます。 このベクトルの引き算を使いこなせるようにあると、例えば、速度 \( \vec{a} \) で移動する車の中から、速度 \( \vec{b} \) …
NumPyでテンソル積を取得するtensordot()関数の使い方
Numpyのtensordot()関数は、2つのテンソル(3次元配列)からテンソル積を求める関数です。 2つのテンソルa とb を渡して、第三引数に (aの次元軸, bの次元軸)をタプルで渡すと、a とb の指定の次元軸の要素の積の和を求めます。第三引数に1つの整数N だけを渡した場合は、a の最後からN個目の次元軸とb の最初からN個目の次元軸の要素の積の和を求めます。 実際にサンプルコードを見ながら確認していきましょう。 …
NumPyで外積を取得するouter()関数の使い方
NumPyでは2つの異なる配列から外積を求めるには、numpy.outer()を使います。この関数は基本的に2つの1次元配列(ベクトル)から外積を計算します。多次元配列を渡した場合は1次元配列化してから計算します。そのため複数のベクトルの外積を一度に取得するには不向きです。そのような場合は、np.multiply.outer()を使います。 このページではこれらについて詳しく解説します。 なお外積は、例えば a = [a0, a1, ..., an] と b = [b0, b1, ..., bm] という2つのベクトルがある場合、次のように算出されます。 |a→ x b→| …
NumPy配列の条件を満たす要素の確認や置換・カウントの方法まとめ
NumPyの配列から条件に合う要素を探索して操作するための主な関数やメソッドには以下があります。 これら以外にも使用可能な関数やメソッドはありますが、基本的にはこれらを抑えておけば十分です。もし、これら以外が気になるとしても、このページからのリンク先のページで解説しているのでご安心ください。 それでは、これらの使い方について見ていきましょう。 …
多次元配列から任意の要素を取得するnumpy.choose()の使い方
numpy.choose()は、インダイスの配列によって、多次元配列から要素を取得する際に使います。これを使わない場合と比べて、かなり自由に任意の値を取得することが可能になります。 解説が多少長くなっていますので、まずサンプルコードを先に見てからの方が理解が早いかもしれません。それでは見ていきましょう。 …
NumPyで条件に合う要素のインダイスを取得するargwhere()の使い方
NumPyのargwhere()関数は、① 0以外の要素のインダイスを要素ごとに取得します。または、② …
NumPyで0以外の要素のインダイスを取得するnonzero()の使い方
numpy.nonzero()は値が0以外(つまりFalse以外)の要素のインダイスを取得する関数です。この関数によって取得したインダイスは、配列の高度なスライスに使われます。なお、同機能のメソッド版にndarray.nonzero()もあります。基本的にはメソッド版の方が2.5倍ほど高速です。 さらに、同種の関数として、1次元配列に変換した場合の0以外の要素のインダイスを取得するnumpy.flatnonzero()と、0以外の要素の数を取得するnumpy.count_nonzero()もあります。 このページではこれらの関数について解説していきます。 …
NumPyの差分を取得する関数とメソッドまとめ
NumPyでは、配列の合計・和を取得する方法として、以下の3つ関数が備えられています。 np.diff: 配列の任意の次元軸方向の要素の階差数列を取得(第n階差も指定可能)np.ediff1d: 配列の全要素の階差数列を1次元配列で取得np.subtract: 2つの配列の要素ごとの差分を取得 なお、NumPy配列の和を求める関数群と違って、これらには同名のメソッドは存在しません。また配列内の要素に欠損値nanがある場合の処理が異なる関数もありません。 それでは、それぞれ簡潔に解説していきます。 …