最有效的求解方法:三行代碼搞定任何線性方程

2021-01-10 讀芯術

全文共1097字,預計學習時長5分鐘

圖源:unsplash

在三行函數中解決任何線性方程式的技巧,甚至可以在兩行代碼中重寫,不想了解一下嘛?據筆者所知,這是解決Python中線性方程的最有效方法。

defsolve_linear(equation,var='x'):

expression =equation.replace("=","-(")+")"

grouped =eval(expression.replace(var,'1j'))

return -grouped.real/grouped.imag

這是標準代數過程示例,最後得出答案。

它的原理是怎樣的呢?首先定義一個線性方程式,它必須以純形式可解。這意味著它只能有一個變量,通常寫為x。二元方程需要求解多個線性方程(方程組)。

線性方程式由三個主要部分組成:常數,變量和乘數。

不管是幾元方程還是運算的組合(加,減,乘和除),在括號範圍內都是有效的。只要遵守線性方程的這些定義,就可以通過函數解決。

接下來逐步分解該函數,用以下線性方程式的演示為例。

將第一行中等式右側的整個表達式移到左側,將等式轉換為要求值的表達式。

expression= equation.replace("="," - (")+")"

IDE中的演示如下:

等式中的所有「變量」已移至一側,等號後已無變量,該表達式等於0。

在第二行代碼中計算新表達式的值,表示為ax + b =0。使用Python的內置複數處理,其中j表示數學常數i =√-1。

grouped= eval(expression.replace(var,'1j')

注意,在函數初始化時將var指定為x。

eval函數有一個表達式。通過用已知的j(i)替換未知變量x,Python將兩類表達式元素分開求值,即變量和常量。對表達式求值時,答案為a * j +b,Python認定這是一個複數。由於使用j代替了x,所以結果是一個簡化且易於求解的線性方程。

首先,在eval()的演示工作流程中,它可以接收字符串中給出的任何Python命令:

因此,數學表達式與任何Python表達式的處理方式相同。eval()的獨到之處在於無需手動執行繁重的工作,而是利用Python的字符串處理。

Python會認為x實際上是i來自動求值字符串,這與下圖中的操作相同:

最後獲得了簡化形式ax + b = 0。通過標準和簡單的代數運算,發現x等於-b / a,或者通過創建的複數來運算,實數部分的負數(上例中為9)除以虛數乘數(上例中為1)。

return -grouped.real/grouped.imag

在最後一行代碼中,通過返回複數實數部分的負數除以虛數部分來簡單地返回此代數步驟。

通過操縱和利用Python的內置數學求值功能,這三行函數就可以對任何線性方程式(無論其長度或複雜度)進行處理啦。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 你的第一個有限元求解器——僅十行MATLAB代碼
    有限元分析話題中有不少討論有限元求解器的問題,但大都停留在概念層面,未見實際代碼。望本文能略起拋磚引玉之作用。以下代碼是基於MATLAB編寫。考慮一平面有界區域  單元即三節點線性三角形單元,其插值基函數(即形函數)
  • 多元線性回歸分析:納入多元回歸自變量的確定及求解多元回歸方程
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第五章,多元線性回歸分析:如何求解多元線性回歸方程。多元線性回歸分析是一種應用範圍很廣的定量預測方法,是使用最多的需求預測方法之一,也是商業領域應用最廣泛的建模技術之一。多元線性回歸分析幾乎可運用於任何商業環境中,當然,包括需求預測。本章主要內容如下。(專欄總目錄見下圖)1、多元回歸方程。2、納入多元回歸方程自變量的確定。3、求解多元回歸方程。多元回歸方程。
  • 誤差的分析與減少及Matlab解線性方程的四種方法
    結果只有一位有效數字,與之前相比,損失了5位有效數字。如果使用下面的方法:    為了避免上述情況,我們可以用第二個方程消去第一個方程中的x1,即(2)*0.00003-(1),得到如下表達式和結果:三、解非齊次線性方程組
  • 直接線性變換法(DLT)的求解
    #視覺slam與三維重建#直接線性變換法的提出見上節估計——2D射影變換,現在我們討論其求解方法1.超定解如果給出的點對應xi<->x'i多於四組,則由方程4.3導出的方程組Ah=0是超定的,如果點的位置是精確的,那麼A的秩仍為8並且有唯一零空間,如果圖像測量含有噪聲,那麼我們只能求方程的近似解,即:在定義一個適當代價函數的基礎上,我們需要求解使代價函數取最小值時所對應的h如何定義代價函數 ?
  • 2016考研:教你搞定一階線性微分
    對於第一個要求也是微分方程這部分最基本的考點,所以提醒大家在學習之初一定要對於常考方程的類型及解法掌握的非常好,這樣才能很好的完成第二個要求,因為第二個要求從總體上來題目是相對比較難的,關鍵原因是這部分考的比較綜合,會把高等數學中其他的知識點與這部分結合起來去考查大家,比如說把定積分的應用、導數等相關知識以實際例子的形式去考查大家,這時就需要大家能夠根據所學知識先把微分方程抽象出來然後再去求解
  • 【SymPy】(七)方程求解(八)矩陣
    【SymPy】(六)微積分(七)方程求解(八)矩陣1 基本操作2 基本方法3 矩陣構造函數4 先進的方法(七)方程求解from sympy import *然而,還有一個更簡單的方法:我們知道a=b相當於a−b=0。在SymPy中,任何不在Eq中的表達式都被SynPy的求解函數(如solveset())假定等於0。
  • 在R裡面對三元一次方程求解
    我搜索了一下,是如下3個步驟:①利用代入法或加減法,消去一個未知數,得出一個二元一次方程組;③將這兩個未知數的值代入原方程中較簡單的一個方程,求出第三個未知數的值,把這三個數寫在一起的就是所求的三元一次方程組的解。那麼,如果是要在R裡面操作呢,這個時候矩陣的思想就可以幫上忙了。
  • 2019考研數學:淺析高斯消元法如何求解線性方程組
    線性方程組是線性代數的核心考點之一,命題率比較高。線性方程組求解的基本方法就是高斯消元法。今天我們就給大家簡單講解如何利用高斯消元法求解線性方程組的解。首先,我們先來了解一下線性方程組和高斯消元法的相關概念。
  • 基於MATLAB求解三類方程組
    基於MATLAB求解三類方程組第1類 線性方程組線性方程組是指各個方程變量的最高次冪為1次的方程組。線性方程組主要有定解方程組、不定解方程組、超定方程組和奇異方程組。線性方程組的通解為齊次線性方程組的基礎解系加上線性方程組的一個特解。
  • 「每周一識」一階非齊次線性微分方程求解及應用舉例
    本文介紹一階非齊次線性微分方程的通解的應用、特解求解舉例,以及二階微分方程可用該通解求解的情形。一、方程通解公式一階非齊次線性微分方程的解析式為:y'+p(x)=q(x),則其通解表達式如下:y=e^[-∫p(x)]dx{∫q(x)*e^[∫p(x)dx]dx+c}.
  • 線性回歸與最小二乘法
    對於上述函數,包含了兩個自變量,為了求解其最小值,可以藉助偏導數來實現。通過偏導數和函數極值的關係可以知道,在函數的最小值處,偏導數肯定為0,所以可以推導出如下公式實際上,更加通過的方法是通過矩陣運算來求解,這種方法不僅適合一元線性回歸,也適合多元線性回歸,其本質是利用矩陣來求解以下方程組
  • 波動方程 熱傳導方程 求解方法
    號那天考的全國大學生數學競賽(CMC賽)的令人振奮的消息(雖然沒有一等獎,但能得二等獎已經出乎我的預料了)以後還要繼續加油正文偏微分方程中波動方程和熱傳導方程的求解方法都是分離變量法分離變量法的思想貫穿著這兩種方程。甚至可以用分離變量法求解少部分的拉普拉斯方程。拉普拉斯方程的求解方法相比于波動方程和熱傳導方程更為複雜,需要採用更多的數學工具。這邊是一些關于波動方程以及熱傳導方程的求解例子。並不難,但是在計算積分的時候需要較為小心,爭取不要計算錯誤。
  • 2016考研數學之解線性方程組的方法
    線性方程組的三種形式包括原始形式、矩陣形式、向量形式,高斯消元法是最基礎和最直接的求解線性方程組的方法,其中涉及到三種對方程的同解變換:(1)把某個方程的k倍加到另外一個方程上去;(2)交換某兩個方程的位置;(3)用某個常數k乘以某個方程。我們把這三種變換統稱為線性方程組的初等變換。
  • 牛頓法——二元二次方程求解可視化
    代數的本質是求解未知量的方程。例如,求x,其中:2x + 5 = 7 很容易看出,上面方程的解是x=1。另一種理解方法是把所有東西都移到一邊,然後調用表達式y,得到:y=2x - 2。然後,我們試著找出y=0求得x。但是當y用x表示變得越來越複雜的時候會發生什麼呢?我們能找到所有(或至少一個)滿足y=0得x的值嗎?
  • 為什麼能用常數變易法求解一階非齊次線性微分方程
    記得在學高等數學微分方程這一章的時候,對於一階非齊次線性微分方程的計算,老師講過一種不用背公式的簡單算法——常數變易法。
  • 三次方程的求解之路
    今天,這個方程的解法早已成為初中生的必備常識,然而回顧歷史,人類直到13世紀才找到完全解決它的辦法。   在一元二次方程問題被徹底解決後,一元三次方程的求解吸引了更多人的關注。儘管類似「x^3+ax+b=0(三次方程的特殊形)」這樣形式的三次方程在古希臘時代就有人研究過,但是由於缺乏必要的數學工具,當時人們對這個方程仍然知之甚少。
  • 8種用Python實現線性回歸的方法,究竟哪個方法最高效?
    8種方法實現線性回歸方法一:Scipy.polyfit( ) or numpy.polyfit( )這是一個最基本的最小二乘多項式擬合函數(least squares polynomial fit function),接受數據集和任何維度的多項式函數(由用戶指定),並返回一組使平方誤差最小的係數
  • 用Excel求解回歸方程的3種方法:LINEST、散點圖和數據分析工具
    《從入門到高手:線性回歸分析詳解》專欄總目錄見上圖。一元線性回歸方程。線性回歸,是假設因變量和自變量之間存在線性關係,線性關係可以用一元或多元線性方程式的形式表現出來,這個方程式就是線性回歸方程。回歸分析其實就是尋找一條最能「擬合」這組數據的直線,尋找一條最佳直線。(所謂「擬合」,在回歸分析中,是指找出一條穿過數據集的,並且使這組數據集上的每個數據點到直線距離最近的直線。)這個最佳的直線就是我們需要求解的線性回歸直線y=ax+b,即我們需要求出回歸方程中回歸係數a和截距b分別為多少。
  • 了解高階線性微分方程——初識二階線性微分方程
    題目在小編的上一篇文章:我要把你變弱——可降階的高階微分方程。做這部分的題目,首先要分清楚每道題是三種類型中的哪一種,然後才可下手做題。小編是這樣判斷的,首先看看方程中有沒有y,如果有y,那麼肯定是第三類,如果沒有,那就是第一或者第二類。
  • 線性電阻電路的分析方法_線性電阻的串並聯
    1、支路電流法和結點電壓法 支路電流法是以支路電流為電路變量,對於有n忍個結點、b條支路的電路,可以對任意(n—1)個結點列出(n—1)個獨立的KCL方程,對電路中的獨立迴路列出(b一(n—1)]個KVL方程,然後求出各支路電流的1種基本的方法。