求解线性方程组。使用 numpy 的三个变量
Solving linear equations w. three variables using numpy
我目前需要一个 class,它必须能够显示和求解像这样的方程组:
| 2x-4y+4z=8 |
| 34x+3y-z=30 |
| x+y+z=108 |
我认为写一个 class 将方程系统左侧的东西转换为类似矩阵的对象会是个好主意,这里是这个系统的自制矩阵:
/2 -4 4\
|34 3 -1|
1 1/
我目前写的是:
class mymatrix(object):
def __init__(self):
o11 = None
o12 = None
o12 = None
o21 = None
o22 = None
o23 = None
o31 = None
o32 = None
o33 = None
def set(row, column, value):
string = 'o'+str(row)+str(column)+' = '+str(value)
exec(string)
def solve(self, listwithrightsidethings):
#Here I want to solve the system. This code should read the three
#values out of the list and solves the system It should return the
#values for x, y and z in a tuple: (x, y, z)
pass
我搜索了一个解决线性代数问题的模块,我找到了 numpy。我在手册中进行了搜索,但没有找到完全适合我的问题的解决方案
如何编写 solve
函数?
编辑:
python 应该这样解释
/o11, o21, o31\ 123
|o21, o22, o32| = 456
\o31, o32, o33/ 789
编辑:我想用 3 个变量解决它,return 它作为一个 元组
您可以使用 numpy.linalg.solve
:
import numpy as np
a = np.array([[2, -4, 4], [34, 3, -1], [1, 1, 1]])
b = np.array([8, 30, 108])
x = np.linalg.solve(a, b)
print x # [ -2.17647059 53.54411765 56.63235294]
import numpy as np
a = np.array([[2, -4, 4], [34, 3, -1], [1, 1, 1]])
b = np.array([8, 30, 108])
try:
x = np.linalg.solve(a, b)
except LinAlgError:
x = np.linalg.lstsq(a, b)[0]
我目前需要一个 class,它必须能够显示和求解像这样的方程组:
| 2x-4y+4z=8 |
| 34x+3y-z=30 |
| x+y+z=108 |
我认为写一个 class 将方程系统左侧的东西转换为类似矩阵的对象会是个好主意,这里是这个系统的自制矩阵:
/2 -4 4\
|34 3 -1|
1 1/
我目前写的是:
class mymatrix(object):
def __init__(self):
o11 = None
o12 = None
o12 = None
o21 = None
o22 = None
o23 = None
o31 = None
o32 = None
o33 = None
def set(row, column, value):
string = 'o'+str(row)+str(column)+' = '+str(value)
exec(string)
def solve(self, listwithrightsidethings):
#Here I want to solve the system. This code should read the three
#values out of the list and solves the system It should return the
#values for x, y and z in a tuple: (x, y, z)
pass
我搜索了一个解决线性代数问题的模块,我找到了 numpy。我在手册中进行了搜索,但没有找到完全适合我的问题的解决方案
如何编写 solve
函数?
编辑:
python 应该这样解释
/o11, o21, o31\ 123
|o21, o22, o32| = 456
\o31, o32, o33/ 789
编辑:我想用 3 个变量解决它,return 它作为一个 元组
您可以使用 numpy.linalg.solve
:
import numpy as np
a = np.array([[2, -4, 4], [34, 3, -1], [1, 1, 1]])
b = np.array([8, 30, 108])
x = np.linalg.solve(a, b)
print x # [ -2.17647059 53.54411765 56.63235294]
import numpy as np
a = np.array([[2, -4, 4], [34, 3, -1], [1, 1, 1]])
b = np.array([8, 30, 108])
try:
x = np.linalg.solve(a, b)
except LinAlgError:
x = np.linalg.lstsq(a, b)[0]