设为首页收藏本站

数学建模社区-数学中国

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1198|回复: 0
打印 上一主题 下一主题

误差的分析与减少及Matlab解线性方程的四种方法

[复制链接]
字体大小: 正常 放大

580

主题

29

听众

6714

积分

  • TA的每日心情
    奋斗
    2023-5-24 09:14
  • 签到天数: 119 天

    [LV.6]常住居民II

    群组2018高中组美赛 课堂

    群组2018国赛冲刺

    群组2018 夏令营面授课堂

    群组2016美赛交流群组

    跳转到指定楼层
    1#
    发表于 2018-11-3 11:41 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    1、误差的来源
         模型误差:数学模型与实际问题之间的误差
         观测误差:测量数据与实际数据的误差
         方法误差:数学模型的精确解与数值方法得到的数值解之间的误差
         舍入误差:对数据进行四舍五入后产生的误差

    2、减少误差的几种方法
             现在,我们一般用计算机解决计算问题,使用最多的是Matlab软件。对实际问题进行数学建模时,可能存在模型误差,对数学模型进行数值求解时,我们使用的方法可能产生方法误差,我们输入计算机的数据一般是有测量误差的,计算机在运算过程的每一步又会产生舍入误差(十进制转化为二进制时可能产生舍入误差)。由此看来,解决一个问题,基本上会有以上四种四种误差。记得高中物理老师说过,错误是可以避免的,误差是不可避免的,我们只可以减少误差。下面我们就来介绍减少误差的几种方法:

    1.避免两个相近的数相减
    eg:当x=10003时,计算

    的近似值。
    如果使用6位十进制浮点运算,运算时取6位有效数字,结果如下:   

    结果只有一位有效数字,与之前相比,损失了5位有效数字。
    如果使用下面的方法:   

    则结果有6位有效数字,与精确值0.00499912523117984……较为接近。

    2. 防止重要的小数被大数吃掉
    eg: 已知



    如果按照

    的顺序来求的话,由于x远大于y,在计算机中可能导致x+y=x的情况,因此我们可以按照

    的顺序计算得到正确的结果。

    避免除数的绝对值远小于被除数的绝对值
    eg:用消去法解线性方程组
         

    这个方程组的正确解为:

    当我们用(1)/0.00003-(2)时,可以得到下面的化简和计算结果:
                
    显然上述结果严重失真,产生了很大的误差。这就是由于除数的绝对值远小于被除数的绝对值造成的。
    为了避免上述情况,我们可以用第二个方程消去第一个方程中的x1,即(2)*0.00003-(1),得到如下表达式和结果:

    将结果与正确解相比发现,这是一组相当好的近似解。              
    3.注意算法的稳定性
    所谓算法的稳定性是指,一个算法如果输入数据有误差,而在计算过程中误差不增长,那么称此算法是数值稳定的。
    上面的部分基本上都来源于《数值分析》一书,讲的挺好的,这些减小误差的方法,我们平时需要多注意,在用c进行编程实现时需要注意,而用Matlab实现时,上面的问题都不是问题了,不过我们要学习的是这种方法和技巧。下面讲讲,在实现上述方法的Matlab的知识:1、精度控制;2、解线性方程组。

    二、精度控制
         format  digits  vpa函数的使用
         format只用来控制显示精度的,并不控制计算精度,digits用来控制计算精度,vpa也是控制计算精度。
         digits必须与vpa配合使用,单独不起作用。
         vpa可单独控制计算精度
    具体操作如下图:

    1、format的操作
    1.png
    2、digits的操作
                
    2.png

    3、vpa的操作
         
    3.png
    三、解非齐次线性方程组
                
    4.png
    可以通过以下四种方法求解该方程组:
    用矩阵表示上述的线性方程组如下: 5.png
    求逆矩阵法
    6.png    
    矩阵左除法
    7.png            
    初等行变换     
    8.png       
    卡莱姆法则
                
    9.png       
    具体的程序实现如下:
    10.png
    运行结果如下图:
    11.png
    注意事项:当系数矩阵A不是方阵,或A的行列式为0时,逆矩阵法和克拉姆法则无法使用,而初等行变换能适用于各种线性方程组的求解。



    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    手机版|Archiver|数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号|繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    GMT+8, 2024-4-29 17:19 , Processed in 0.435942 second(s), 50 queries .

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部