Traceback (most recent call last):line 24 , in <module>
deta_h = np.abs(h(b) - h(a))
line 12, in h
- 0.000888 * 3 * x ** 2 + 0.03487 * 2 * x + 0.00239
OverflowError: (34, 'Result too large')
小白求解,应该怎么改
import numpy as np
def f(x):
return -0.0007348 * x ** 8 - 0.0003244 * x ** 7 + 0.004126 * x ** 6 + 0.001076 * x ** 5 \
- 0.00814 * x ** 4 - 0.0008882 * x ** 3 + 0.03487 * x ** 2 + 0.002393 * x + 0.1168
def h(x):
return -0.0007348 * 8 * x ** 7 - 0.0003244 * 7 * x ** 6 + 0.004126 * 6 * x ** 5 \
+ 0.001076 * 5 * x ** 4 - 0.00814 * 4 * x ** 3 \
- 0.000888 * 3 * x ** 2 + 0.03487 * 2 * x + 0.00239 //这里数据太大怎么解决
a = 113109036.345448 # 初始点(初始横坐标)
step = 1 # (步长)
count: int = 0 # 记录迭代次数
deta_h = h(a) # a更新前后的差值(初始值设定为起始点,也可以设置为大于阈值的任意的数)
print(deta_h)
error_rate = 1e-5 # 给定的阈值
while deta_h < error_rate:
b = a - step * h(a) # 更新a,用新的变量接收
deta_h = np.abs(h(b) - h(a)) //这也有问题?
count += 1
a = b - step * h(b)
y = f(b)
print('迭代次数%d' % count)
print(a)
print(y)
print('极值点为(%f,%f)' % (a, y))