2 次元の配列または行列は、いくつかのアプリケーションで非常に役立ちます。行列には行と列があり、そこに数値が格納されます。 C では、多次元配列を使用して 2 次元行列を定義することもできます。この記事では、C を使用して特定の行列のノルムとトレースを計算する方法を説明します。
法線は、行列内のすべての要素の合計の平方根です。トレースは、主対角線に存在する要素の合計です。アルゴリズムと C コード表現を見てみましょう。
行列法線
$\begin{bmatrix}
5&1&8\改行
4 & 3& 9\改行
2&7&3\
\end{bmatrix},$
リーリー
上記の例では、3 x 3 の行列を使用しました。ここでは、すべての要素の合計を取得し、その平方根を求めます。理解を深めるためにアルゴリズムを見てみましょう。
###アルゴリズム###
行列 M を入力として読み取ります
- n行n列のMを考えてみましょう
- 合計: = 0
- i が 1 から n までの場合、実行します。
- j が 1 から n までの場合、次の操作を実行します。
- sum := sum M[ i ][ j ]ループの終了
-
ループの終了
- res := 平方根の合計
- 結果を返す
-
###例###
リーリー
###出力###
リーリー
マトリックス トレース
$\begin{bmatrix}
5&1&8\改行
4 & 3& 9\改行
2&7&3\
\end{bmatrix},$
リーリー
上記の例では、3 x 3 の行列を取得し、主対角線上のすべての要素の合計を取得しました。この合計が行列のトレースです。理解を深めるためにアルゴリズムを見てみましょう。
###アルゴリズム###
行列 M を入力として読み取ります
n行n列のMを考えてみましょう
合計: = 0
i が 1 から n までの場合、実行します。
- sum := sum M[ i ][ i ]
-
- ループの終了
- 合計を返します
-
###例###
リーリー
###出力###
リーリー
###結論は###
i>法線とトレースはどちらも行列演算です。これら 2 つの演算を実行するには、正方行列が必要です (正方トレース行列が必要なため)。法線は単に行列に存在するすべての要素の合計の平方根であり、トレースは行列の主対角線上に存在する要素の合計です。この行列は、C では 2 次元配列を使用して表現できます。ここでは、5 行 5 列 (合計 25 要素) の行列の例を 2 つ示します。行列にアクセスするには、インデックス操作を伴うループ ステートメントが必要です。通常の計算では、各要素を反復処理する必要があるため、2 つのネストされたループが必要になります。このプログラムの複雑さは O(n
2 ) です。トレースの場合、主対角線だけを見る必要があるため、行インデックスと列インデックスは同じになります。したがって、for ループは 1 つだけで十分です。 O(n) 時間で計算できます。 -
以上が法線ベクトルとトレースを見つけるための C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。