下面的代碼被用于查找x*使用梯度下降和這里的問題是,最終的結果req8是-1.00053169969469,當我圓它,它會導致-1.00000000000000。
我怎樣才能圓獲得-1.0或-1.00代替,而不使用任何其他模塊?
from sympy import *
import numpy as np
global x, y, z, t
x, y, z, t = symbols("x, y, z, t")
def req8(f, eta, xi, tol):
dx = diff(f(x), x)
arrs = [xi]
for i in range(100):
x_star = arrs[-1] - eta * round(dx.subs(x, arrs[-1]), 7)
if abs(dx.subs(x, x_star)) < tol:
break
arrs.append(x_star)
print(arrs[-1])
print(round(arrs[-1], 2))
def f_22(x):
return x**2 2*x - 1
req8(f_22, 0.1, -5, 1e-3)
uj5u.com熱心網友回復:
使用該format函式以所需的位數(2,在下面的示例中)列印您的舍入結果:
print("{:.2f}".format(round(arrs[-1], 2)))
編輯:正如@SultanOrazbayev 所指出的,這里不再需要舍入,您可以使用以下運算式列印結果:
print("{:.2f}".format(arrs[-1]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390108.html
上一篇:Sidekiq洗掉計劃檔案
下一篇:數學運算不回傳預期結果
