有下面的程序:f是已知數(shù)組,精度為小數(shù)點后10位。f=[1.0, 0.9797959184, 0.9595918367,..]def F3(x,a,b):help3 = special.beta(a,b)*ahelp2 = special.hyp2f1(a,1-b,1+a,x)help1 = x**afunc = help1*help2/help3return funcPDF = F3(f,alpha,beta_)alpha和beta_都是已知的常數(shù)。運行后輸出的PDF精度太高了。類似于:PDF=[1.00000000e+000, -2.17492975e+016, -2.42478284e+015,...]想把這組數(shù)據(jù)變成精度為小數(shù)點后4位的數(shù)。請問該怎么改?試了round和格式化,說array不能這樣。在def F3中修改,會出現(xiàn)‘Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 6, in F3TypeError: float argument required, not numpy.ndarray‘或者最好是在F3整個方程運算時就不需要那么高的精度。保持小數(shù)點后四位就可以了
3 回答

喵喵時光機
TA貢獻1846條經(jīng)驗 獲得超7個贊
我找你給我的修改了程序:from decimal import * getcontext().prec = 6
func = Decimal(help1)*Decimal(help2)/Decimal(help3)
運行之后出現(xiàn)錯誤,如圖所示。是不是Array不能用這個修改運算精度?
添加回答
舉報
0/150
提交
取消