import scipy.optimize
成都創(chuàng)新互聯(lián)公司專注于細(xì)河網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供細(xì)河營(yíng)銷(xiāo)型網(wǎng)站建設(shè),細(xì)河網(wǎng)站制作、細(xì)河網(wǎng)頁(yè)設(shè)計(jì)、細(xì)河網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造細(xì)河網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供細(xì)河網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
import sympy
print(scipy.optimize.fsolve(lambda x: x**2 + 2*x + 1, 0))
print(sympy.solve('x**2 + 2*x + 1'))
spicy.optimize.fsolve求數(shù)值解,需要給定初值,必要時(shí)需要選定求解器(不過(guò)解個(gè)二元一次而已無(wú)所謂了)。
sympy.solve求解析解。當(dāng)然還有更細(xì)致的玩法。
當(dāng)然其實(shí)一元二次方程這種有求根公式的玩意……直接套求根公式就行……
######python求標(biāo)準(zhǔn)的一元二次方程的解###############
a,b,c= map(float,input("請(qǐng)輸入aX^2+bX+c=0,函數(shù)中的三個(gè)參數(shù):(空格隔開(kāi))").split())
###使用公式b^2-4ac判定是否有解b^2-4ac####
i=b*b-4*a*c
if i0:
print("該方程無(wú)實(shí)數(shù)解!")
elif i==0:
print("該方程解為:%.2f"%((-1)*b/(2*a)))#有一個(gè)解
else:
print("該方程解為:%.2f或%.2f"%((((-1)*b+i**0.5)/(2*a)),(((-1)*b-i**0.5)/(2*a))))
該方法運(yùn)用是運(yùn)用公式求解,保留兩位小數(shù),只能求實(shí)數(shù)解,供參考,有問(wèn)題可追問(wèn)
編程最好的方法就是實(shí)踐,當(dāng)你能處理絕大多數(shù)例子之后,你會(huì)發(fā)現(xiàn)很多難懂的概念也就自然的解決了。python編程最好的方法就是實(shí)踐,當(dāng)你能處理絕大多數(shù)例子之后,你會(huì)發(fā)現(xiàn)很多難懂的概念也就自然的解決了。
一元二次方程為:ax^2+bx+c=0
我們先編寫(xiě)一個(gè)最簡(jiǎn)單的版本,我們成功的計(jì)算除了數(shù)值。下面這個(gè)程序不適合復(fù)數(shù)形式
代碼:
import?math
a=int(input('請(qǐng)輸入a的值:'))
b=int(input('請(qǐng)輸入b的值:'))
c=int(input('請(qǐng)輸入c的值:'))
derta=(b**2-4*a*c)??
if?a?==?0:
print('您輸入的a為0,方程ax^2+bx+c=0不能作為一元二次方程')
elif?derta0:
print('方程無(wú)實(shí)數(shù)解')
elif?derta==0:
print('方程有解,有一個(gè)實(shí)數(shù)解:')????
print(b*(-1)/(a*2))
else:
print('方程有解,有兩個(gè)實(shí)數(shù)解:')
print((-1*b+math.sqrt(derta))/2*a)
print((-1*b-math.sqrt(derta))/2*a)
結(jié)果測(cè)試:
二次方程,先計(jì)算判別式,判別式小于0 的,說(shuō)明方程有復(fù)數(shù)根,那么就用Complex類型來(lái)表示就行了,Complex類型是python的內(nèi)置類型。
1+2*i 就寫(xiě)成
x=complex(1,2)