2017-12-08 27 views
0

私はa、b、cの値を見つけたいと思っています。それは私にエラーを与える:fsolveを使って3つの非線形方程式を解く

from scipy.optimize import fsolve 
def equations(p): 
    a,b,c = p 
    return (a*np.log10([-b])+c, a*np.log10([100-b])+c-100, a*np.log10([80-b])+c-20) 

a,b,c = fsolve(equations, (1, 1, 1)) 

print(a,b,c) 
> print(a,b,c) 

はTypeError:fsolveは:そこに「FUNC」引数の入力と出力の形状との不一致が「equations'.Shapeは(3)であるべきであるが、それは(3、1であります)。

答えて

0

方程式に角括弧[]を使用することはできません。 Pythonでは特別な意味を持っています。数学的操作のシーケンスを実行するには、丸括弧を使用する必要があります。次のコードはエラーを取り除きますが、fsolveがあなたのシステム用のソリューションに収束していないため、数学でさらに作業する必要があります。あなたはbの初期推測を1として与えていますが、その後はlog10(-b)となります。負数のログは定義されていません。

import numpy as np 
from scipy.optimize import fsolve 
def equations(p): 
    a,b,c = p 
    return (a*np.log10(-b)+c, a*np.log10(100-b)+c-100, 
     a*np.log10(80-b)+c-20) 

a,b,c = fsolve(equations, (1, 1, 1)) 

print(a,b,c) 

システムを紙に書き留めると、次の3つの式があります。第二及び第三の最初の式を代入

、あなたは、上記の二つの式が同時に真であることはできない

が残されています。あなたのシステムには答えがありません。

+0

ありがとう、どうすれば解決できるかご存知ですか? –