我想在python(而不是內置函數)中使用插值方法來獲取給定間隔的函數的根。Python插值錯誤
我已經做了以下,不知道我要去哪裏錯了,我已經做了與平分,我雖然唯一的區別將是測試點。
X1和X2的間隔的兩個端部中,f是功能和小量是公差
def interpolation (x1,x2,f,epsilon):
i = 1
n = 100
while i<n:
m = (f(x2)- f(x1))/(x2-x1)
b = f(x2) - m*(x2)
p = b
print (i,p,f(p))
if f(p) == 0 or b< epsilon:
print ('The root is at ',p,'after',i,'iterations')
break
i+= 1
if f(x1)*f(p) > 0: #Equal signs
x1 = p
else:
x2 = p
以f =的sin(x^2)簡單地返回100次迭代振盪如下運行此:
代碼
(80, 1.3266674970489443, 0.98214554271216425)
(81, 1.4900968376899661, 0.79633049173817871)
(82, 1.3266674970489443, 0.98214554271216425)
(83, 1.4900968376899661, 0.79633049173817871)
無關:不是'while while
phihag
「我做了以下事情,不知道我哪裏出錯了」。你能告訴我們代碼的行爲有什麼問題嗎? – Marcin
我添加了它,謝謝 – user1778543