Python實(shí)現(xiàn)一元一次與一元二次方程求解
一、前言
本文講述的是1元1次方程,1元2次方程的python解法。只用給出一般形式的系數(shù)和常數(shù),自動(dòng)給出方程的解。還附帶函數(shù)解析。
二、1元1次
1元1次方程的一般形式為ax+b=0。解出來真的超級(jí)超級(jí)簡(jiǎn)單。
ax+b=0(a≠0)
同減b,得ax=-b
同除以a,得x=-b/a
所以,我們只需要獲取a、b兩個(gè)數(shù)就能求出結(jié)果。
另外,我們需要分析一次函數(shù):y=kx+b。(k≠0)
k如果是正數(shù),則x越大y越大(增函數(shù))。k是負(fù)數(shù),則x越大y越?。p函數(shù))。
1.獲取a和b
2.計(jì)算x并輸出
3.通過待定系數(shù)法描繪函數(shù)圖像:
該函數(shù)是經(jīng)過點(diǎn)(0,c),(5,d)的一條直線。
4.說明該函數(shù)是增函數(shù)還是減函數(shù)。
太簡(jiǎn)單辣!代碼:
print("任意一個(gè)一元一次方程都可以表述為ax+b=0。請(qǐng)輸入a和b") a=int(input()) if a==0: print("一次項(xiàng)不能為0!") while True: input() b=int(input()) x=-b/a print("該方程的解是",x) print("y=",a,"x +",b,"的函數(shù)圖像是過點(diǎn)( 0,",b,")以及( 5,",5*a+b,")的一條直線。為一次函數(shù)。") if a>0: print("該函數(shù)為增函數(shù)。y隨著x的變大而變大。") else: print("該函數(shù)為減函數(shù)。y隨著x的變大而減小。")
輕松搞定。
如果你認(rèn)為這配不上你的智商,那接下來便是一元二次——
三、1元2次
在這之前,先講講1元2次的解法。
一元二次方程的一般形式是ax²+bx+c=0
我相信不會(huì)有人沒學(xué)就被難倒的~
回歸正題。我們先要通過判別式判斷有方程有多少實(shí)數(shù)根,再依次根據(jù)公式進(jìn)行解答。
接下來就是二次函數(shù)的分析。
二次函數(shù)的圖像是拋物線,對(duì)稱軸為b/2a。
ab>0,對(duì)稱軸在y軸左側(cè)。ab<0,對(duì)稱軸在y軸右側(cè)。ab=0,對(duì)稱軸在y軸
函數(shù)的頂點(diǎn)位置為(b/2a,4ac-b2/4a).這也是二次函數(shù)的最小/大值。
a>0時(shí),拋物線開口朝上。小于零則朝下。|a|越大,開口越小。
圖像與x軸有2個(gè)點(diǎn)重合,方程便有2個(gè)解。1點(diǎn)重合1個(gè)解,0點(diǎn)重合無實(shí)數(shù)解。
接下來,便是代碼。
1.獲取a,b,c
2.根據(jù)判別式判斷方程有幾個(gè)根,再按照公式計(jì)算。
3.輸入二次函數(shù)的性質(zhì),直接套公式。
因?yàn)榇a有點(diǎn)難,加個(gè)注釋:
import math#導(dǎo)入math模塊 print("請(qǐng)將方程轉(zhuǎn)換成ax2+bx+c=0的形式,a、b、c分別是多少?")#詢問 while True:#循環(huán)判斷輸入 try:#異常捕捉 a=int(input()) b=int(input()) c=int(input())#獲取a、b、c if a==0:#a不能為0 print(3/0) break#運(yùn)行到這兒沒bug就可以退出循環(huán) except: print("輸入錯(cuò)誤!請(qǐng)重新輸入!")#重新輸入一遍 pbs=b**2-4*a*c#設(shè)置變量判別式 dcz=b/2/a#設(shè)置變量對(duì)稱軸 if pbs > 0:#如果判別式大于0 gen=math.sqrt((pbs)/(4*a*a))-dcz#依照根式求根1 gen2=int(math.copysign(math.sqrt((pbs)/(4*a*a)),-1))-dcz#依照根式求根2 print("方程有兩個(gè)解,解1為",gen,"解2為",gen2)#輸出 genshu=2 elif pbs == 0:#如果判別式等于0 print("方程有一個(gè)解,為",dcz)#直接輸出 genshu=1 else:#如果判別式小于零 print("該方程無解")#輸出 genshu=0 """依照公式輸出數(shù)據(jù)""" print("函數(shù)y = ",a,"x 2 + ",b,"x + ",c,"是二次函數(shù),為拋物線") print("該函數(shù)的對(duì)稱軸為",dcz,) print("該函數(shù)的頂點(diǎn)也是最大/小值位置為( ",dcz,", ",(4*a*c-b*b)/(4*a),")") print("函數(shù)圖像與x軸的交點(diǎn)有",genshu,"個(gè),這意味方程有",genshu,"個(gè)實(shí)數(shù)解") if a>0:#判斷開口 print("方程的開口朝上") else: print("方程的開口朝下") if b==0:#判斷對(duì)稱軸 print("該函數(shù)的對(duì)稱軸在y軸上") elif (a>0 and b<0) or(a<0 and b>0): print("該函數(shù)的對(duì)稱軸在y軸右邊") else: print("該函數(shù)的對(duì)稱軸在y軸左邊")
以 3x²+6x-9=0為例,結(jié)果:
再以 2x²+4x+2=0為例。結(jié)果:
再以3x²+6x+9=0為例,結(jié)果:
到此這篇關(guān)于Python實(shí)現(xiàn)一元一次與一元二次方程求解的文章就介紹到這了,更多相關(guān)Python方程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python獲取攝像頭并實(shí)時(shí)控制人臉的實(shí)現(xiàn)示例
這篇文章主要介紹了用Python獲取攝像頭并實(shí)時(shí)控制人臉的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 d
這篇文章主要介紹了解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 dimensional. Got 4 dimensions.具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02在Pycharm的Project Files下建立多個(gè)項(xiàng)目的操作
這篇文章主要介紹了在Pycharm的Project Files下建立多個(gè)項(xiàng)目的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python請(qǐng)求庫(kù)發(fā)送HTTP POST請(qǐng)求的示例代碼
這段代碼使用了Python的requests庫(kù)來發(fā)送HTTP POST請(qǐng)求,向本地服務(wù)器的API發(fā)送數(shù)據(jù),并處理響應(yīng),一步步解釋這個(gè)代碼2024-08-08