找回密码
 注册
Simdroid-非首页
查看: 137|回复: 4

【已解决】计算精度(四舍五入)的设置问题

[复制链接]
发表于 2010-12-10 18:25:17 | 显示全部楼层 |阅读模式 来自 韩国
本帖最后由 luckyrhkr 于 2010-12-11 16:11 编辑

下面程序中的xx=A\b
结果为
    0.0000
   -0.0000
   -0.0000
   -0.0090
         0
    0.0088
  1. clc;clear all;
  2. syms q1 q2 q3 q4 q5 q6 t
  3. x=[0.5,-0.866,5.236,1.5,-1,6.14]
  4. e=[q1-cos(q3);q2-sin(q3);q4-cos(q3)-cos(q6);q5-sin(q3)-sin(q6);q5+1;q3-pi/6*t-5*pi/3]
  5. for ii=1:numel(e)
  6.     qq(ii)=strcat({'q'},num2str(ii))    ;%qq is is to calculate Jacobian Matrix
  7. end
  8. for ii=1:numel(e)
  9. qqq(ii)=sym(['q',num2str(ii)]);      %qqq is for the formation of Jacobian Matrix  
  10. end
  11. t=0;
  12. Jq=jacobian(e,qqq);   
  13. ee=subs(e);
  14. arrayfun(@(q)(assignin('base', qq{q}, x(q))),1:length(x));
  15. A=subs(Jq);
  16. b = -subs(ee);
  17. xx=A\b
复制代码
但是我想要的结果是
         0
         0
         0
   -0.0089
         0
    0.0088
我试了下,当直接输入下面程序后,结果是对的。

  1. A=[1,0,-0.8660,0,0,0;0,1,-0.5,0,0,0;0,0,-0.8660,1,0,-0.1427;0,0,-0.5,0,1,-0.9898;0,0,0,0,1,0;0,0,1,0,0,0];
  2. b=[0;0;-0.0102;-0.0087;0;0];
  3. A\b
复制代码
请问这个属于什么问题呀?怎么设置才能得到我要的答案
 楼主| 发表于 2010-12-11 16:11:01 | 显示全部楼层 来自 韩国
Simdroid开发平台
额。还是我自己找出问题了。
第一个程序里只是显示了小数点后4位,其实还有是隐藏的。
所以想要得出第二个程序的结果的话得要去掉隐藏的内容。
可以让A和b先乘10^4,然后用fix取整,然后再除以10^4~
回复 不支持

使用道具 举报

发表于 2010-12-11 16:53:31 | 显示全部楼层 来自 北京
  1. format short g
  2. ...
  3. xx(abs(xx)<1e-4)=0;
  4. xx
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-11 19:49:51 | 显示全部楼层 来自 韩国
哈哈谢谢楼上的高手。
结果为
       0
            0
            0
   -0.0089761
            0
    0.0088121
这个程序比第一个程序的结果好很多。
回复 不支持

使用道具 举报

发表于 2010-12-14 20:44:20 | 显示全部楼层 来自 黑龙江哈尔滨
format long 即可!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 05:25 , Processed in 0.055059 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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