A + B = 8
B + D = 8
A + C = 13
C - D = 6
如何找到A,B,C和D的值?
我认为这些值是整数和正数,并且这样做了:
a = range(0,14)
b = c = d = a
for i in a:
for x in b:
for y in c:
for z in d:
if (a[i] + b[x] == 8 and a[i] + c[y] == 13 and b[x] + d[z] == 8 and c[y]-d[z]==6):
print(a[i],b[x],c[y],d[z])
但这不起作用。即使这样,我也将范围扩展到a = range(-100,100)
。
在手动解决方程式之后(在谷歌的帮助下),我知道浮动涉及到,例如, A = 3.5
等。
但是如何用Python解决它。
答案 0 :(得分:8)
如果你知道线性代数,你可以将问题框定为一个方程组,然后使用一个名为numpy
的自由可用且流行的库来解决这个问题(帽子提示@Griboullis):
import numpy as np
A = [[1, 1, 0, 0],
[0, 1, 0, 1],
[1, 0, 1, 0],
[0, 0, 1, -1]]
b = [8, 8, 13, 6]
answer = np.linalg.solve(A, b)
如果你想在这个python解决方案背后的矩阵数学/线性代数中复习,你可以看看https://www.mathsisfun.com/algebra/systems-linear-equations-matrices.html。
答案 1 :(得分:6)
没有必要学习矩阵理论(至少不是为此)。
>>> from sympy import *
>>> var('A B C D')
(A, B, C, D)
>>> solve([A+B-8,B+D-8,A+C-13,C-D-6])
{B: 9/2, D: 7/2, C: 19/2, A: 7/2}
您只需要以A + B-8 = 0的形式表达A + B = 8等每个等式,然后省略' = 0'一部分。