2011-02-15 76 views

回答

5

提高Keiths的回答是:

開始用多項式P(x) = a*x^2 + b*x + c。 使用二次公式(或您選擇的其他方法)找到根r1r2P(x) = 0

您現在可以將P(x)分解爲a*(x-r1)(x-r2)。如果你的因子(3x-4)(x-9)的解答是3 *(x-4/3)(x-9),那麼這個解決方案將會是3 *(x-4)。 您可能想要找到一種方法將3乘以因子以擺脫分數/看起來很漂亮。在這種情況下,它可能有助於使用分數算術而不是雙打,因此您可以更好地瞭解分母。

6
+0

到的因素呢?沒有解決 – tekknolagi 2011-02-15 01:05:22

+1

他們基本上是等效的。查看引用頁面的Quadratic Factorization部分。 – 2011-02-15 01:06:50

0

我試着實施hugomg的方法。我從網上偷走了「gcd」和「簡化分數」功能。這裏是我的草率做法:

from math import sqrt 

def gcd(a, b): 
    while b: 
     a, b = b, a % b 
    return a 

def simplify_fraction(numer, denom): 
    if denom == 0: 
     return "Division by 0 - result undefined" 

    # Remove greatest common divisor: 
    common_divisor = gcd(numer, denom) 
    (reduced_num, reduced_den) = (numer/common_divisor, denom/common_divisor) 
    # Note that reduced_den > 0 as documented in the gcd function. 

    if common_divisor == 1: 
     return (numer, denom) 
    else: 
     # Bunch of nonsense to make sure denominator is negative if possible 
     if (reduced_den > denom): 
      if (reduced_den * reduced_num < 0): 
       return(-reduced_num, -reduced_den) 
      else: 
       return (reduced_num, reduced_den) 
     else: 
      return (reduced_num, reduced_den) 

def quadratic_function(a,b,c): 
    if (b**2-4*a*c >= 0): 
     x1 = (-b+sqrt(b**2-4*a*c))/(2*a) 
     x2 = (-b-sqrt(b**2-4*a*c))/(2*a) 
     # Added a "-" to these next 2 values because they would be moved to the other side of the equation 
     mult1 = -x1 * a 
     mult2 = -x2 * a 
     (num1,den1) = simplify_fraction(a,mult1) 
     (num2,den2) = simplify_fraction(a,mult2) 
     if ((num1 > a) or (num2 > a)): 
      # simplify fraction will make too large of num and denom to try to make a sqrt work 
      print("No factorization") 
     else: 
      # Getting ready to make the print look nice 
      if (den1 > 0): 
       sign1 = "+" 
      else: 
       sign1 = "" 
      if (den2 > 0): 
       sign2 = "+" 
      else: 
       sign2 = "" 
      print("({}x{}{})({}x{}{})".format(int(num1),sign1,int(den1),int(num2),sign2,int(den2))) 
    else: 
     # if the part under the sqrt is negative, you have a solution with i 
     print("Solutions are imaginary") 
    return 

# This function takes in a, b, and c from the equation: 
# ax^2 + bx + c 
# and prints out the factorization if there is one 

quadratic_function(7,27,-4) 

如果我運行此我得到的輸出:

(7x-1)(1x+4)