如何用Python解决这个数学难题?

时间:2016-12-18 17:16:00

标签: python math equation

   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解决它。

2 个答案:

答案 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'一部分。