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,其牛頓拉夫森使用。它需要這些方程來解決。 – 2013-04-08 23:11:40
此外,正如我所說的x [2] = 1.0當我在上面的代碼中定義x時,log(1)= 0,至少這是我雖然,也許我錯了..謝謝你的幫助.. – 2013-04-08 23:18:55
在你的函數** f **的開頭添加一個'print x'。你會看到方程求解器如何連續嘗試不同的x值,導致你的錯誤。 – mtadd 2013-04-08 23:28:07