zoukankan      html  css  js  c++  java
  • python实现带误差传递的数学计算

    import math
    
    class Measurement(object):
        def __init__(self, val, perc):
            self.val = val
            self.perc = perc
            self.abs  = self.val * self.perc / 100.0
        def __repr__(self):
            return "Measurement (%r, %r)" % (self.val, self.perc)
        def __str__(self):
            return "%g+-%g%%" % (self.val, self.perc)
        def _addition_result(self, result, other_abs):
            new_perc = 100.0 *(math.hypot(self.abs, other_abs) / result)
            return Measurement(result, new_perc)
        def __add__(self, other):
            result = self.val + other.val
            return self._addition_result(result, other.abs)
        def __sub__(self, other):
            result = self.val - other.val
            return self._addition_result( result, other.abs)
        def _multiplication_result(self, result, other_perc):
            new_perc = math.hypot(self.perc, other_perc)
            return Measurement(result, new_perc)
        def __mul__(self, other):
            result = self.val * other.val
            return self._multiplication_result(result, other.perc)
        def __div__(self, other):
            result = self.val / other.val
            return self._multiplication_result(result, other.perc)
    
    m1 = Measurement(100.0, 5.5)
    m2 = Measurement(50, 2)
    print "m1 = " , m1
    print "m2 = ",  m2
    print "m1 + m2 = ", m1 + m2
    print "m1 - m2 = ", m1 - m2
    print "m1 * m2 = ", m1 * m2
    print "m1 / m2 = ", m1 / m2
    print "(m1+m2) *(m1-m2) = " ,(m1+m2) * (m1-m2)
    print "(m1+m2) / (m1+m2) = ", (m1-m2) / (m1+m2)
  • 相关阅读:
    JVM笔记-temp
    Spark笔记-treeReduce、reduce、reduceByKey
    Java笔记-快速失败and安全失败
    Netty笔记--ByteBuf释放
    Spark笔记--使用Maven编译Spark源码(windows)
    MySQL笔记--查询语句实践
    Kafka笔记--指定消息的partition规则
    Spark Executor Driver资源调度小结【转】
    Spark学习笔记--Graphx
    HBase笔记--自定义filter
  • 原文地址:https://www.cnblogs.com/hzhida/p/2665847.html
Copyright © 2011-2022 走看看