2015-05-01 4 views
1

На тех же основаниях задано много вопросов. Я также прочитал официальную документацию (http://www.scipy.org/scipylib/faq.html#what-is-the-difference-between-matrices-and-arrays) относительно различий. Но я все еще пытаюсь понять философскую разницу между массивами numpy и матрицами.Разница между матрицей и матрицей numpy для решения линейных уравнений

Более ценно Я ищу причину для ниже упомянутых результатов.

#using array 
>>> A = np.array([[ 1, -1, 2], 
       [ 0, 1, -1], 
       [ 0, 0, 1]]) 
>>> b = np.array([5,-1,3]) 
>>> x = np.linalg.solve(A,b) 
>>> x 
array([ 1., 2., 3.]) 

`#using matrix 
>>> A=np.mat(A) 
>>> b=np.mat(b) 
>>> A 
matrix([[ 1, -1, 2], 
     [ 0, 1, -1], 
     [ 0, 0, 1]]) 
>>> b 
matrix([[ 5, -1, 3]]) 
>>> x = np.linalg.solve(A,b) 
>>> x 
matrix([[ 5., -1., 3.], 
     [ 10., -2., 6.], 
     [ 5., -1., 3.]]) 

Почему линейные уравнения, представленные в виде массива, дают правильное решение, а матричное представление дает другое матричное решение.

Кроме того, честно говоря, я не понимаю причину получения матрицы в качестве решения во втором случае.

Извините, если на вопрос уже дан ответ, и я не заметил, а также прошу прощения, если мое понимание массива и матрицы numpy неверно.

ответ

1

У вас есть вопрос транспонирования ... когда вы идете в матрицу земли, векторы-столбцы и вектор-строки больше не взаимозаменяемы:

import numpy as np 

A = np.array([[ 1, -1, 2], 
       [ 0, 1, -1], 
       [ 0, 0, 1]]) 
b = np.array([5,-1,3]) 
x = np.linalg.solve(A, b) 
print 'arrays:' 
print x 

A = np.matrix(A) 
b = np.matrix(b) 
x = np.linalg.solve(A, b) 
print 'matrix, wrong set up:' 
print x 

b = b.T 
x = np.linalg.solve(A, b) 
print 'matrix, right set up:' 
print x 

выходы:

arrays: 
[ 1. 2. 3.] 
matrix, wrong set up: 
[[ 5. -1. 3.] 
[ 10. -2. 6.] 
[ 5. -1. 3.]] 
matrix, right set up: 
[[ 1.] 
[ 2.] 
[ 3.]] 
+0

Теперь я понял, где Я был неправ. Большое спасибо. Ответ идеально подходит для тройника. –

+0

@ArulSelvam помню, что вы можете принять ответ ... –

+0

@SaulloCastro Спасибо, что уведомил меня. Я не знал, что могу принять ответ. Я новичок в stackoverflow.com. –

Смежные вопросы