2016-04-11 14 views
2

sympyを使用して2つの用語のLCMを検索しようとしています。私が使用していたコードは次のとおりです。検査によって、sympy.lcm用語が正しく展開されていません

1.0*s**2 + 0.0204*s + 7.99999999999992e-6 

しかし返し

import sympy 
s=sympy.Symbol("s") 
A=(s+0.0004)*(s+0.02) 
B=(s+0.02) 
sympy.lcm(A,B) 

LCMは、私はsympy.lcmが正確に計算するために取得できますか

1.0*s**2 + 0.0204*s + 8.0e-6 

する必要があります溶液?

ありがとうございます。

答えて

3

ここでの問題は、0.02と0.004は浮動小数点数のような有限の正確な表現を持たないため、開始する前に丸めに問題があることです。

s**2 + 3*s/125 + 1/12500 
:これは今、正確な結果を与える

A = (s + sympy.Rational(4, 1000))*(s + sympy.Rational(2, 100)) 
B = (s + sympy.Rational(2, 100)) 
sympy.lcm(A, B).expand() 

:あなたは、正確なsympy.Rational Sを使って、これらの番号を維持することができます