2 回答

TA贡献1827条经验 获得超4个赞
当我从这里执行第一个示例时,我得到了这些值。请注意,方程式是不同的。
1.4999999969612645
1.411188880378198
1.4142132016669995
1.4142135623730898
但这似乎是一个很好的例子。
import tensorflow as tf
h = tf.constant(.00000001, dtype='float64')
eps = tf.constant(.000001, dtype='float64')
b = tf.constant(2.0, tf.float64)
def f(x):
return tf.subtract( tf.multiply(x , x ) , 2. )
def fp(x):
return tf.divide( tf.subtract( f(tf.add(x, h)) ,
f(x)
) ,
h
)
def fpp(x):
return tf.divide( tf.subtract( fp( tf.add(x , h)) ,
fp(x)
),
h
)
def cond(i, x_new, x_prev):
return tf.logical_and( i < 5,
tf.less_equal( tf.abs( tf.cast(tf.subtract( x_new ,
x_prev
),dtype='float64')),
eps
)
)
def body( i, x_new, x_prev ):
fx = f( x_prev )
fpx = fp( x_prev )
x_new = tf.subtract( x_prev ,
tf.divide( b * fx * fpx ,
tf.subtract(b * fpx * fpx,
fx * fpp( x_prev )
)
)
)
xnew = tf.Print(x_new, [x_new], message="The root is : ")
with tf.control_dependencies([x_new,xnew]):
x_prev = tf.identity(xnew)
return [i + 1, xnew, x_prev ]
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print( sess.run(tf.while_loop(cond, body, [1, b - fpp(b), b])) )
根是:[1.4999999969612645]
根是:[1.411188880378198]
根是:[1.4142132016669995]
根是:[1.4142135623730898]
[5,1.4142135623730898,1.4142135623730898]
添加回答
举报