声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3773|回复: 9

[综合讨论] 如何解决MATLAB中矩阵处理所带来的数值误差?

[复制链接]
发表于 2016-2-29 10:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
怎么解决MATLAB中由于矩阵运算所带来的数值误差,例如:
A1=rand(100)*10^9; A2=rand(100)*10^8; A3=rand(100)*10^6; A4=rand(100)*10^5; A5=rand(100)*10^3;     % 生成5个不同量级的矩阵,维度一致

T=rand(100,32);            % 生成一个T矩阵

B0=T'*(A1+A2+A3+A4+A5)*T;  % 先做加法,在做乘法

B1=zeros(32);
for k=1:5
     B1=T'*A1*T+B1;                 % 先做乘法,再做加法
end

Err=B1-B0;                               % 求解两种运算带来的绝对误差

如上面的例子,一般情况下,误差随着数量级的增大,而特别大。

所以,对于矩阵拆分后,不同的运算顺序所带来的误差,应该怎么消除???

万分感谢!!!
回复
分享到:

使用道具 举报

 楼主| 发表于 2016-2-29 10:51 | 显示全部楼层
【更正问题】怎么解决MATLAB中由于矩阵运算所带来的数值误差,例如:
A1=rand(100)*10^9; A2=rand(100)*10^8; A3=rand(100)*10^6; A4=rand(100)*10^5; A5=rand(100)*10^3;     % 生成5个不同量级的矩阵,维度一致
A=A{A1,A2,A3,A4,A5};

T=rand(100,32);            % 生成一个T矩阵

B0=T'*(A1+A2+A3+A4+A5)*T;  % 先做加法,在做乘法

B1=zeros(32);
for k=1:5
     B1=T'*A{k}*T+B1;                 % 先做乘法,再做加法
end

Err=B1-B0;                               % 求解两种运算带来的绝对误差
发表于 2016-3-8 21:34 | 显示全部楼层
谭四爷 发表于 2016-2-29 10:51
【更正问题】怎么解决MATLAB中由于矩阵运算所带来的数值误差,例如:
A1=rand(100)*10^9; A2=rand(100)*10 ...

可否好奇问下,LZ为何需準到15次方的order
 楼主| 发表于 2016-3-9 12:46 | 显示全部楼层
ChaChing 发表于 2016-3-8 21:34
可否好奇问下,LZ为何需準到15次方的order

比如,对于结构分析,其中的物理参数矩阵的数值量级就很大啊
发表于 2016-3-9 13:34 | 显示全部楼层
谭四爷 发表于 2016-3-9 12:46
比如,对于结构分析,其中的物理参数矩阵的数值量级就很大啊

估计是矩阵病态造成的,可以考虑变换一下消除矩阵的病态问题,或者采用正则化方法进行求解

评分

1

查看全部评分

 楼主| 发表于 2016-3-9 15:34 | 显示全部楼层
MVH 发表于 2016-3-9 13:34
估计是矩阵病态造成的,可以考虑变换一下消除矩阵的病态问题,或者采用正则化方法进行求解

谢谢,对于您说的  “变换”  和  “正则化方法”  能够详细点吗?我不是很清楚,不知道怎么处理。
发表于 2016-3-10 11:52 | 显示全部楼层
发表于 2016-3-11 23:25 | 显示全部楼层
本帖最后由 mxlzhenzhu 于 2016-3-11 23:28 编辑
谭四爷 发表于 2016-3-9 15:34
谢谢,对于您说的  “变换”  和  “正则化方法”  能够详细点吗?我不是很清楚,不知道怎么处理。

数值分析经典结论还记得那么几个:
1,大数和小数相加,小数被误差吃掉;
2,大数除以小数,结果不确定,损害有效数字位数;
3,数值算法更喜欢数值积分,而不喜欢数值微分,用数值微分常常不稳定,尽量避免;
4,尽量避免直接求逆,通常用解线性代数方程组,解决求逆问题,为了加速收敛,算法一大堆;

和矩阵是否病态没关系,求逆的时候,病态问题才突出;这是要在计算中尽量避免的;

所以编程和理论还是有些区别的;

楼主有兴趣可以了解一下经典Lanczos算法在Gram-Schmidt正交化过程中,精度丢失的原因,也许对于你现在的兴趣点可能有一些裨益;


评分

1

查看全部评分

 楼主| 发表于 2016-3-12 12:25 | 显示全部楼层
mxlzhenzhu 发表于 2016-3-11 23:25
数值分析经典结论还记得那么几个:
1,大数和小数相加,小数被误差吃掉;
2,大数除以小数,结果不确定 ...

非常感谢您的指导,
 楼主| 发表于 2016-3-12 12:26 | 显示全部楼层
vibration 发表于 2016-3-10 11:52
http://wenku.baidu.com/view/e525c153ed630b1c58eeb548.html?from=search

谢谢,
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-5 13:49 , Processed in 0.095808 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表