64
私は例をのエンジニアリングでPythonからテストしていました。ValueError:数学的なドメインエラー
from numpy import zeros, array
from math import sin, log
from newtonRaphson2 import *
def f(x):
f = zeros(len(x))
f[0] = sin(x[0]) + x[1]**2 + log(x[2]) - 7.0
f[1] = 3.0*x[0] + 2.0**x[1] - x[2]**3 + 1.0
f[2] = x[0] + x[1] + x[2] -5.0
return f
x = array([1.0, 1.0, 1.0])
print newtonRaphson2(f,x)
私はそれを実行すると、それは次のようなエラーが表示されます。
File "example NR2method.py", line 8, in f
f[0] = sin(x[0]) + x[1]**2 + log(x[2]) - 7.0
ValueError: math domain error
私は、ログを削除して、さまざまな機能を追加するときに、それが動作するように私は、ログにそれを絞られています。私はベースとの何らかの干渉のためだと思いますが、私はどのように考え出すことができません。誰もが解決策を提案できますか?
x [0]、x [1]、x [2]は変数x、y、zで定義されているので、負のログをどのようにしているのか分かりません。ニュートンラフソンが使用します。解くにはこれらの方程式が必要です。 –
また、私は上記のコードでxを定義するとx [2] = 1.0と言っているので、log(1)= 0、atleastは私のものですが、多分私は間違っています.. –
関数の先頭に 'print x'を追加します** f **。方程式ソルバが連続的にxの異なる値を試してエラーを導く方法を知ることができます。 – mtadd