首页 > 其他分享 >误差的处理

误差的处理

时间:2024-11-18 11:14:20浏览次数:3  
标签:误差 处理 Decimal Fraction print 十进制 math

误差

  • 误差无处不在
    • 有效位丢失
    • 化整误差
    • 尾数丢失
  • 分数法
    • 代码
  • 十进制法
    • 代码
  • 验证
  • a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0
    • x = − b ± b 2 − 4 a c 2 a x ={-b \pm \sqrt{b^2-4ac}\over 2a} x=2a−b±b2−4ac ​​
    • 分数法
    • 十进制法
    • sympy
    • 验证

误差无处不在

误差的处理Python计算小数的误差
>>> 0.1+0.1
0.2
>>> _+0.1
0.30000000000000004
>>> 

有效位丢失

大小基本相同的数值相减,由于丢失有效数字而引起的误差。

化整误差

运用有效位数的二进制表示实数所产生的误差。上面图片的例子就是这种情况。

尾数丢失

绝对值相差较大的数值进行运算时,绝对值小的数未被反应到计算结果中而产生的误差。

分数法

使用通约分模块,直接作为分数进行运算,避免小数表示产生的化整误差。

代码

from fractions import Fraction
print(“通约分模块”,Fraction(1,10)+Fraction(1,10)+Fraction(1,10))#通约分模块
#print(Fraction(5,10),Fraction(3,5)) #5/10的3/15的约分
#print(Fraction(1,3)+Fraction(1,7)) #1/3+1/7
#print(Fraction(5,3)*Fraction(6,7)*Fraction(3,2))

十进制法

使用十进制计算模块可以避免二进制浮点数计算产生的误差。

代码

from decimal import *
print(“十进制计算模块”,Decimal(“0.1”)+Decimal(“0.1”)+Decimal(“0.1”)) #十进制计算模块

验证

通约分模块 3/10
十进制计算模块 0.3
从结果来看分数法和十进制方法是对的,处理掉了误差。

a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0

前面文章递归调用——单向汉诺塔里说要说一下Python解方程。这里来解二元一次方程,看看不同的方式产生的误差情况。

x = − b ± b 2 − 4 a c 2 a x ={-b \pm \sqrt{b^2-4ac}\over 2a} x=2a−b±b2−4ac ​​

直接用解的公式。

import math
def fun(a,b,c):
    x1 = (0-b+math.sqrt(b*b-4*a*c))/(2*a)
    x2 = (0-b-math.sqrt(b*b-4*a*c))/(2*a)
    return x1,x2
    
print("math解方程",fun(3,4,1))
#fun(3,4,5)不能对负数开方,即使是奇数次方

测试3,4,5还不行,就用a=3,b=4,c=1测试。

分数法

def functin(a,b,c):
    x1 = Fraction((0-b+math.sqrt(b*b-4*a*c)),(2*a))
    x2 = Fraction((0-b-math.sqrt(b*b-4*a*c)),(2*a))
    return x1,x2
#both arguments should be Rational instances
#print(functin(3,4,1))

十进制法

def f(a,b,c):
    x1 = Decimal(0-b+math.sqrt(b*b-4*a*c))/Decimal(2*a)
    x2 = Decimal(0-b-math.sqrt(b*b-4*a*c))/Decimal(2*a)
    return x1,x2
print("Decimal解方程",f(3,4,1))

sympy

from sympy import symbols, solve
def fsympy(a,b,c):
    x = symbols('x')
    print("sympy解方程",solve(a * x**2 + b*x + c, x))
fsympy(3,4,1)

验证

=================== RESTART: C:/Program Files/Python38/误差.py ===================
math解方程 (-0.3333333333333333, -1.0)
Decimal解方程 (Decimal(’-0.3333333333333333333333333333’), Decimal(’-1’))
sympy解方程 [-1, -1/3]

从结果来看用sympy最好。不过十进制方法里只把除法运算加了Decimal转换,里面的乘法和减法没有转换。

标签:误差,处理,Decimal,Fraction,print,十进制,math
From: https://blog.csdn.net/denghai_csdn/article/details/143748691

相关文章

  • 24.Python基础篇-异常处理
    1.什么是异常?异常(Exception)是程序在运行过程中出现的错误情况。Python提供了强大的异常处理机制,使得程序在遇到错误时能够继续执行或者给出适当的错误提示。避免程序因为某个错误而中断。异常处理有助于提高代码的健壮性,2.异常处理的语法:try:用于包围可能会抛出异常的代码块......
  • LLM 并行处理实战:提升处理效率的关键技术
    核心要点掌握LLM应用中的并行处理策略实现高效的批量处理机制构建可扩展的文档处理系统优化系统性能和资源利用并行处理的适用场景在LLM应用中,以下场景特别适合使用并行处理:批量文档处理多模型并行推理大规模数据分析实时流处理批处理策略设计1.基础架构fro......
  • 短视频全自动智能处理工具
    一款短视频全自动智能处理APP,它提供多素材混剪、一键解析无水印视频等功能,助力创作者提高原创度。同时,软件还支持针对单个片段完成镜像处理,并支持保存部分场景片段镜像处理后的完整视频。......
  • 【PCIE716-0】基于PCIe总线架构的XC7Z100 FPGA高性能实时信号处理平台
     板卡概述PCIE716-0是一款基于PCIe总线架构的XC7Z100FPGA高性能实时信号处理平台。该平台采用Xilinx的ZYNQSOC系列产品XC7Z100作为主处理器。该平台的PL端具有1个FMC(HPC)接口,1路PCIex8主机接口,支持1路UART串口、支持1组64位DDR3SDRAM大容量缓存、支持1路1000BASE-T千兆以太......
  • 【FFmpeg系列】:音频处理
    前言在多媒体处理领域,FFmpeg无疑是一个不可或缺的利器。它功能强大且高度灵活,能够轻松应对各种音频和视频处理任务,无论是简单的格式转换,还是复杂的音频编辑,都不在话下。然而,要想真正发挥FFmpeg的潜力,我还需深入学习其高级用法和最佳实践。通过这些技巧,我将能更高效地处理多媒......
  • 一楼防潮施工是防止地面湿气对建筑物结构和室内环境的影响,施工时需要选择合适的防潮材
    一楼防潮施工标准主要是为了防止地下水、地面湿气对一楼结构和室内环境造成影响。尤其是在潮湿地区或地下水位较高的地区,防潮工程尤为重要。以下是关于一楼防潮施工标准的详细介绍。1. 防潮设计要求(1)防潮设计的依据《建筑防水工程质量验收规范》GB50208《地下工程防水技术......
  • 11、两类中断控制器处理流程_链式和层级
    1.下级中断控制器的类别在后续课程中我们把GIC之下的中断控制器分为两类:链式(chained)、层级(hierarchy)。这个分类并没有官方定义,是我们根据代码概括出来的(Linux内核本来就缺乏文档)。1.1链式中断控制器(chained)上图中,左边的"chainedintc"就是链式中断控制器。它底下......
  • 9、GIC驱动程序对中断的处理流程
    1.一级中断控制器处理流程对于irq_desc,内核有两种分配方法:一次分配完所有的irq_desc按需分配(用到某个中断才分配它的irq_desc现在的内核基本使用第1种方法。假设GIC可以向CPU发出16~1019号中断,这些数字被称为hwirq。0~15用于Process之间通信,比较特殊。假设要使......
  • 免杀中编译器和exe的处理
    MT/MD对比编译当样本做好了,shellcode处理了,加载器的代码也做了优化,但是被杀软一扫描还是静态报毒,很有可能是因为exe相关的操作需要进行处理,第一个就是编译器/编译参数因为有些杀软宁可错杀1000也不过一个,所以针对一些特定的编译器/编译参数,即使你是输出hello......
  • Excel 与 Python 的强强联合:开启数据分析与处理的新大门 
     在数据处理和分析的世界里,Excel一直是大家耳熟能详、应用广泛的工具,凭借其直观的界面和丰富的函数,能够轻松应对许多基础的数据操作。而Python呢,作为一门功能强大、灵活多变的编程语言,在数据科学领域更是有着无可替代的地位。当Excel遇上Python,它们就如同默契的搭档,能......