3秒解一元二次不等式
前言
這是我第一次在CSDN上發表文章,可能我學識尚淺,可能你會對我的文章內容的嚴謹性、準確性產生質疑。但我想說的是:我和你一樣,滿懷著對知識的熱愛與渴求。在這里,我把自己閑暇時寫的一些東西拿出來分享,希望能對讀到這篇文章的人產生幫助。
我致力于文章的清晰、內容的簡潔與代碼的實用,在代碼實用性的基礎上把各個知識點融于其中,用最少的時間、最大的興趣學到最多的知識,這便是我的理念,也是我寫博客的初衷,希望大家喜歡!
淺談一元二次不等式
一元二次不等式,是指含有一個未知數且未知數的最高次數為2的不等式叫做一元二次不等式。它的一般形式是ax2+bx+c≠0(a不等于0)。
解法
當 Δ=b2-4ac>0 時,一元二次方程 ax2+bx+c=0 有兩個不等的實根,函數 y=ax2+bx+c (a≠0) 與 x 軸有兩個交點。
當 Δ=b2-4ac=0 時,一元二次方程 ax2+bx+c=0 有兩個相同的實根,函數 y=ax2+bx+c (a≠0) 與 x 軸有一個交點。
當 Δ=b2-4ac<0 時,一元二次方程 ax2+bx+c=0 無實根。,函數 y=ax2+bx+c (a≠0) 與 x 軸無交點。
結合 a>0,二次函數圖像開口向上; a<0,二次函數圖像開口向下,y>0,圖像在 x 軸上方等知識,可解一元二次不等式。
用Python代碼實現 3秒解一元二次不等式
第一步:用戶輸入
def num(a):if int(a) == float(a):return int(a)return float(a)print("整理格式,例如:ax2+bx+c>0 (a≠0)"," 即式子右邊為0") a = float(input("請輸入二次項系數:")) b = float(input("請輸入一次項系數:")) c = float(input("請輸入常數項:")) symbol = input("請輸入符號:(>=,>,<=,<)")其中,num() 為自定義函數,用于取整,即在不影響數值的情況下,去掉小數點后的 0
第二步:用 D 表示 Δ (Δ=b2-4ac)
D = b**2 - 4*a*c第三步,根據 a>0, a<0 分情況,并考慮各種可能性
a>0 的情況
if a > 0:if D < 0:if symbol == ">=" or symbol==">":print("x∈R")else:print("空集")elif D == 0:if symbol == ">=":print("x∈R")elif symbol==">":print("x∈(-∞,",-1*b/(2*a),")U(",-1*b/(2*a),",+∞)")elif symbol=="<=":print("x=",-1*b/(2*a))elif symbol=="<":print("空集")else:a1 = min(-1 * b / (2 * a) + D ** (1 / 2) / (2 * a), -1 * b / (2 * a) - D ** (1 / 2) / (2 * a))a2 = max(-1 * b / (2 * a) + D ** (1 / 2) / (2 * a), -1 * b / (2 * a) - D ** (1 / 2) / (2 * a))a1 = num(a1)a2 = num(a2)if symbol == ">=":print("x∈(-∞,",a1,"]U[",a2,",+∞)")elif symbol==">":print("x∈(-∞,", a1, ")U(", a2, ",+∞)")elif symbol=="<=":print("x∈[",a1,",",a2,"]")elif symbol=="<":print("x∈(", a1, ",", a2, ")")代碼解析
以 ax2+bx+c>0 為例,a > 0, 圖像開口向上
如果 D 小于 0,圖像在 x 軸上方,與 x 軸無交點,所以 x∈R
如果 D 等于 0,圖像在 x 軸上方,且與 x 軸有一個交點,所以 x ≠ -b / 2a, 代碼為 print(“x∈(-∞,”,-1b/(2a),")U(",-1b/(2a),",+∞)")
如果 D 大于 0,圖像與 x 軸有兩個交點,代碼為: print(“x∈(-∞,”, a1, “)U(”, a2, “,+∞)”)
a<0 的情況 與 a>0 的情況類似,直接給出代碼
elif a < 0:if D < 0:if symbol == ">=" or symbol==">":print("空集")else:print("x∈R")elif D == 0:if symbol == ">=":print("x=", -1 * b / (2 * a))elif symbol==">":print("空集")elif symbol=="<=":print("x∈R")elif symbol=="<":print("x∈(-∞,", -1 * b / (2 * a), ")U(", -1 * b / (2 * a), ",+∞)")else:a1 = min(-1 * b / (2 * a) + D ** (1 / 2) / (2 * a), -1 * b / (2 * a) - D ** (1 / 2) / (2 * a))a2 = max(-1 * b / (2 * a) + D ** (1 / 2) / (2 * a), -1 * b / (2 * a) - D ** (1 / 2) / (2 * a))a1 = num(a1)a2 = num(a2)if symbol == ">=":print("x∈[", a1, ",", a2, "]")elif symbol==">":print("x∈(", a1, ",", a2, ")")elif symbol=="<=":print("x∈(-∞,", a1, "]U[", a2, ",+∞)")elif symbol=="<":print("x∈(-∞,", a1, ")U(", a2, ",+∞)")代碼演示
以 x2-3x+2>=0 為例:
代碼直接給出了解集。
相關推薦
解一元三次方程
解一元二次方程
總結
以上是生活随笔為你收集整理的3秒解一元二次不等式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4G低功耗LTE无线通信模块
- 下一篇: 2022-2027年中国教育云行业市场调