2017-10-17 1 views
-3

私は行列関数Ax = bを解くためにpythonを使用しようとしています。この場合、私たちは私が出力さとは明らかに異なっている。このnumpy.linalg.solveの出力が間違っています

[ -1.00000000e+00 2.22044605e-16 2.22044605e-16] 

のようなものです

result = np.linalg.solve(A,b) 

以下の私のコードとしてこれを解決するためにnumpy.linalg.solveを使用しようとしていた

A = [[-1. 1. 0.] 
    [-1. 0. 1.] 
    [-2. 0. 0.]] 
b = [ 1. 1. 2.] 

を持っています正しい答え。 は、だから、私は、データ型について考えています

>>> import numpy as np 
>>> T = np.matrix([[-1.0,1.0,0.0],[-1.0,0.0,1.0],[-2.0,0.0,0.0]]) 
>>> b = np.array([1.0,1.0,2.0]) 
>>> np.linalg.solve(T,b) 
array([-1., 0., 0.]) 
>>> type(b[0]) 
<type 'numpy.float64'> 

以下のように、端末にこれを実装しようとした結果、この種のを引き起こす可能性がありますが、私のコードから両方のAとB「はnumpy.float64」です。だから私はこの状況の理由が何であるか把握できません。

+3

私によく見えます。 ( 'e-16'sに注意してください。) – user2357112

+1

最初のコメントは正しいです。楽しみのために:numpyをインポートした後、 '' 'np.set_printoptions(suppress = True)' ''を追加して観察してください。まだ不明な場合は、科学記法とnumpyの文書を参照してください。 – sascha

答えて

0

あなたはそれがこれはあなたが持っていたBのベクトルを返します。次

r = np.linalg.solve(T,b) 
[email protected] # Matrix mutiplication if you have a modern python 

を行うことにより、溶液だことを確認することができます。

関連する問題