第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 newthon-raphson 時出現(xiàn)此錯誤:在 double_scalars 中遇到無效值

使用 newthon-raphson 時出現(xiàn)此錯誤:在 double_scalars 中遇到無效值

侃侃爾雅 2022-05-24 17:01:38
當(dāng)我嘗試在我的代碼中使用一些數(shù)字時出現(xiàn)此錯誤,我要求用戶輸入第一個角度,因此 python 使用 Newton-raphson 給出一個新數(shù)字。但是,當(dāng)我輸入小數(shù)字甚至是一些隨機(jī)數(shù)字時,我會收到該錯誤。這是我的代碼,這是我第一次使用python:import numpy as npdef cos(x):    return np.cos(np.radians(x))def sin(x):    return np.sin(np.radians(x))D = 5Q = 18def 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.001raiz=[ ]raiz.insert(0,0)i=0error=1while 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)我不知道如何解決它
查看完整描述

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)換為任何支持的類型


查看完整回答
反對 回復(fù) 2022-05-24
?
LEATH

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)


查看完整回答
反對 回復(fù) 2022-05-24
  • 2 回答
  • 0 關(guān)注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號