云溪 发表于 2012-11-22 15:13:17

MATLAB求助

为什么MATLAB中cos(pi/2)不等于0,而是以分数的形式表示,怎么能让这些值很小的分数变为0呢?
说明:我在做一个计算时,最后出现的结果是下面这样的,但是其中的那些分数本来应该是零的
T40 =

[ (4967757600021511*cos(s1)^2)/81129638414606681695789005144064 - (4967757600021511*cos(s1)*sin(s1))/81129638414606681695789005144064 - (4967757600021511*3^(1/2)*sin(s1)^2)/243388915243820045087367015432192 + (2^(1/2)*3^(1/2)*sin(s1))/3 - (4967757600021511*3^(1/2)*cos(s1)*sin(s1))/243388915243820045087367015432192, (3^(1/2)*sin(s1)^2)/3 - (24678615572571482867467662723121*cos(s1)*sin(s1))/6582018229284824168619876730229402019930943462534319453394436096 - cos(s1)^2 + (4967757600021511*2^(1/2)*3^(1/2)*sin(s1))/243388915243820045087367015432192 - (24678615572571482867467662723121*3^(1/2)*cos(s1)*sin(s1))/19746054687854472505859630190688206059792830387602958360183308288, cos(s1)*sin(s1) + (4967757600021511*2^(1/2)*3^(1/2)*sin(s1))/243388915243820045087367015432192 + (3^(1/2)*cos(s1)*sin(s1))/3, a1*cos(s1) - a3*((3^(1/2)*sin(s1)^2)/3 - cos(s1)^2) + d4*(cos(s1)*sin(s1) + (3^(1/2)*cos(s1)*sin(s1))/3) + (2^(1/2)*3^(1/2)*d3*sin(s1))/3 + (4967757600021511*2^(1/2)*3^(1/2)*d4*sin(s1))/243388915243820045087367015432192]
[ (4967757600021511*cos(s1)*sin(s1))/81129638414606681695789005144064 - (4967757600021511*sin(s1)^2)/81129638414606681695789005144064 + (4967757600021511*3^(1/2)*cos(s1)^2)/243388915243820045087367015432192 + (4967757600021511*3^(1/2)*cos(s1)*sin(s1))/243388915243820045087367015432192 - (2^(1/2)*3^(1/2)*cos(s1))/3, (24678615572571482867467662723121*3^(1/2)*cos(s1)^2)/19746054687854472505859630190688206059792830387602958360183308288 - (24678615572571482867467662723121*sin(s1)^2)/6582018229284824168619876730229402019930943462534319453394436096 - cos(s1)*sin(s1) - (3^(1/2)*cos(s1)*sin(s1))/3 - (4967757600021511*2^(1/2)*3^(1/2)*cos(s1))/243388915243820045087367015432192,         - (3^(1/2)*cos(s1)^2)/3 - (4967757600021511*2^(1/2)*3^(1/2)*cos(s1))/243388915243820045087367015432192 + sin(s1)^2, d4*(sin(s1)^2 - (3^(1/2)*cos(s1)^2)/3) + a1*sin(s1) + a3*(cos(s1)*sin(s1) + (3^(1/2)*cos(s1)*sin(s1))/3) - (2^(1/2)*3^(1/2)*d3*cos(s1))/3 - (4967757600021511*2^(1/2)*3^(1/2)*d4*cos(s1))/243388915243820045087367015432192]
[                                                                                                                                                   3^(1/2)/3 + (4967757600021511*2^(1/2)*3^(1/2)*sin(s1))/243388915243820045087367015432192 + (4967757600021511*2^(1/2)*3^(1/2)*cos(s1))/243388915243820045087367015432192,                                                                                                                                             (4967757600021511*3^(1/2))/243388915243820045087367015432192 - (2^(1/2)*3^(1/2)*sin(s1))/3 + (24678615572571482867467662723121*2^(1/2)*3^(1/2)*cos(s1))/19746054687854472505859630190688206059792830387602958360183308288,                                 (4967757600021511*3^(1/2))/243388915243820045087367015432192 - (2^(1/2)*3^(1/2)*cos(s1))/3,                                                                        (3^(1/2)*d3)/3 + (4967757600021511*3^(1/2)*d4)/243388915243820045087367015432192 - (2^(1/2)*3^(1/2)*d4*cos(s1))/3 + (2^(1/2)*3^(1/2)*a3*sin(s1))/3]
[                                                                                                                                                                                                                                                                                                                         0,                                                                                                                                                                                                                                                                                                                                                                     0,                                                                                                                            0,                                                                                                                                                                                                                           1]

云溪 发表于 2012-11-22 15:28:58

www.zzoo.cc 发表于 2012-11-22 15:21 static/image/common/back.gif
这个帖子好像在哪看过                                                                                 ...

在哪里?我去看看,这个问题真的让我很困惑

路上的黑马 发表于 2012-11-22 15:55:53

不懂,这是什么啊?学习学习

云溪 发表于 2012-11-22 16:22:28

路上的黑马 发表于 2012-11-22 15:55 static/image/common/back.gif
不懂,这是什么啊?学习学习

这是一个机械臂关节之间的变换矩阵,就是不晓得为什么结果会是这样的

云溪 发表于 2012-11-22 20:30:03

找到一个方法,跟各位分享下,如果有更好的办法,希望各位大侠指教,下面是我的解决办法:
cos(sym(pi/2)),这样运行后结果就是零了,之前的矩阵结果是:T40 =

[(2^(1/2)*3^(1/2)*sin(s1))/3,               (3^(1/2)*sin(s1)^2)/3 - cos(s1)^2, cos(s1)*sin(s1) + (3^(1/2)*cos(s1)*sin(s1))/3, a1*cos(s1) - a3*((3^(1/2)*sin(s1)^2)/3 - cos(s1)^2) + d4*(cos(s1)*sin(s1) + (3^(1/2)*cos(s1)*sin(s1))/3) + (2^(1/2)*3^(1/2)*d3*sin(s1))/3]
[ -(2^(1/2)*3^(1/2)*cos(s1))/3, - cos(s1)*sin(s1) - (3^(1/2)*cos(s1)*sin(s1))/3,             sin(s1)^2 - (3^(1/2)*cos(s1)^2)/3, d4*(sin(s1)^2 - (3^(1/2)*cos(s1)^2)/3) + a1*sin(s1) + a3*(cos(s1)*sin(s1) + (3^(1/2)*cos(s1)*sin(s1))/3) - (2^(1/2)*3^(1/2)*d3*cos(s1))/3]
[                  3^(1/2)/3,                  -(2^(1/2)*3^(1/2)*sin(s1))/3,                  -(2^(1/2)*3^(1/2)*cos(s1))/3,                                                          (3^(1/2)*d3)/3 - (2^(1/2)*3^(1/2)*d4*cos(s1))/3 + (2^(1/2)*3^(1/2)*a3*sin(s1))/3]
[                            0,                                             0,                                             0,                                                                                                                                       1]
页: [1]
查看完整版本: MATLAB求助