Pythonで2つの行列を加算するプログラム
この記事では、ユーザーが入力した2つの行列を受け取り、その合計(加算結果)を表示するPythonプログラムを紹介します。行列の加算では、ネストされたリスト内包表記や二重ループを活用することで、各要素を効率的に処理できます。
アルゴリズム
処理の手順は以下の通りです。
ステップ1:2つの行列を入力する。 ステップ2:ネストされたforループを使って、各行・各列を順番に走査する。 ステップ3:各イテレーションで、2つの行列の対応する要素同士を加算し、その結果を格納する。
サンプルコード
以下は、ネストされたループを使用して2つの行列を加算するプログラムです。まず1つ目の行列Aの要素を入力し、続いて2つ目の行列Bの要素を入力します。
# ネストされたループを使って2つの行列を加算するプログラム
A = []
n = int(input("N x N 行列の N を入力してください : ")) # ここでは3
# 2次元配列を格納するためにリストを使用
# ユーザー入力を受け取りリストに保存(ここでは1〜9を入力)
print("要素を入力してください ::>")
for i in range(n):
row = [] # 行を一時的に保存するリスト
for j in range(n):
row.append(int(input())) # 入力値を行リストに追加
A.append(row) # 行をリストに追加
print(A)
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 2次元配列を表示
print("行列形式で配列を表示")
for i in range(n):
for j in range(n):
print(A[i][j], end=" ")
print() # 改行
B = []
n = int(input("N x N 行列の N を入力してください : ")) # ここでは3
print("要素を入力してください ::>")
for i in range(n):
row = [] # 行を一時的に保存するリスト
for j in range(n):
row.append(int(input())) # 入力値を行リストに追加
B.append(row) # 行をリストに追加
print(B)
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 2次元配列を表示
print("行列形式で配列を表示")
for i in range(n):
for j in range(n):
print(B[i][j], end=" ")
print() # 改行
result = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
# 行を走査
for i in range(n):
# 列を走査
for j in range(len(A[0])):
result[i][j] = A[i][j] + B[i][j]
print("計算結果の行列 ::>")
for r in result:
print(r)
実行結果
実際にプログラムを実行すると、以下のような出力が得られます。ここでは、1つ目の行列として各行が「10, 20, 30」、2つ目の行列として各行が「100, 200, 300」の要素を入力しています。
Enter N for N x N matrix : 3 Enter the element ::> 10 10 10 20 20 20 30 30 30 [[10, 10, 10], [20, 20, 20], [30, 30, 30]] Display Array In Matrix Form 10 10 10 20 20 20 30 30 30 Enter N for N x N matrix : 3 Enter the element ::> 100 100 100 200 200 200 300 300 300 [[100, 100, 100], [200, 200, 200], [300, 300, 300]] Display Array In Matrix Form 100 100 100 200 200 200 300 300 300 Resultant Matrix is ::> [110, 110, 110] [220, 220, 220] [330, 330, 330]
補足:より簡潔な書き方
上記のプログラムでは二重のforループを使用しましたが、リスト内包表記を使えば、行列の加算部分はさらに簡潔に記述できます。
result = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]
また、数値計算を頻繁に行う場合は、NumPyライブラリを利用するのもおすすめです。np.array()で行列を作成すれば、「A + B」というシンプルな記述だけで加算が完了します。
まとめ
今回は、Pythonで2つの行列を入力し、対応する要素同士を加算して結果を表示する方法を解説しました。ポイントは以下の通りです。
- 行列は「リストのリスト」として扱う
- 二重ループまたはリスト内包表記で各要素にアクセスする
- 対応する位置の要素同士を足し合わせて新しい行列を作る
行列演算の基礎となる処理なので、ぜひ自分でもコードを書いて動作を確認してみてください。
-
Pythonで行列の転置を求めるプログラム
この記事では、与えられた問題に対する解法とアプローチについて詳しく解説します。 問題文 ある行列が与えられたとき、その転置を同じ行列に格納し、結果を表示する必要があります。 行列の転置とは、行を列に、列を行に入れ替えたものです。言い換えれば、行列Aの転置は、要素A[i][j]をA[j][i]と入れ替えることで得られます。 実装例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): A[i][j], A[j][i] = A[j][i], A[i][j] # ドライ
-
Pythonで2つの数値を加算するプログラム:ビット演算による実装方法
この記事では、2つの数値を加算するという問題に対する解法とアプローチについて詳しく解説します。 問題の概要 2つの大きな数値が与えられ、それらを加算した結果を出力することが求められます。 最も単純なアプローチは、オペランド同士を「+」演算子で結ぶ方法です。また、2つの数値をリストなどのイテラブルに格納し、Python標準ライブラリに用意されている組み込み関数 sum() を利用する方法もあります。 しかし、これらのアプローチでは10進数に対して直接演算を行うため、計算コストが増大するという課題があります。 ビット演算を用いた別のアプローチ そこで次に、数値をビット単位で操作する別のアプローチを