数值分析的基本概念(误差分析 一)---Python代码

版权声明:原创 https://blog.csdn.net/qq_41058594/article/details/86773424

既然说误差,那我们就得明白啥是误差,误差有哪些也就是误差的分类,怎样减小误差,让我们的真实值越来越接近预计值…
在这里插入图片描述
1.误差的来源很复杂,但主要可分为以下几类:
在这里插入图片描述
2.误差和有效数字:
在这里插入图片描述
在这里插入图片描述
【注意】:绝对误差有正有负,绝对误差可不是误差的绝对值!
4.有效数字
在这里插入图片描述
由有效数字的定义我们来看一道例题:

下列各近似值的误差极限都是0.005:
x1=1.38   x2=-0.132   
则问:各个近似值各有几位有效数字:
误差限:0.005=1/2 x 10^(-2)

Python代码分析:

# -*- coding: utf-8 -*-
from math import *

erro_limt = input('请输入误差极限:')
#s = number.index('.')
#print(s)
#for i in number[0:number.index('.')]:
#    print(i,end=' ')
#    
#number = eval(input('请输入一个小数:'))
def Erro_limit(erro_limt):
#    print('str(erro_limt)的长度:',len(erro_limt))
    N = len(erro_limt) - 2 - erro_limt.index('.')
#    print('erro_limt有 {} 个0'.format(N))
    #N = k - n
    s = "1/2*10^(-{})".format(N)
    try:
        number = input('请输入一个小数(最多于千位):')
        if number[0] != '-':
            k = len(number[0:number.index('.')]) #1
            w_list = [4,3,2,1,0]
            if k in w_list:
                print('误差限:{} ='.format(erro_limt),s)
                print("number={}=".format(number)+\
                      "10**{}x{}".format(k,eval(number)/pow(10,k)))
                n = k + N

        else:
            k = 0
            #k
            for i in number[number.index('.')+1:len(number)]: 
                if i == '0' :
                    k += 1
                else:    
                    break
            #m判断小数点后有多少个0 
            s = number[number.index('.')+1:len(number)]
            w_list = [4,3,2,1,0,-1,-2,3,-4,-5]
            if k in w_list:
                print('误差限:{} ='.format(erro_limt),s)
                print("number={}=".format(number)+\
                      "10**({})x{}".format((k-1),eval(number)*(10**k)))
                n = k + N 
            
        if n < 0:  
            print('{}没有有效数字!'.format(number))
        else:
            print("故,k-n={}".format(k-n) + '=>' + 'n={}'.format(n))
            print('number有{}位有效数字!'.format(n))                           
    except:
        print('程序出错啦!')
Erro_limit(erro_limt)
x1=1.38时:

在这里插入图片描述

x2=-0.132  时: 

在这里插入图片描述
今天先写到这里吧(夜猫子生活,凌晨2点多…),代码明天写第二篇的时候再改进,总之数值分析,代码得跟上,每一篇都附上Python代码片段,供大家参考,相互交流…

猜你喜欢

转载自blog.csdn.net/qq_41058594/article/details/86773424