root by wcx

#gen.py(求根)
#I(input):输入数据
a=input('请输入a的值:')
b=input('请输入b的值:')
c=input('请输入c的值:')
a=float(a)
b=float(b)
c=float(c)
d=b**2-4*a*c>0
float(d)
#P(process):处理数据
if d>0:
   x=(-b+d**0.5)/(2*a)
   x=float(x)
   f=(-b-d**0.5)/(2*a)
   f=float(f)
   print('该一元二次方程的解为:{:.1f}'.format(x))
   print('该一元二次方程的解为:{:.1f}'.format(f))
elif    d==0:
        x=(-b)/(2*a)
        print('该一元二次方程的解为:{:.1f}'.format(x))
else:
    print('该一元二次方程无解')
#O(output):输出数据
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import matplotlib.pyplot as plt import numpy as np import pandas as pd data = pd.read_excel(r"G:\Data.xlsx") def dis(WC, data): WCX = (np.array(data['x']) * WC).sum() WCY = (np.array(data['y']) * WC).sum() x0 = WCX / WC.sum() y0 = WCY / WC.sum() d_j = ((np.array(data['x']) - x0) ** 2 + (np.array(data['y']) - y0) ** 2) ** 0.5 T = (WC * d_j).sum() print('重心法初始选点大致位置:({},{})'.format(x0, y0)) print('总费用T0:{}'.format(T)) # 迭代10次 plt.rcParams['font.sans-serif'] = [u'SimHei'] for i in range(10): WC_j = WC / d_j WCX_j = ((np.array(data['x']) * WC) / d_j).sum() WCY_j = ((np.array(data['y']) * WC) / d_j).sum() x = WCX_j / WC_j.sum() y = WCY_j / WC_j.sum() d_j = ((np.array(data['x']) - x) ** 2 + (np.array(data['y']) - y) ** 2) ** 0.5 T = (WC * d_j).sum() print('经{}次迭代后选址点位置:({},{})'.format(i + 1, x, y)) print('总费用T{}:{}'.format(i + 1, T)) # 画图,如果需要迭代次数多,建议只画第一次和最后一次 plt.figure(figsize=(8, 4)) plt.scatter(np.array(data['x']), np.array(data['y']), [300, 300, 300, 300, 300], c='green', marker='*', alpha=0.7, label='站点') plt.scatter(x, y, [270], c='red', marker='p', alpha=0.7, label='选址点') plt.xlabel('x坐标', fontsize=11) plt.ylabel('y坐标', fontsize=11) plt.grid(True) plt.title('重心法选址,第{}次结果示意图'.format(i + 1), fontsize=14) plt.show() if __name__ == '__main__': # 读取文件 data = pd.read_excel(r"C:\Users\pan15\Desktop\重心法\data.xlsx") # print(data) WC = np.array(data['W']) * np.array(data['C']) dis(WC, data)
06-01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值