新聞中心
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都做網(wǎng)站、上猶網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、上猶網(wǎng)絡(luò)營銷、上猶企業(yè)策劃、上猶品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供上猶建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
在三行函數(shù)中解決任何線性方程式的技巧,甚至可以在兩行代碼中重寫,不想了解一下嘛?據(jù)筆者所知,這是解決Python中線性方程的最有效方法。
- defsolve_linear(equation,var='x'):
- expression =equation.replace("=","-(")+")"
- grouped =eval(expression.replace(var,'1j'))
- return -grouped.real/grouped.imag
這是標(biāo)準(zhǔn)代數(shù)過程示例,最后得出答案。
它的原理是怎樣的呢?首先定義一個線性方程式,它必須以純形式可解。這意味著它只能有一個變量,通常寫為x。二元方程需要求解多個線性方程(方程組)。
線性方程式由三個主要部分組成:常數(shù),變量和乘數(shù)。
不管是幾元方程還是運算的組合(加,減,乘和除),在括號范圍內(nèi)都是有效的。只要遵守線性方程的這些定義,就可以通過函數(shù)解決。
接下來逐步分解該函數(shù),用以下線性方程式的演示為例。
將第一行中等式右側(cè)的整個表達(dá)式移到左側(cè),將等式轉(zhuǎn)換為要求值的表達(dá)式。
- expression= equation.replace("="," - (")+")"
IDE中的演示如下:
等式中的所有“變量”已移至一側(cè),等號后已無變量,該表達(dá)式等于0。
在第二行代碼中計算新表達(dá)式的值,表示為ax + b =0。使用Python的內(nèi)置復(fù)數(shù)處理,其中j表示數(shù)學(xué)常數(shù)i =√-1。
- grouped= eval(expression.replace(var,'1j')
注意,在函數(shù)初始化時將var指定為x。
eval函數(shù)有一個表達(dá)式。通過用已知的j(i)替換未知變量x,Python將兩類表達(dá)式元素分開求值,即變量和常量。對表達(dá)式求值時,答案為a * j +b,Python認(rèn)定這是一個復(fù)數(shù)。由于使用j代替了x,所以結(jié)果是一個簡化且易于求解的線性方程。
首先,在eval()的演示工作流程中,它可以接收字符串中給出的任何Python命令:
因此,數(shù)學(xué)表達(dá)式與任何Python表達(dá)式的處理方式相同。eval()的獨到之處在于無需手動執(zhí)行繁重的工作,而是利用Python的字符串處理。
Python會認(rèn)為x實際上是i來自動求值字符串,這與下圖中的操作相同:
最后獲得了簡化形式ax + b = 0。通過標(biāo)準(zhǔn)和簡單的代數(shù)運算,發(fā)現(xiàn)x等于-b / a,或者通過創(chuàng)建的復(fù)數(shù)來運算,實數(shù)部分的負(fù)數(shù)(上例中為9)除以虛數(shù)乘數(shù)(上例中為1)。
- return -grouped.real/grouped.imag
在最后一行代碼中,通過返回復(fù)數(shù)實數(shù)部分的負(fù)數(shù)除以虛數(shù)部分來簡單地返回此代數(shù)步驟。
通過操縱和利用Python的內(nèi)置數(shù)學(xué)求值功能,這三行函數(shù)就可以對任何線性方程式(無論其長度或復(fù)雜度)進(jìn)行處理啦。
網(wǎng)頁題目:有效的求解方法:三行代碼搞定任何線性方程
地址分享:http://www.dlmjj.cn/article/coshddi.html


咨詢
建站咨詢
