python簡(jiǎn)單的三元一次方程求解實(shí)例
我就廢話不多說(shuō)了,直接看代碼吧!
import re lt = [] d = {} for i in range(3): a = input('請(qǐng)輸入第%d個(gè)三元式'%(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) #樣例輸入 #請(qǐng)輸入第1個(gè)三元式3x+6y-5z=12 #請(qǐng)輸入第2個(gè)三元式x-3y+2z=-2#請(qǐng)輸入第3個(gè)三元式5x-y+4z=10
補(bǔ)充知識(shí):python 窮舉法 多元一次方程 實(shí)現(xiàn)求解教程
題目:小利前往書(shū)店買四種參考書(shū),這四類書(shū)的價(jià)格分別為3元、5元、7元、11元。他有70元錢,每種參考書(shū)至少買一本,且最后要剩余的錢不足再買其中任意一本書(shū),他有哪些選擇?
分析:這一道題是四元一次方程,存在兩個(gè)限制條件:1是要求各種書(shū)最少買一本,2是最多剩余2元。那么我們可以先每一種書(shū)各買一本,花掉3+5+7+11=26元,還剩44元,這44元可以任意分配,這樣就解決了第一個(gè)限制條件,其次,最多剩余2元,那么就存在剩余2元、1元、0元,三種情況,那么也就是說(shuō)除了第一次花費(fèi)26元購(gòu)買的四本書(shū)以外,接下來(lái)購(gòu)買的書(shū)籍可以是42元、43元、44元,由此第二個(gè)限制也解決了。
def x_3(): t = [42,43,44] d = 0 for z in t: print("當(dāng)剩余%d元時(shí):"%(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個(gè)解為:(%d,%d,%d,%d)"%(d,i+1,n+1,m+1,p+1) )
調(diào)用函數(shù),結(jié)果為:
以上為for語(yǔ)句實(shí)現(xiàn)窮舉法,倘若我們不適用for語(yǔ)句,使用while語(yǔ)句搭配if語(yǔ)句,應(yīng)該如何實(shí)現(xiàn)呢?for語(yǔ)句中,我們給出了具體的循環(huán)次數(shù),簡(jiǎn)單明了。當(dāng)涉及2個(gè)變量同時(shí)變化時(shí)1個(gè)whil和1個(gè)if語(yǔ)句語(yǔ)句無(wú)法判斷是否停止,故還需要搭配一個(gè)while和if語(yǔ)句語(yǔ)句,當(dāng)三個(gè)變量時(shí),則需要3個(gè)while語(yǔ)句,3個(gè)if語(yǔ)句,同理,n變量時(shí),可能就需要n個(gè)while語(yǔ)句,n個(gè)if語(yǔ)句,顯然,這讓太過(guò)于繁瑣。下面給出一個(gè)變量和兩個(gè)變量時(shí)的代碼塊
##先每本書(shū)買一本,這樣就保障了每本書(shū)最低一本的要求,這樣還剩余44元,可隨意分配 ##按照只買種本書(shū)、兩種書(shū)、三種書(shū)、四種書(shū)的邏輯思路編寫(xiě)代碼 def x_1(): ##只買一種書(shū) for m in [3,5,7,11]: x = 1 while True: if 42 <= m*x <=44: ##大于等于42,是因?yàn)樽疃嗍S?元 print("只買%d的元的書(shū),購(gòu)買%d本,剩余%d元" %(m,x+1,44-m*x)) break elif m*x >44: print("不存在只買%d元的書(shū)的情況"%m) break else: x +=1
def x_2(): ##只買兩種書(shū) 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("購(gòu)買%d元書(shū)%d本,購(gòu)買%d元書(shū)%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
效果展示
由此可見(jiàn),for語(yǔ)句比while語(yǔ)句更加簡(jiǎn)便簡(jiǎn)單。以上是通過(guò)窮舉法實(shí)現(xiàn),但若是一個(gè)多元一次方程組,存在多個(gè)解時(shí),可能就需要其他方法了。在數(shù)據(jù)分析與挖掘方面,還有很多的知識(shí)點(diǎn)要學(xué)習(xí)。
以上這篇python簡(jiǎn)單的三元一次方程求解實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實(shí)例
這篇文章主要介紹了Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03自動(dòng)化Nginx服務(wù)器的反向代理的配置方法
這篇文章主要介紹了自動(dòng)化Nginx服務(wù)器的反向代理的配置方法,反向代理是Nginx服務(wù)器的招牌功能,需要的朋友可以參考下2015-06-06詳解如何用TensorFlow訓(xùn)練和識(shí)別/分類自定義圖片
這篇文章主要介紹了詳解如何用TensorFlow訓(xùn)練和識(shí)別/分類自定義圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Python基于詞頻排序?qū)崿F(xiàn)快速挖掘關(guān)鍵詞
這篇文章主要為大家詳細(xì)介紹了Python如何基于詞頻排序?qū)崿F(xiàn)快速挖掘關(guān)鍵詞功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03Python如何篩選序列中的元素的方法實(shí)現(xiàn)
這篇文章主要介紹了Python如何篩選序列中的元素的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07