質問編集履歴
1
回答がいただけないため,より詳細に書き直しました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
numpyを用
|
1
|
+
numpyを使用しないで転置行列の内積を求める方法および行列の内積の内積の求め方の計算方法について
|
body
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
-
### numpyを使用しないで共役勾配法の実装を試みていますが途中の式の計算がうまくでき
|
1
|
+
### numpyを使用しないで共役勾配法の実装を試みていますが途中の式の計算がうまくできず困っている.
|
2
2
|
|
3
|
-
|
3
|
+
|
4
4
|
numpyを使用しないで共役勾配法の解を算出するプログラムを作っています.
|
5
|
-
途中の a = float( np.dot(r0.T,r0) / np.dot(np.dot(p.T, A),p) )という計算をnpを使わないで計算したい.
|
5
|
+
途中の a = float( np.dot(r0.T,r0) / np.dot(np.dot(p.T, A),p) )という計算をnpを使わないで計算したいのですがうまく変えずに困っております.
|
6
|
+
自分なりに内包表記やzipを使用して試行錯誤はしたのですが,通りません.
|
7
|
+
アドバイスいただけたら幸いです.
|
6
8
|
|
9
|
+
また,みにくいソースかもしれませんがご容赦ください.
|
7
10
|
### 発生している問題・エラーメッセージ
|
8
11
|
|
9
12
|
```
|
@@ -92,11 +95,11 @@
|
|
92
95
|
|
93
96
|
|
94
97
|
for i in range(k < k+1):
|
95
|
-
d1 = dot(list(map(list,zip(*r0))),r0)
|
98
|
+
**d1 = dot(list(map(list,zip(*r0))),r0)
|
96
99
|
print(d1)
|
97
100
|
d2 = dot(dot(list(map(list,zip(*p))),A),p)
|
98
101
|
print(d2)
|
99
|
-
a = [e3 / e4 for e3,e4 in zip(d1,d2)]
|
102
|
+
a = [e3 / e4 for e3,e4 in zip(d1,d2)]**
|
100
103
|
#a = dot(r0.T,r0) / dot(dot(p.T, A),p)
|
101
104
|
x = x + p*a
|
102
105
|
r1 = r0 - dot(A*a, p)
|
@@ -115,15 +118,10 @@
|
|
115
118
|
|
116
119
|
### 試したこと
|
117
120
|
a = float( np.dot(r0.T,r0) / np.dot(np.dot(p.T, A),p) )という計算はnumpyを使用しているため下記のようにzipとリスト内包表記を使用したものに変更してみたがエラーは解決できませんでした.
|
121
|
+
**でくくってあるところの下のコメントa = dot(r0.T,r0) / dot(dot(p.T, A),p)というよな計算を実装したいです.
|
118
122
|
助言いただけたら幸いです.
|
119
123
|
|
120
|
-
d1 = dot(list(map(list,zip(*r0))),r0)
|
121
|
-
print(d1)
|
122
|
-
d2 = dot(dot(list(map(list,zip(*p))),A),p)
|
123
|
-
print(d2)
|
124
|
-
a = [e3 / e4 for e3,e4 in zip(d1,d2)]
|
125
|
-
|
126
124
|
### 補足情報(FW/ツールのバージョンなど)
|
127
125
|
Python version 3.5.6
|
128
126
|
jupyter notebook 使用
|
129
|
-
numpy sympyは使用しないで内積の計算を行いたいで
|
127
|
+
numpy sympyは使用しないで内積の計算を行いたいためnp.は使用できません.
|