端基法和最小二乘法计算线性度

import numpy as np


def end_group_method(data1, data2):
    print("端基法")
    dict1 = {key: value for key, value in zip(data1, data2)}
    dict1 = dict(sorted(dict1.items(), key=lambda i: i[1], reverse=False))
    data1 = list(dict1.keys())
    data2 = list(dict1.values())
    m_k = (data2[len(y) - 1] - data2[0]) / (data1[len(data1) - 1] - data1[0])
    m_b = (data2[0] * data1[len(x) - 1] - data2[len(data2) - 1] * data1[0]) / (data1[len(data1) - 1] - data1[0])
    print("y=%.4fx+%.4f" % (m_k, m_b))
    m_L = np.subtract(data2, (np.multiply(m_k, data1) + m_b))
    L_max = max(np.abs(m_L))
    print(f"L_max={L_max}")
    print(f"e_L = +-{L_max / data2[len(data2) - 1] * 100}%")
    return None


def least_square_method(data1, data2):
    print("最小二乘法")
    dict1 = {key: value for key, value in zip(data1, data2)}
    dict1 = dict(sorted(dict1.items(), key=lambda i: i[1], reverse=False))
    data1 = list(dict1.keys())
    data2 = list(dict1.values())
    m_k = (len(data1) * sum(np.multiply(data1, data2)) - sum(data1)*sum(data2)) / (len(data1)*sum(np.power(data1, 2)) - sum(data1)**2)
    m_b = (sum(np.power(data1, 2)) * sum(data2) - sum(data1) * sum(np.multiply(data1, data2))) / (len(data1)*sum(np.power(data1, 2)) - sum(data1)**2)
    print("y=%.4fx+%.4f" % (m_k, m_b))
    m_L = np.subtract(data2, (np.multiply(m_k, data1) + m_b))
    L_max = max(np.abs(m_L))
    print(f"L_max={L_max}")
    print(f"e_L = +-{L_max / data2[len(data2) - 1] * 100}%")
    return None


x = [0.9, 2.5, 3.3, 4.5, 6.7, 5.7]
y = [1.1, 1.6, 2.6, 3.2, 5.0, 4.0]

end_group_method(x, y)
print("")
least_square_method(x, y)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值