2

ユーザーは、A、B、および C の値を入力して、二次方程式の根を取得することになっています。数学的に、私のコードは間違った答えを出します:

print "Quadratic Formula Calculator!!!"

a = input("Please, enter value for A: ")
b = input("Please, enter value for B: ")
c = input("Please, enter value for C: ")

quad =(b**2 - 4 * a * c)

if quad >= 0:
    quad ** 0.5
    print "quad"

else:
    print "can not compute"

solution1 = (-b + quad) / (2 * a)
solution2 = (b + quad) / (2 * a)

print " Solution 1!!!:", solution1
print " Soultion 2!!!:", solution2
4

3 に答える 3

4

あなたはこれを必要とします:

quad = quad ** 0.5

ただの代わりにquad ** 0.5

そして解決策は次のとおりです。

(-b + quad) / (2 * a)
(-b - quad) / (2 * a)

また、判別式の負の値を計算できない場合 (できる場合、答えは複素共役値になります)、 内の解の計算と出力を移動するだけquad >= 0です。

于 2013-02-12T21:59:54.720 に答える
2

m0nhawk の回答に基づいて構築された Hooked のコメント (およびWikipedia ) は、複素数用に設計されたcmath ライブラリを使用するアプローチです。

from math import pow
from cmath import sqrt

print "Quadradtic Formula Calculator!!!"
print "Ax²+Bx+C=0"
print "This will attempt to solve for x"

a = input("Please, enter value for A: ")
b = input("Please, enter value for B: ")
c = input("Please, enter value for C: ")

discriminant = sqrt(pow(b,2) - (4 * a * c))

if discriminant.imag != 0:
    print "discriminant is imaginary"
else:
    print " Solution 1!!!:", (-b + discriminant.real) / (2 * a)
    print " Solution 2!!!:", (-b - discriminant.real) / (2 * a)

cmath.sqrt.imagフィールドとフィールドを持つ複素数を返し.realます。

于 2013-02-12T22:39:21.537 に答える
1
solution1 = (-b + quad) / (2 * a)
solution2 = (b + quad) / (2 * a)

これは

solution1 = (-b + quad) / (2 * a)
solution2 = (-b - quad) / (2 * a)

式は -b プラスまたはマイナス ルートであり、プラスまたはマイナス b プラス ルートではありません。

于 2013-02-12T22:05:06.057 に答える