将Secant方法编程到Python中

问题描述 投票:-4回答:1

两个数之和为20.如果将每个数加到其平方根,则两个数的乘积为155.55。使用正割方法近似,在10 ^( - 4)范围内,两个数字的值。

python-3.x jupyter-notebook
1个回答
0
投票

基于http://campus.murraystate.edu/academic/faculty/wlyle/420/Secant.htm

#inital guess
x1 = 10

x2 = 50
Epsilon = 1e-4
#given function
def func(x): 
    return abs(x)**0.5 * (abs(x)+20)**0.5 - 155.55

y1 = func(x1)
y2 = func(x2)

#loop max 20 times
for i in range(20):
    ans = x2 - y2 * (x2-x1)/(y2-y1)
    y3 = func(ans)
    print("Try:{}\tx1:{:0.3f}\tx2:{:0.3f}\ty3:{:0.3f}".format(i,x1, x2, y3))
    if (abs(y3) < Epsilon):
        break

    x1, x2 = x2, ans
    y1, y2 = y2, y3

print("\n\nThe numbers are: {:0.3f} and {:0.3f}".format(ans, ans+20))
© www.soinside.com 2019 - 2024. All rights reserved.