newbここでは、行列とその変換行列との差をtolleranceと比較しようとしています。まず、正方形であることを確認する必要がありますし、differnceがtolleranceであるかどうかを確認する必要があります。コードの最後の2行に到達できないというエラーが表示されます。出力は、上記のための真の真でなければなりませんが、私は最初の真の取得(すなわち、それは正方行列である。コードに到達できません-error
import numpy as np
a= np.array(([[1, 2, 3,],[2, 3, 4],[3, 4, 1]]))
def check_symmetric(a,tol):
b = a.transpose(1, 0)
print (a)
print(b)
rows = a.shape[1]
col = a.shape[0]
z= abs(a-b)
print(z)
if rows != col: #check to make sure the list is a square
return False
return True;
result = (abs(a - b) <= tol).all()
print(result)
print check_symmetric(a,tol=1e-8)
ありがとうございます。私はそれが正方形か正方形のいずれかであると報告してから、続けます。 – chrischris
私が理解しているように、あなたはそれが正方形であることを「報告する」ことは望ましくありません。あなたはそれが対称である場合に戻ってほしい。あなたが正方形ではないことを知った瞬間に 'False'を返しています。なぜなら、それは対称的ではないからです。あなたがそこに戻らなければ、あなたはそれが正方形であり続けていることを知っています。 'return true'行だけを削除し、' print(result) '、' return result'の代わりに使うべきです。行列が正方形で対称であれば 'True'、正方形で対称でなければ' False'となります。 –
また、実際に対称的であるかどうかを確認する前に "正方形"を印刷したい場合は、 'print'を使います。しかし、返さないでください。あなたが帰ったら、それは機能の終わりです。 –