def equartion(a, b, c): delta = b ** 2 - 4 * a * c if delta > 0: x1 = (-b + sq(delta)) / (2 * a) x2 = (-b - sq(delta)) / (2 * a) print('此方程有两个不相等的实数解,它们是:') print(f'x1={x1}, x2={x2}') elif delta == 0: x = -b / (2 * a) print(f'此方程有两个相等的实根,它们是:') else: print('无实数解')优化这段代码
时间: 2023-06-02 16:07:36 浏览: 165
def equation(a, b, c):
delta = b ** 2 - 4 * a * c
if delta > 0:
x1 = (-b + delta ** 0.5) / (2 * a)
x2 = (-b - delta ** 0.5) / (2 * a)
print(f'此方程有两个不相等的实数解,它们是:x1={x1}, x2={x2}')
elif delta == 0:
x = -b / (2 * a)
print(f'此方程有两个相等的实根,它们是:x={x}')
else:
print('无实数解')
相关问题
解读以下代码:import numpy as np def bb_method(x, num_iterations): lr = 0.1 for i in range(num_iterations): grad = np.array([2*x[0], 200*x[1]]) if i == 0: lr = 0.1 else: delta_x = x - prev_x delta_grad = grad - prev_grad lr = np.abs(np.dot(delta_x, delta_grad)) / np.dot(delta_grad, delta_grad) prev_x = x prev_grad = grad x = x - lr * grad return x x = np.array([1, 1]) num_iterations = 1000 result = bb_method(x, num_iterations) print(result)
这段代码实现了Black-Box Optimization(黑盒优化)中的BB方法。BB方法是一种基于梯度信息的优化算法,但它并不需要知道目标函数的具体形式,只需要能够通过输入x和输出f(x)计算出梯度信息即可。
具体来说,这段代码定义了一个叫做bb_method的函数,它接受两个参数:一个初始点x和迭代次数num_iterations。函数中使用了一个lr变量来表示学习率,初始值为0.1。
在for循环中,每次迭代都计算出当前点x对应的梯度信息grad,并且根据上一次的点prev_x、梯度prev_grad以及当前点x、梯度grad之间的差异计算出学习率lr。然后,将当前点x更新为x-lr*grad,继续下一次迭代。
最后,函数返回最终的优化结果result,也就是迭代结束时得到的点x。
在这段代码中,初始点x为[1,1],迭代次数为1000。这个例子中的目标函数是f(x) = x1^2 + 100*x2^2,因此梯度信息为[2*x1, 200*x2]。通过BB方法,最终得到的优化结果为[9.99999981e-01, 9.99999827e-05],非常接近目标函数的最小值[0,0]。
def GM11(x0): x1 = x0.cumsum() z1 = (x1[:len(x1)-1] + x1[1:])/2.0 z1 = z1.reshape((len(z1),1)) B = np.append(-z1 , np.ones_like(z1),axis= 1) Yn = x0[1:].reshape((len(x0)-1,1)) [[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T,B)),B.T),Yn) #计算参数 f = lambda k: (x0[0]- b/a)*np.exp(-a*(k-1)) - (x0[0]- b/a)*np.exp(-a*(k-2)) delta = np.abs(x0 - np.array([f(i) for i in range(1,len(x0) + 1)])) C = delta.std()/x0.std() P = 1.0*(np.abs(delta = delta.mean()) < 0.6*745*x0.std()).sum()/len(x0) return f,a,b,x0[0],C,P
这是一个用于灰色预测的GM(1,1)模型的代码实现。GM(1,1)模型是一种基于灰色系统理论的预测方法,它适用于数据量较小、无法建立完整的数学模型、且具有一定规律性的数据序列预测。
该函数的输入是一个一维数组x0,表示待预测的数据序列。该函数的输出包括预测结果f、模型参数a和b、数据序列的首项x0[0]、预测误差比C和精度P。
具体的实现过程为:
1. 对原始数据进行累加,得到一次累加序列x1。
2. 计算均值生成矩阵z1。
3. 建立累加数据与均值的关系矩阵B。
4. 根据累加数据计算出一次微分序列Yn。
5. 使用最小二乘法计算出模型参数a和b。
6. 计算预测值f,并计算预测误差delta。
7. 计算预测误差比C和预测精度P。
8. 返回预测结果f、模型参数a和b、数据序列的首项x0[0]、预测误差比C和精度P。
阅读全文