Чем отличаются NumPy от SymPy Row? - PullRequest
0 голосов
/ 14 октября 2018

Не могу понять, почему операция с NumPy просто приводит к неправильному ответу.Правильный ответ в матрице SymPy.Может кто-нибудь сказать мне, почему NumPy не может выполнить правильный расчет?Я схожу с ума.Спасибо!

# simplex tableau
import numpy as np
import sympy as sp

#NumPy
simplex = np.array([[2,4,3,1,0,0,0, 400], 
                    [4,1,1,0,1,0,0, 200], 
                    [7,4,4,0,0,1,0, 800], 
                    [-3,-4,-2,0,0,0,1, 0]])
simplex[1,:] = simplex[1,:] - (1/4)*simplex[0,:]
print(simplex)

#SymPy
simplex = sp.Matrix([[2,4,3,1,0,0,0, 400], 
                     [4,1,1,0,1,0,0, 200], 
                     [7,4,4,0,0,1,0, 800], 
                     [-3,-4,-2,0,0,0,1, 0]])
simplex[1,:] = simplex[1,:] - (1/4)*simplex[0,:]
simplex

Numpy:

[[  2   4   3   1   0   0   0 400]
 [  3   0   0   0   1   0   0 100]
 [  7   4   4   0   0   1   0 800]
 [ -3  -4  -2   0   0   0   1   0]]

Sympy:

Matrix([
[  2,  4,    3,     1, 0, 0, 0,   400],
[3.5,  0, 0.25, -0.25, 1, 0, 0, 100.0],
[  7,  4,    4,     0, 0, 1, 0,   800],
[ -3, -4,   -2,     0, 0, 0, 1,     0]])

1 Ответ

0 голосов
/ 14 октября 2018

Ваш массив NumPy имеет целочисленный тип d.Он буквально не может содержать числа с плавающей точкой.Дайте ему dtype с плавающей точкой:

simplex = np.array(..., dtype=float)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...