Python實(shí)現(xiàn)一元一次與一元二次方程求解
一、前言
本文講述的是1元1次方程,1元2次方程的python解法。只用給出一般形式的系數(shù)和常數(shù),自動(dòng)給出方程的解。還附帶函數(shù)解析。
二、1元1次
1元1次方程的一般形式為ax+b=0。解出來(lái)真的超級(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越小(減函數(shù))。
1.獲取a和b
2.計(jì)算x并輸出
3.通過(guò)待定系數(shù)法描繪函數(shù)圖像:
該函數(shù)是經(jīng)過(guò)點(diǎn)(0,c),(5,d)的一條直線。
4.說(shuō)明該函數(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ù)圖像是過(guò)點(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)為這配不上你的智商,那接下來(lái)便是一元二次——
三、1元2次
在這之前,先講講1元2次的解法。
一元二次方程的一般形式是ax²+bx+c=0

我相信不會(huì)有人沒(méi)學(xué)就被難倒的~
回歸正題。我們先要通過(guò)判別式判斷有方程有多少實(shí)數(shù)根,再依次根據(jù)公式進(jìn)行解答。
接下來(lái)就是二次函數(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í),拋物線開(kāi)口朝上。小于零則朝下。|a|越大,開(kāi)口越小。
圖像與x軸有2個(gè)點(diǎn)重合,方程便有2個(gè)解。1點(diǎn)重合1個(gè)解,0點(diǎn)重合無(wú)實(shí)數(shù)解。
接下來(lái),便是代碼。
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分別是多少?")#詢問(wèn)
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)行到這兒沒(méi)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("該方程無(wú)解")#輸出
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:#判斷開(kāi)口
print("方程的開(kāi)口朝上")
else:
print("方程的開(kāi)口朝下")
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)文章
使用PIL(Python-Imaging)反轉(zhuǎn)圖像的顏色方法
今天小編就為大家分享一篇使用PIL(Python-Imaging)反轉(zhuǎn)圖像的顏色方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python中shapefile轉(zhuǎn)換geojson的示例
今天小編就為大家分享一篇關(guān)于Python中shapefile轉(zhuǎn)換geojson的示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
對(duì)python pandas讀取剪貼板內(nèi)容的方法詳解
今天小編就為大家分享一篇對(duì)python pandas讀取剪貼板內(nèi)容的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
在DigitalOcean的服務(wù)器上部署flaskblog應(yīng)用
這篇文章主要介紹了在DigitalOcean的服務(wù)器上部署flaskblog的方法,flaskblog是用Python的Flask開(kāi)發(fā)的一個(gè)博客程序,而DigitalOcean則是大受歡迎的SSD主機(jī)提供商,需要的朋友可以參考下2015-12-12
Python數(shù)據(jù)結(jié)構(gòu)樹(shù)與算法分析
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)樹(shù)與算法分析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
使用Python制作新型冠狀病毒實(shí)時(shí)疫情圖
最近被新型冠狀病毒搞的人心惶惶,很多城市被病毒感染,今天小編給大家分享使用Python制作新型冠狀病毒實(shí)時(shí)疫情圖,感興趣的朋友跟隨小編一起看看吧2020-01-01

