注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

III = Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

MATLAB左除,右除  

2011-07-11 21:46:58|  分类: M&M |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
MATLAB中有个很有意思的运算符,那就是左除和右除
先不告诉你怎么写,自己写写看,许多人都容易写反,或者写对了,但是也拿不准。
这里有个简单的记忆方法:
先想,有根棍子,|
然后左除是\,右除是/
你就想左除了棍子向左边倒了(\),右除就是向右边倒了(/),这样应该比较好记,
或者有学习机械的同学,你就把他们理解为螺栓上的螺纹,左旋的就是左除(\)右旋的就是右除(/)
哈哈。

下面说说使用吧。
先是左旋,呃,不左除。
用一个简单的线性方程组说明:
AX=b
则X=A\b,如:
>> A=[0 -7 5;0 4 7;-4 3 -7];
>> b=[50 -30 40]';
>> x=A\b
x =
  -15.1812
   -7.2464
   -0.1449
相当于在方程的左右两边同时乘以了inv(A),左乘逆矩阵,就是左除了。
那么和X=inv(A)*b有什么区别呢?
我不知道,不过根据Moler(对,就是MATLAB的主要发明者)先生的建议(可参考其著作《Numerical Computing With MATLAB》,中译版是机械工业出版社的《MATLAB数值计算》),尽量使用左除,而不是inv函数,理由嘛,可能是具有更好的数值稳定性吧,不过具体是什么,你自己去问他吧。
根据相关资料,MATLAB会根据矩阵A的形式判断,如果A具有(1)稀疏和带状 (2)三角(或者简单变换能转化为三角形式)(3)对称,则使用对应的高效算法,例如带状求解器、向后和向前回代,楚列斯基分解等。如果不满足上述条件,再使用完整的高斯消元过程。
类似的,右除就很容易理解了,其实相当于右乘逆矩阵,例如:
A =
     0    -7     5
     0     4     7
    -4     3    -7
B =
     1     3     2
     5     1    -2
     4     4     1
>> C=A*B
C =
   -15    13    19
    48    32    -1
   -17   -37   -21
那么求A,可以使用C*inv(B),使用右除就是:
>> C/B
ans =
         0       -7.0000    5.0000
         0        4.0000    7.0000
   -4.0000    3.0000   -7.0000
  评论这张
 
阅读(3579)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017