声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1716|回复: 4

[综合讨论] 如何简化sym型数据

[复制链接]
发表于 2010-10-22 09:57 | 显示全部楼层 |阅读模式

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

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

x
  1. >> syms x
  2. >> m=3.1485580954953 - 0.153713355883619i;
  3. >> m*x
  4. ans =
  5. (886240316601687/281474976710656-692263412279335/4503599627370496*i)*x
复制代码
其实问题很简单,本来m的值是比较简洁的,
m=3.1485580954953 - 0.153713355883619i;
可与x组合成一个sym型数据时,自动变成了分数形式的:
886240316601687/281474976710656-692263412279335/4503599627370496*i
这样可能加大了计算的复杂程度,如何让m*x变成:
(3.1485580954953 - 0.153713355883619i)*x


回复
分享到:

使用道具 举报

发表于 2010-10-22 10:57 | 显示全部楼层
sym不很熟, 刚试了下, 或许vpa可达成LZ要的格式

但个人以为matlab自动变成了分数形式, 一定有其目的
而且不至於加大了计算的复杂程度, 反而更动预设有此可能吧!
发表于 2010-10-22 15:21 | 显示全部楼层
向Chaching说的那样,直接vpa(m*x)即可,或者:

  1. syms x
  2. m = sym(3.1485580954953 - 0.153713355883619i,'d');
  3. m*x

  4. ans =

  5. x*(3.1485580954953000798468565335497 - 0.15371335588361900725828945724061*i)

复制代码

评分

1

查看全部评分

 楼主| 发表于 2010-10-22 21:06 | 显示全部楼层
回复 rocwoods 的帖子

感谢回复。
发表于 2010-10-22 21:11 | 显示全部楼层
>> syms x
>> m=3.1485580954953 - 0.153713355883619i;
>> m*x
ans =
(886240316601687/281474976710656-692263412279335/4503599627370496*i)*x
vpa(ans,10)%10是要保留的位数,
可以help-->vpa
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-20 11:31 , Processed in 0.073151 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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