前提・実現したいこと
連立方程式を解くプログラムをpythonで実装したい。
発生している問題・エラーメッセージ
連立方程式を解くプログラムをpython3で作っていたところ、一部の計算(具体的には以下に書いてある部分)が合わず自分の力では原因がわからなかったため質問させていただきました。単純な質問で申し訳ありませんがご教授お願い致します。
該当のソースコード
python
1def hakidashi(A): 2 #i列目について掃き出し #上三角行列をつくる 3 for i in range(3): 4 temp = A[i][i] 5 print(temp) 6 for k in range(i,5): 7 print(A[i][k]) 8 A[i][k] = A[i][k] / temp#引く行の頭を1に 9 print(A) 10 for j in range(i+1,4): 11 temp = A[j][i] 12 for k in range(5): 13 A[j][k] -= A[i][k]*temp 14 print(A) 15 16 #r,a,b,cを求める 17 r = A[3][4]/A[3][3] 18 c = A[2][4]-r*A[2][3] 19 b = A[1][4]-c*A[1][2]-r*A[1][3] 20 a = A[0][4]-b*A[0][1]-c*A[0][2]-r*A[0][3] 21 return r,a,b,c 22 23A = np.array([[8,1,1,1,0],[1,1,7,8,4],[1,7,-1,4,-4],[1,8,4,1,2]])
試したこと
上のプログラムのprintの結果を確認したところ二行目までの掃き出しはできていますが三行目で以下のような結果となり計算が合わなくなっています。A[i][k] = A[i][k] / temp の部分を A[i][k] = float(A[i][k]) / tempとしても同様の結果となりました。
-50 #tempの値
-50 #A[i][k]の値
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 -52 -32]
[ 0 0 -52 -63 -30]]
-52
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 1 -32] #-52/-50で1.04となるはず..
[ 0 0 -52 -63 -30]]
-32
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 1 0]
[ 0 0 -52 -63 -30]]
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 1 0]
[ 0 0 -52 -63 -30]]
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 1 0]
[ 0 0 -52 -63 -30]]
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 1 0]
[ 0 0 0 -63 -30]]
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 1 0]
[ 0 0 0 -11 -30]]
[[ 1 0 0 0 0]
[ 0 1 7 8 4]
[ 0 0 1 1 0]
[ 0 0 0 -11 -30]]
補足情報(FW/ツールのバージョンなど)
jupiter notebook
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/06 11:13