2 回答

TA貢獻(xiàn)1804條經(jīng)驗 獲得超8個贊
問題是您numpy.float64在代碼中輸入了類型,而 float64 就像 c float,并且重載所有操作(包括)電源以使其正常工作。當(dāng)你這樣做時,你會發(fā)生錯誤
(value ** 0.33)
其中 value 是負(fù)numpy.float64類型。
值** 0.33可能是一個虛數(shù)。Python numpy float64s 是真實的,所以上面是一個無效的表達(dá)式(python float 可以處理)。為了使它起作用,您可以將其轉(zhuǎn)換為float(但最終結(jié)果可能不正確)
您可以這樣轉(zhuǎn)換 poli 函數(shù):
def poli(x):
y= (2/D**2)*(float(((D*(Q**2))/9.81)*(sin(x)))**0.33) + 0.25*sin(2*x) + 0.5*x - x
return (y)
之后你得到另一個錯誤,但那是另一個故事
TypeError:輸入類型不支持 ufunc 'radians',并且根據(jù)轉(zhuǎn)換規(guī)則 ''safe'' 無法安全地將輸入強(qiáng)制轉(zhuǎn)換為任何支持的類型

TA貢獻(xiàn)1936條經(jīng)驗 獲得超7個贊
np.cos 和 np.sin 指的是弧度。無需轉(zhuǎn)換
import numpy as np
def cos(x):
return np.cos(x)
def sin(x):
return np.sin(x)
D = 5
Q = 18
def poli(x):
y= (2/D**2)*((((D*(Q**2))/9.81)*(sin(x)))**0.33) + 0.25*sin(2*x) + 0.5*x - x
return (y)
def deri(x):
d=0.0087*cos(2*x) + ((0.0155*(Q**0.66)*cos(x))/(D*9.81*((D*sin(x))/9.81)*0.67)) - 0.5
return (d)
print ("Método de Newton-Raphson")
x = float(input('Introduce el valor de inicio '))
erroru=0.001
raiz=[ ]
raiz.insert(0,0)
i=0
error=1
while abs(error) > erroru:
x1=x-(poli(x)/deri(x))
raiz.append(x1)
i=i+1
x=x1
error=(raiz[i]-raiz[i-1])/raiz[i]
print (x)
添加回答
舉報