2017-06-15 5 views
0

私は二次方程式の分解能を計算するプログラムを作っています。判別式dが負ではないが、複雑なルーツではない場合に有効です。負の数を虚数にする

虚数平方根を挿入するにはどうすればよいですか?私はa=4 b=4 c=1d0になる予定だった使用する場合

import math 
a = input("insert the value of a: ") 
b = input("insert the value of b: ") 
c = input("insert the value of c: ") 
def d(a,b,c) : return (b**2)-(4.*a*c) 
def x1(d,a,b,c) : return (b-(2.*b))+(math.sqrt (d))/2.*a 
def x2(d,a,b,c) : return (b-(2.*b))-(math.sqrt (d))/2.*a 
print ("the values of D,X' e X'' respectively: ") 
print (d(a,b,c),x1(d,a,b,c),x2(d,a,b,c)) 

はまた、私は次のエラーを取得します。私はここで何が間違っているのか分からない。

Traceback (most recent call last): 
    File "H:/Python27/equation2.py", line 9, in <module> 
    print (d(a,b,c),x1(d,a,b,c),x2(d,a,b,c)) 
    File "H:/Python27/equation2.py", line 6, in x1 
    def x1(d,a,b,c) : return (b-(2.*b))+(math.sqrt (d))/2.*a 
TypeError: a float is required 
+1

あなたはあなたの答えを更新し、期待している結果を説明してください。 – Soviut

答えて

4

あなたは関数のsqrtを取得しようとしています。関数名はではなく、は最新の呼び出しの結果を自動的に表します。一時変数を試してください:

d_result = d(a,b,c) 
print (d_result, x1(d_result,a,b,c), x2(d_result,a,b,c)) 

これは致命的なエラーのみを修正します。すぐに問題になるのは、複雑なルーツを扱わないということです。 注:与えられたa = b = c = 4の場合、の場合、判別式は、投稿状態として-48,ではなく、ではありません。ここで

、次の2つのコースがあります:ABS(d_result)の平方根を取る、虚数部としてその保存します

  1. を複雑な部品を自分で書くのPython
  2. を利用できる複素数上のドキュメントを読んで実数部を別々に計算します。
+0

あなたの助けをありがとう...私は本当にこのすべてのコードのもので新しい。 –

関連する問題