簡體   English   中英

如何用Python解決這個數學難題?

[英]How to solve this math puzzle with Python?

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

如果你知道線性代數,你可以將問題框定為一個方程組,然后使用一個名為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

沒有必要學習矩陣理論(至少不是為此)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM