溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python簡單的三元一次方程求解實例

發(fā)布時間:2020-09-19 06:20:43 來源:腳本之家 閱讀:353 作者:毛寶寶 欄目:開發(fā)技術(shù)

我就廢話不多說了,直接看代碼吧!

import re
 
lt = []
d = {}
for i in range(3):
 a = input('請輸入第%d個三元式'%(i + 1))
 st = a.split("=")
 r = re.compile('(-?\d?)[xyz]')
 b = re.findall(r, st[0])
 print(b)
 for j in range(3):
  if b[j] == "":
   b[j] = 1
  if b[j] == '-':
   b[j] = -1
 d = {
  'x': int(b[0]),
  'y': int(b[1]),
  'z': int(b[2]),
  'sum':int(st[1])
 }
 lt.append(d)
print(lt)
t = lt[0]['x'] / lt[1]['x']
for i in lt[0]:
 lt[1][i] = lt[1][i] * t - lt[0][i]
 
t1 = lt[0]['x'] / lt[2]['x']
for i in lt[0]:
 lt[2][i] = lt[2][i] * t1 - lt[0][i]
 
t2 = lt[1]['y'] / lt[2]['y']
 
for i in lt[0]:
 lt[2][i] = lt[2][i] * t2 - lt[1][i]
 
 
z = lt[2]['sum'] / lt[2]['z']
y = (lt[1]['sum'] - lt[1]['z'] * z) / lt[1]['y']
x = (lt[0]['sum'] - lt[0]['z'] * z - lt[0]['y'] * y)/lt[0]['x']
 
print(x,y,z)
#樣例輸入
#請輸入第1個三元式3x+6y-5z=12
#請輸入第2個三元式x-3y+2z=-2#請輸入第3個三元式5x-y+4z=10

補充知識:python 窮舉法 多元一次方程 實現(xiàn)求解教程

題目:小利前往書店買四種參考書,這四類書的價格分別為3元、5元、7元、11元。他有70元錢,每種參考書至少買一本,且最后要剩余的錢不足再買其中任意一本書,他有哪些選擇?

分析:這一道題是四元一次方程,存在兩個限制條件:1是要求各種書最少買一本,2是最多剩余2元。那么我們可以先每一種書各買一本,花掉3+5+7+11=26元,還剩44元,這44元可以任意分配,這樣就解決了第一個限制條件,其次,最多剩余2元,那么就存在剩余2元、1元、0元,三種情況,那么也就是說除了第一次花費26元購買的四本書以外,接下來購買的書籍可以是42元、43元、44元,由此第二個限制也解決了。

def x_3():
 t = [42,43,44] 
 d = 0
 for z in t:
  print("當剩余%d元時:"%(44-z))
  for i in range(z//3+1):
   for n in range(z//5+1):
    for m in range(z//7+1):
     for p in range (z//11+1):
      if 3*i + 5*n +7*m +11*p == z:
       d += 1
       print("第%d個解為:(%d,%d,%d,%d)"%(d,i+1,n+1,m+1,p+1) )

調(diào)用函數(shù),結(jié)果為:

python簡單的三元一次方程求解實例

python簡單的三元一次方程求解實例

python簡單的三元一次方程求解實例

以上為for語句實現(xiàn)窮舉法,倘若我們不適用for語句,使用while語句搭配if語句,應該如何實現(xiàn)呢?for語句中,我們給出了具體的循環(huán)次數(shù),簡單明了。當涉及2個變量同時變化時1個whil和1個if語句語句無法判斷是否停止,故還需要搭配一個while和if語句語句,當三個變量時,則需要3個while語句,3個if語句,同理,n變量時,可能就需要n個while語句,n個if語句,顯然,這讓太過于繁瑣。下面給出一個變量和兩個變量時的代碼塊

##先每本書買一本,這樣就保障了每本書最低一本的要求,這樣還剩余44元,可隨意分配
##按照只買種本書、兩種書、三種書、四種書的邏輯思路編寫代碼
def x_1(): ##只買一種書
 for m in [3,5,7,11]:
  x = 1
  while True:
   if 42 <= m*x <=44: ##大于等于42,是因為最多剩余2元
    print("只買%d的元的書,購買%d本,剩余%d元" %(m,x+1,44-m*x))
    break
   elif m*x >44:
    print("不存在只買%d元的書的情況"%m)
    break
   else:
    x +=1
def x_2(): ##只買兩種書
 ls = [3,5,7,11]
 m = 0
 ix = 0
 for m in range(3):
  ix = 0
  while True:
   if ix*ls[m] <= 44-ls[m+1]:
    ix += 1
    for q in range(m+1,4):
     iy = 1
     while True:
      if 42 <= ls[m]*ix +ls[q]*iy <=44:
       print("購買%d元書%d本,購買%d元書%d本,剩余%d元"%(ls[m],ix+1,ls[q],iy+1,44-(ls[m]*ix +ls[q]*iy)))
       iy += 1
      elif ls[m]*ix +ls[q]*iy > 44:
       iy = 0
       break
      else:
       iy += 1
   else:
    break

效果展示

python簡單的三元一次方程求解實例

由此可見,for語句比while語句更加簡便簡單。以上是通過窮舉法實現(xiàn),但若是一個多元一次方程組,存在多個解時,可能就需要其他方法了。在數(shù)據(jù)分析與挖掘方面,還有很多的知識點要學習。

以上這篇python簡單的三元一次方程求解實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI